2011-11-30 13 views
13

私たちは、キャップを付けて展開し、ユニコードプロセスにUSR2を送信して再読み込みするスクリプトを使用しています。通常は動作しますが、たびに失敗します。ユニコーンログを調べると、古いリリースディレクトリに存在しないGemfileを探していることが明らかになります。capistranoのユニコーン再起動の問題

例外:

/usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.0.21/lib/bundler/definition.rb:14:in `build': /var/www/railsapps/inventory/releases/20111128233407/Gemfile not found (Bundler::GemfileNotFound) 

を明確にすることが、現在のリリースが、その後削除されています古いものではないのです。

正常に動作すると思われます。つまり、新しいコードをピックアップしているようです。古いリリースを参照しているとは思えません。

アイデア?

答えて

11

サーバーを起動する前に、BUNDLE_GEMFILE環境変数を設定してください(current/Gemfile)。あなたのunicorn.rbで

23

before_execブロックを追加

current_path = "/var/www/html/my project/current" 

before_exec do |server| 
    ENV['BUNDLE_GEMFILE'] = "#{current_path}/Gemfile" 
end 

http://blog.willj.net/2011/08/02/fixing-the-gemfile-not-found-bundlergemfilenotfound-error/

+1

また、ユニコーン設定ファイルが変更された場合は、手動でシャットダウンしなければならないことを忘れて、ユニコーンを開始していない、ここでそれについての詳細を読みます再び新しい設定を読み込むために – lulalala