2010-05-09 58 views
2

我工作的一個控制檯Ruby應用程序(不軌道!)我就可以安裝在多臺計算機此應用程序。我想知道是否有一種方法可以構建它,因此我不必在每臺機器上安裝我用於應用程序的寶石。我希望能夠將目錄複製到每臺機器並運行它。理想情況下,我想將這些寶石放在lib文件夾或其他東西中,並從那裏引用它們,所以我不必將它們安裝在我的開發機器上。有沒有辦法做到這一點?紅寶石寶石在LIB - 備胎原則

在.NET中,我們稱此爲「備胎」的原則。

感謝, 克雷格

+0

http://stackoverflow.com/questions/1110535/unpacking-freezing-gems-into-的重複配置負載路徑a-non-rails-ruby-app – 2010-05-09 23:40:31

回答

2

如何使用bundler

然後你就可以包括Gemfile中指定的所有necssary寶石,只是運行在每臺機器上「包安裝」拉下來。

如果你真的要與應用運行"bundle package"捆綁他們,寶石將被存儲在供應商/緩存。

+0

我已經看過,可能是我最終走的路。我只是想知道是否沒有簡單的方法將寶石複製到我的lib文件夾,所以他們不必下載?在其他語言中,這非常簡單。 – fregas 2010-05-10 00:00:25

+0

剛剛更新了我的答案,以顯示「捆綁軟件包」,它將gem打包到供應商/緩存。 – Chap 2010-05-10 15:31:54

+0

我要試一試。 – fregas 2010-05-10 15:52:45

1

你可以採取同樣的方法,因爲Rails允許和「供應商」你的寶石。這涉及到創建一個新的目錄(rails使用vendor/gems)並使用gem unpack將gem解包到這個目錄中。

然後,配置您的負載路徑包括以下所有的子文件夾。

編輯

你可以做這樣的事情

Dir.glob(File.join("vendor", "gems", "*", "lib")).each do |lib| 
    $LOAD_PATH.unshift(File.expand_path(lib)) 
end 
+0

很酷。你如何配置紅寶石的負載路徑? – fregas 2010-05-10 15:05:59

+0

由於Bundler包含一個解壓寶石的選項,我會隨之去做。 – 2010-05-11 09:15:39