2012-03-12 43 views
3

對於Ruby獨立腳本Rails喜歡部署功能,如Gemfile /「bundle install」等部署Ruby獨立腳本和依賴關係的最佳選擇?

假設您正在開發一個您想測試然後部署的Ruby腳本,並且可能會向其他人發送什麼Rails喜歡部署的方式,你會用這麼說:

a)創業板 - 標記創業板要求&按要求安裝它們 - 例如Rails的「Gemfile」,你標記你需要什麼寶石,然後「捆綁安裝」來安裝它們

b)文件要求 - 自動加載* .rb文件,如果他們在你的腳本目錄(我想在Rails如果你把一個類文件放在apps/model目錄下,Rails會自動爲你加載/需要這個文件)

回答

2

在我的愚見中,一個gem是要走的路。 Bundler可以讓您輕鬆上手;它會在您運行命令時爲您啓動一個框架...

bundle gem <GEM_NAME> 

Take a look。只要你在你的gem的.gemspec文件中指定你的依賴關係,並且有人安裝你的打包gem(它們不需要打包器,只需要RubyGems的gem命令),依賴關係將作爲gem安裝。

+0

哦感謝本 - 這聽起來像一個好主意 - 我其實是特別問是如何處理我的腳本依賴它使用其他環球新興市場(CF如何包裝自己腳本本身),包括在我的腳本開發過程中。或者這也許是你已經理解的? – Greg 2012-03-13 04:05:53

+0

是的,我明白了。您可以將您的腳本放在您的gem的'lib'目錄中,然後在'your-gem.gemspec'文件中,您將能夠指定您的gem /腳本所依賴的其他gem,特定的(rspec,ruby-debug等)和運行時/生產特定的。 [詳細說明](http://docs.rubygems.org/read/chapter/20#dependencies)關於實際設置gemspec;它包含了Ruby和RubyGems的開箱即用功能。 – 2012-03-13 14:16:28

4

取決於它是否是您希望人們在每個找到它的主機上使用的工具。還取決於該工具是否可以與公共回購共享。

如果它只是工作,而不用擔心是否已經安裝通過捆紮機寶石已經或沒有,你可以使用像從獨立腳本中的以下安裝寶石如果不存在(謹記系統對用戶紅寶石):

#!/usr/bin/env ruby 

require 'rubygems' 

def install_gem(name, version=Gem::Requirement.default) 
    begin 
    gem name, version 
    rescue LoadError 
    print "ruby gem '#{name}' not found, " << 
     "would you like to install it (y/N)? : " 
    answer = gets 
    if answer[0].downcase.include? "y" 
     Gem.install name, version 
    else 
     exit(1) 
    end 
    end 
end 

# any of the following will work... 
install_gem 'activesupport' 
install_gem 'activesupport', '= 4.2.5' 
install_gem 'activesupport', '~> 4.2.5' 

require 'active_support/all' 

...