繁体   English   中英

如何将gem安装到当前文件夹

[英]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 plistplist 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/generatorplist/generator.rblib/plist.rb所必需的)。

OSX上的Ruby 2.0

您可以使用--path选项将安装捆绑到其他位置,例如:

bundle install --path vendor/bundle

另请参阅http://bundler.io/v1.1/bundle_install.html

如果您不想让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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM