Ruby 如何将gem安装到当前文件夹
我想在本地使用RubyGem(而不是在整个机器上安装),以便在单个脚本中使用。我知道如何使用带有Gemfile和Ruby 如何将gem安装到当前文件夹,ruby,rubygems,bundler,Ruby,Rubygems,Bundler,我想在本地使用RubyGem(而不是在整个机器上安装),以便在单个脚本中使用。我知道如何使用带有Gemfile和bundle install的Bundler安装gems。但对于一个简单的脚本来说,设置bundler似乎有些过分 是否有一种方法可以将gem安装到脚本的子文件夹并使用它,类似于npm在Node\u模块中安装Node.js包的方法 以下是我到目前为止所做的尝试 gem安装-i ruby-plist在ruby/gems/plist-3.1.0 我试图在我的脚本extract.rb中通过执
bundle install
的Bundler安装gems。但对于一个简单的脚本来说,设置bundler似乎有些过分
是否有一种方法可以将gem安装到脚本的子文件夹并使用它,类似于npm在Node\u模块中安装Node.js包的方法
以下是我到目前为止所做的尝试
gem安装-i ruby-plist
在ruby/gems/plist-3.1.0
我试图在我的脚本extract.rb
中通过执行require./ruby/gems/plist-3.1.0/lib/plist
来请求它,但在require中失败:无法加载这样的文件:plist/generator
(plist/generator.rb
是lib/plist.rb
所必需的)
OSX上的Ruby 2.0您可以使用--path
选项将安装捆绑到不同的位置,例如:
bundle install --path vendor/bundle
另请参见您可以使用--path
选项将安装捆绑到其他位置,例如:
bundle install --path vendor/bundle
另请参见您可以通过为特定应用程序创建gemset来实现。请按照以下步骤进行操作:
$ rvm gemset create <gemset_name>
然后通过cd导航到您的应用程序目录
现在执行此命令-
$ rvm list
$ rvm use @<gemset_name>
$rvm使用@
现在,无论何时安装任何gem,它都将安装在当前gemset中,而当前gemset并不用于整个机器
确保-在新创建的gemset中运行gem安装捆绑程序
,这样在运行bundle安装时不会出现错误
您可以通过为特定应用程序创建gemset来实现。请按照以下步骤进行操作:
$ rvm gemset create <gemset_name>
然后通过cd导航到您的应用程序目录
现在执行此命令-
$ rvm list
$ rvm use @<gemset_name>
$rvm使用@
现在,无论何时安装任何gem,它都将安装在当前gemset中,而当前gemset并不用于整个机器
确保-在新创建的gemset中运行gem install bundler
,这样在运行bundle install
时不会出现错误。如果不想使用bundler,只需像示例中那样在本地安装gems,然后在需要之前在脚本中设置gem_路径env,例如:
#!/usr/bin/env ruby
ROOT = File.expand_path('..', __FILE__)
ENV['GEM_PATH'] = File.join(ROOT, 'ruby')
# or to just append to
# ENV['GEM_PATH'] += ":#{ File.join(ROOT, 'ruby') }"
require 'plist'
假设您的脚本与ruby
文件夹位于同一文件夹中(否则相应地调整文件路径)。如果您不想使用Bundler,只需像示例中那样在本地安装gems,然后在需要之前在脚本中设置GEM\u PATH env,例如:
#!/usr/bin/env ruby
ROOT = File.expand_path('..', __FILE__)
ENV['GEM_PATH'] = File.join(ROOT, 'ruby')
# or to just append to
# ENV['GEM_PATH'] += ":#{ File.join(ROOT, 'ruby') }"
require 'plist'
假设您的脚本与ruby
文件夹位于同一文件夹中(否则请相应调整文件路径)。如何从脚本加载gem?只需按照页面上的说明为您的项目设置bundler,做一个正常的要求,你应该很好去。我如何从脚本加载宝石?只需按照他们的页面上所描述的设置你的项目绑定器,做一个正常的要求,你应该很乐意去做。关键是知道GEM_路径影响宝石从哪里加载。关键是知道GEM_路径影响宝石从哪里加载。