簡體   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