如何将 gem 安装到当前文件夹
How to install a gem to the current folder
我想在本地使用 Ruby gem(不是为整台机器安装它)用于单个脚本。我知道如何使用带有 Gemfile 和 bundle install
的 Bundler 安装 gems。但是对于一个简单的脚本,设置捆绑器似乎有点过分了。
有没有办法将 gem 安装到我的脚本的子文件夹并使用它,类似于 npm 在 node_modules
中安装 Node.js 包的方式?
这是我到目前为止所尝试过的方法。
gem install -i ruby plist
在 ruby/gems/plist-3.1.0
中安装 plist
gem
我试图通过 require './ruby/gems/plist-3.1.0/lib/plist
在我的脚本 extract.rb
中要求它,但是 require: cannot load such file: plist/generator
失败了(lib/plist.rb
要求 plist/generator.rb
)。
Ruby 2.0 OSX
您可以使用 --path
选项捆绑安装到不同的位置,例如:
bundle install --path vendor/bundle
您可以通过为特定应用创建 gem 集来实现。请按照以下步骤操作 -
$ rvm gemset create <gemset_name>
它将为当前选择的 ruby 版本创建一个 gem 集。
您可以通过此命令检查当前选择的 ruby 版本 -
$ rvm list
然后通过 cd 导航到您的应用程序目录。
现在执行这个命令 -
$ rvm use @<gemset_name>
现在,每当您安装任何 gem 时,它将安装在当前 gem 集合中,该集合不会用于整台机器。
确保 - 你 运行 gem install bundler
在新创建的 gem 中设置,这样当你 运行 bundle install
.
如果您不想涉及 Bundler,只需像您的示例中那样在本地安装您的 gem,然后在您的脚本中设置 GEM_PATH 环境,然后在您需要之前,例如:
#!/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
文件夹位于同一文件夹中(否则相应地调整文件路径)。
我想在本地使用 Ruby gem(不是为整台机器安装它)用于单个脚本。我知道如何使用带有 Gemfile 和 bundle install
的 Bundler 安装 gems。但是对于一个简单的脚本,设置捆绑器似乎有点过分了。
有没有办法将 gem 安装到我的脚本的子文件夹并使用它,类似于 npm 在 node_modules
中安装 Node.js 包的方式?
这是我到目前为止所尝试过的方法。
gem install -i ruby plist
在 ruby/gems/plist-3.1.0
plist
gem
我试图通过 require './ruby/gems/plist-3.1.0/lib/plist
在我的脚本 extract.rb
中要求它,但是 require: cannot load such file: plist/generator
失败了(lib/plist.rb
要求 plist/generator.rb
)。
Ruby 2.0 OSX
您可以使用 --path
选项捆绑安装到不同的位置,例如:
bundle install --path vendor/bundle
您可以通过为特定应用创建 gem 集来实现。请按照以下步骤操作 -
$ rvm gemset create <gemset_name>
它将为当前选择的 ruby 版本创建一个 gem 集。 您可以通过此命令检查当前选择的 ruby 版本 -
$ rvm list
然后通过 cd 导航到您的应用程序目录。
现在执行这个命令 -
$ rvm use @<gemset_name>
现在,每当您安装任何 gem 时,它将安装在当前 gem 集合中,该集合不会用于整台机器。
确保 - 你 运行 gem install bundler
在新创建的 gem 中设置,这样当你 运行 bundle install
.
如果您不想涉及 Bundler,只需像您的示例中那样在本地安装您的 gem,然后在您的脚本中设置 GEM_PATH 环境,然后在您需要之前,例如:
#!/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
文件夹位于同一文件夹中(否则相应地调整文件路径)。