LoginSignup
14
11

More than 5 years have passed since last update.

app error: Missing `secret_key_base` for 'production' environment, set this value in `config/secrets.yml` (RuntimeError)の解決策

Last updated at Posted at 2018-01-04

RailsをCapistranoでデプロイ成功!!
よし、ページ確認だ!
とアクセスすると以下画面が。。。涙

ERR_BLOCKED_BY_XSS_AUDITOR.jpg

サーバー側のlogを確認するとunicorn.rbに以下のエラーが記述されていました。

unicorn.log
app error: Missing `secret_key_base` for 'production' environment, set this value in `config/secrets.yml` (RuntimeError)

直訳すると、productionのsecret_key_baseが見つかりません。config_secrets.ymlに値をセットしてください。とのこと。

capistranoのデプロイで以下シンボリックリンクを貼っているんだけどな。。

deploy.rb
set :linked_files, fetch(:linked_files, []).push('config/settings.yml')

サーバーにてvar/www/app名/sharedにsettings.ymlも記述済み

settings.yml
production:
    secret_key_base: 063ab480f211edcd82f3a2754faded575abac4ca956578c619542c3bfa0521196fb127dc3b45fa297a8444ccb59bb7e5d63266586a0c187df1b64a13b1e92e80

何故だー。。

解決策

おそらく自分と同じエラーに突き当たっている方は、こちらの記事を見てcapistranoのデプロイを試みた方だと思います。

(Capistrano編)世界一丁寧なAWS解説。EC2を利用して、RailsアプリをAWSにあげるまで - Qiita

ものすごい単純な結果なのですが、
上記share/config/配下のファイル名、setでシンボリックリンクを貼るファイル名をsecrets.ymlに変更したら動作しました。

deploy.rb
set :linked_files, fetch(:linked_files, []).push('config/secrets.yml')

サーバー側

bash
$ cd /var/www/app名/shared/config
$ mv settings.yml secrets.yml

Railsが標準でsecrets.ymlを見に行くので当たり前といえば当たり前ですよね。

私はこの問題で正月2日悩みました。
特にコードを理解せずコピペで設定を行うことの怖さを知りました。
以後気をつけたいと思います。

14
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
11