[英]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.