RailsをCapistranoでデプロイ成功!!
よし、ページ確認だ!
とアクセスすると以下画面が。。。涙
サーバー側のlogを確認するとunicorn.rbに以下のエラーが記述されていました。
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のデプロイで以下シンボリックリンクを貼っているんだけどな。。
set :linked_files, fetch(:linked_files, []).push('config/settings.yml')
サーバーにてvar/www/app名/sharedにsettings.ymlも記述済み
production:
secret_key_base: 063ab480f211edcd82f3a2754faded575abac4ca956578c619542c3bfa0521196fb127dc3b45fa297a8444ccb59bb7e5d63266586a0c187df1b64a13b1e92e80
何故だー。。
解決策
おそらく自分と同じエラーに突き当たっている方は、こちらの記事を見てcapistranoのデプロイを試みた方だと思います。
(Capistrano編)世界一丁寧なAWS解説。EC2を利用して、RailsアプリをAWSにあげるまで - Qiita
ものすごい単純な結果なのですが、
上記share/config/配下のファイル名、setでシンボリックリンクを貼るファイル名をsecrets.ymlに変更したら動作しました。
set :linked_files, fetch(:linked_files, []).push('config/secrets.yml')
サーバー側
$ cd /var/www/app名/shared/config
$ mv settings.yml secrets.yml
Railsが標準でsecrets.ymlを見に行くので当たり前といえば当たり前ですよね。
私はこの問題で正月2日悩みました。
特にコードを理解せずコピペで設定を行うことの怖さを知りました。
以後気をつけたいと思います。