[英]How to install a gem to the current folder
我想在本地使用Ruby gem(而不是在整个机器上安装它)以便在单个脚本中使用。 我知道如何使用带有Gemfile的Bundler来安装gems并bundle install
。 但是对于一个简单的脚本来说,设置捆绑程序似乎过高了。
有没有一种方法可以将gem安装到脚本的子文件夹中并使用它,类似于npm在node_modules
安装Node.js软件包的node_modules
吗?
到目前为止,这是我尝试过的。
gem install -i ruby plist
将plist
gem安装在ruby/gems/plist-3.1.0
我试图通过执行require './ruby/gems/plist-3.1.0/lib/plist
require: cannot load such file: plist/generator
plist/generator.rb
require './ruby/gems/plist-3.1.0/lib/plist
require: cannot load such file: plist/generator
plist/generator.rb
在脚本extract.rb
要求它,但是由于require: cannot load such file: plist/generator
失败require: cannot load such file: plist/generator
( plist/generator.rb
是lib/plist.rb
所必需的)。
OSX上的Ruby 2.0
您可以使用--path
选项将安装捆绑到其他位置,例如:
bundle install --path vendor/bundle
如果您不想让Bundler参与进来,只需按照示例中的说明在本地安装gems,然后在需要之前在脚本中设置GEM_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
文件夹位于同一文件夹中(否则,请相应地调整文件路径)。
您可以通过为特定应用程序创建gemset来实现。 为此,请按照以下步骤操作-
$ rvm gemset create <gemset_name>
它将为当前选择的红宝石版本创建一个宝石集。 您可以通过此命令检查当前选择的红宝石版本-
$ rvm list
然后通过cd导航到您的应用程序目录。
现在执行此命令-
$ rvm use @<gemset_name>
现在,无论何时安装任何宝石,它都将安装在当前的宝石集中,而不是用于整个机器。
确保-您在新创建的gemset中运行gem install bundler
,以便在运行bundle install
时不会引发错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.