multistage 環境を使う capisrano-unicorn 使いはいますぐ 0.1.7 に上げよう
capistrano + ext/multistage で capistrano-unicorn を使っている人で、
よくわからないけど
set :rails_env, "staging" set :app_env, "staging" set :unicorn_env, "staging"
って書かないと unicorn がうまく動かないと思ったことがある人こんにちは、tk0miya です。
冗長だけど、こんな風に rails_env, app_env, unicorn_env のそれぞれを同じ値にセットしないとうまく動かないんですよね。
app_env, unicorn_env の設定をサボると、unicorn 起動のコマンドラインが
* executing "cd /home/app/myapp/current && BUNDLE_GEMFILE=/home/app/myapp/current/Gemfile bundle exec unicorn -c /home/app/myapp/current/config/unicorn/production.rb -E production -D"
みたいになって、なぜか production モードで起動してしまう。
僕もつい最近までこれを知らずにはまってしまいました。調べてみるといろんな人がはまっていたようですね。
また、公式 wiki にもこんなことが書いてありました。
コードを読むと :app_env, :unicorn_env の評価が multistage:ensure 以前に行われるため、
config/deploy/*.rb で rails_env を書き換えても反映されないという問題だったようです。
0.1.7 リリース
パッチ投げようかと github を覗いてみたら、つい一ヶ月ほど前(2013/3/21)に 0.1.7 がリリースされており、
その中に app_env と unicorn_env の遅延評価の修正も含まれているようです。
というわけで、ここらへんでハマって冗長な設定をしている方は capistrano-unicorn 0.1.7 に上げてみてはいかがでしょうか。