QA@IT

rails herokuデプロイの際のMissing secret_key_base

6141 PV

こんにちは、今回はherokuデプロイ時のsecret_key_baseエラーについて質問させて頂きます。
gemのversionはそれぞれ

rails 4.1.0 
pg 0.15.1 
ruby 2.1.3

です。

以前までrailsのバージョン4.0でしかデプロイしたことがなく、今回、4.1に上げ、
config/secrets.yml

production:
  secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>

と書き、herokuにデプロイしたのですが、heroku openすると

Internal Server Error 

Missing secret_key_base for 'production' environment, set this value in config/secrets.yml 

と言われてしまいます。

公式どおり heroku config:set SECRET_KEY_BASE=ruby -rsecurerandom -e "puts SecureRandom.hex(64)" ともしましたがエラーは変化しません。

config/secrets.ymlに書くだけじゃダメなのでしょうか??
ローカルでのproductionは問題なく動いています。

よろしくお願いします。

回答

現在の状態を2つ確認してみてください。

一つは config/secrets.yml が addされているか、 .gitignoreに登録されていないか です。

もう一つは、現在のherokuの SECRET_KEY_BASE の値にそれらしい値がセットされていることです。
これは

heroku config:get SECRET_KEY_BASE

で確認できると思います。

heroku config:get SECRET_KEY_BASE --remote production の方がいいのかな?)


それでも正しく設定されているように見えるときは、一度ローカルで生成してみて
その値をsecrets.ymlに直接設定してherokuにpushしてみて動くかどうかみてみるといいかもしれませんね。

(ただしその値はリポジトリに残ってしまうので確認だけでその後は使わないよう(別の値を再生成するよう)にしましょう。)

生成は

ruby -rsecurerandom -e "puts SecureRandom.hex(64)"

を実行して取れた値を使えばいいと思います。

そういえば質問の方だと ruby~のところのバッククォート取れてますね。
他サイトで質問された文をそのまま貼り付けたんでしょうか?もし実際に実行したときもつけてなければそれも原因です。

編集 履歴 (1)
  • なぜかaddされていませんでした...secrets.ymlを作った時に.gitignoreに書いてあったからかと思います。結局-fつけてaddしたら通りました!ありがとうございました! -
ウォッチ

この質問への回答やコメントをメールでお知らせします。