2010-12-16 90 views
2

我已經使用Ruby 1.9.2和Passenger 3設置了一個新環境。Rails 3應用程序部署在Capistrano上。 RAILS_ENV設置爲分段。Passenger 3 with Rails 3不會從供應商處加載寶石/

當試圖啓動應用程序時,乘客抱怨失蹤的寶石。運行

bundle --deployment 

安裝寶石RAILS_ROOT /供應商,但並沒有解決錯誤。

如果我安裝缺少的gem作爲系統gem(例如sudo gem install),錯誤消失,但現在Gemfile中的下一個gem被報告爲缺失。

我可以通過安裝我的寶石到系統來解決這個問題,但我想知道爲什麼將它們安裝到供應商目錄不起作用。我的理解是,bundler的想法是避免必須將所有gem安裝到系統中。

我RAILS_ROOT/.bundle /配置設置爲:

BUNDLE_FROZEN: "1" 
BUNDLE_PATH: vendor/bundle 
BUNDLE_DISABLE_SHARED_GEMS: "1" 

回答

0

理想的情況下,寶石應保持在一致的位置,以避免它們被重新安裝所有的部署。因此,請嘗試從您的配置中刪除BUNDLE_PATH(默認位置是~/.bundle)。

我不確定bundle --deployment是幹什麼的(我在文檔中看不到這一點)。我在我的部署腳本中使用類似下面的命令:

after :'deploy:update_code' do 
    run "cd #{release_path} && bundle install --without test cucumber development" 
end 
+1

我可以提供你的建議。我會嘗試一下,但我想我的原始問題仍然存在:爲什麼乘客不能在供應商/包裹中找到寶石? 在Bundler站點http://gembundler.com/rationale.html#deploying-your-application – msmithstubbs 2010-12-16 13:55:45

+0

上記錄了(並建議)--deployment標誌感謝您的鏈接(奇怪的是,它沒有提及它在'bundle --help')。你爲什麼認爲這個問題與乘客有關?您是否嘗試過在您的服務器上加載腳本/控制檯? – Zubin 2010-12-18 02:34:58