2014-09-18 65 views
0

從Ruby腳本中,我想發送一條命令來安裝gem(如果缺失)。假設它是"foo"。我認爲檢查寶石存在的命令是Gem.find_files,安裝寶石的命令是Gem.install。我嘗試這樣做:如何從Ruby腳本安裝gem?

if Gem.find_files("foo").empty? 
    Gem.install("foo") 
end 

Gem.find_files似乎工作,但Gem.install返回一個錯誤Uninitialized constant Gem::DependencyInstaller。假設這是要運行的代碼的第一部分,並且我正在使用新安裝的Ruby,除了Ruby 2附帶的核心庫之外,此時沒有安裝任何gem,那麼安裝gem的正確方法是什麼從Ruby腳本(而不是從殼)?

+1

爲什麼不使用bundler和bundle install? – 2014-09-18 17:14:42

+0

Ruby應用程序自己安裝依賴關係是非常不尋常的,特別是在不先詢問的情況下。 – tadman 2014-09-18 17:31:19

+0

@SamD我認爲有人可能會這樣說。除非已安裝捆綁器,否則不能使用捆綁器。 – sawa 2014-09-18 17:39:54

回答

2

如何:

require 'rubygems/dependency_installer.rb' 

+0

太好了。就是這樣。 – sawa 2014-09-18 17:45:14