読者です 読者をやめる 読者になる 読者になる

いつクリはてブロ

いつになったらクリエイティブするの?

Rails4.1からproduction環境ではSECRET_KEY_BASEが環境変数を参照するようになっている

rails 技術
Missing `secret_key_base` for 'production' environment, set this value in `config/secrets.yml` (RuntimeError)

production環境で動かしてこのエラーが出て、ブラウザが真っ白になって動かないときの対処法。

Rails4.1からconfig/secrets.ymlのproduction要素の中身が環境変数を参照するようになっている。

# Do not keep production secrets in the repository,
# instead read values from the environment.
production:
  secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>

productionのためのキー文字列はリポジトリに入れるなということだ。

なので環境変数に書いておく必要がある。

Deviseなんかもキー文字列を要求するので、それもSECRET_KEY_BASEの真似をして書いておくと良さそう。

ちなみに『新刊一部ください』はSqaleを利用させていただいているのだが、Sqaleのサーバー上では環境変数はこのように設定する模様。

Sqale - FAQ: 技術的な仕様に関する質問

自前のサーバーならいいが、このように外部サービスを利用している場合は環境変数の設定の仕方も指定されている可能性があるので、調べる必要がある。*1

*1:もっとも、Sqaleのはスタンダードなやり方っぽいけど