production 環境で、なぜか Rails アプリケーションの画面が真っ白になってしまった。
— 環境 —
Rails 4.1
Unicorn エラーログを確認
unicorn のエラーログを確認しますと…
$ tail -f log/unicorn-stderr.log E, [2014-08-26T18:05:42.567438 #24681] ERROR -- : app error: Missing `secret_key_base` for 'production' environment, set this value in `config/secrets.yml` (RuntimeError)
$ tail -f log/unicorn-stderr.log
E, [2014-08-26T18:05:42.567438 #24681] ERROR -- : app error: Missing `secret_key_base` for 'production' environment, set this value in `config/secrets.yml` (RuntimeError)
production 用の secret_key_base が見つかりません、とエラーメッセージが出ていました。
production 環境の secret_key_base を設定
config/secrets.yml を確認しますと、案の定 secret_key_base が ENV[“SECRET_KEY_BASE”] と、環境変数で設定するようになっている。確かこの変更は、Rails4.1からだったと記憶してます。
config/secrets.yml
production:
secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
この環境変数を設定してなかったために、secret_key_base が見つかりませんのエラーになっていた。以下のコマンドで、ランダム値の secret_key_base を生成します。
$ bundle exec rake secret
生成した値を、secret_key_base に設定しましたところ、とりあえず正常に動作確認しました。
環境変数で渡す場合は、どうやるのが定番なのでしょうかね…。以下リンクを参考お願いします。