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

时间:2015-01-09 18:31:45

标签: ruby rubygems bundler

我想在本地使用Ruby gem(不是为整个机器安装它),以便在单个脚本中使用。我知道如何使用Gemfile和bundle install安装带有Bundler的gem。但是对于一个简单的脚本来说,设置bundler似乎有点过分了。

有没有办法将gem安装到我的脚本的子文件夹并使用它,类似于npm在node_modules中安装Node.js包的方式?

这是我到目前为止所尝试的内容。

gem install -i ruby plistplist

中安装ruby/gems/plist-3.1.0 gem

我尝试在我的脚本extract.rb中通过require './ruby/gems/plist-3.1.0/lib/plist来要求它,但是require: cannot load such file: plist/generator失败了plist/generator.rb需要lib/plist.rb

OSX上的Ruby 2.0

3 个答案:

答案 0 :(得分:3)

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

bundle install --path vendor/bundle

另见http://bundler.io/v1.1/bundle_install.html

答案 1 :(得分:1)

如果您不想涉及B​​undler,只需在示例中在本地安装您的gem,然后在您的脚本中设置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文件夹位于同一文件夹中(否则相应地调整文件路径)。

答案 2 :(得分:0)

您可以通过为特定应用程序创建gemset来实现。按照这些步骤 -

$ rvm gemset create <gemset_name>

它将为当前选择的ruby版本创建一个gemset。 你可以通过这个命令检查当前选择的ruby版本 -

$ rvm list

然后通过cd导航到您的app目录。

现在执行此命令 -

$ rvm use @<gemset_name>

现在,无论何时安装任何gem,它都将安装在当前的gemset中,而不是整个机器使用。

确保 - 您在新创建的gemset中运行gem install bundler,以便在运行bundle install时不会出现错误。

相关问题