デプロイのプリコンパイル時に出るエラー。
ArgumentError: Missing `secret_key_base` for 'production' environment, set this string with `rails credentials:edit`
解決
まず、OSにエディタの設定をしていなければする。
export EDITOR=vim
普通にrails newしていたら、アプリ内にconfig/master.key
があるはず。
$ rails credentials:show # aws: # access_key_id: 123 # secret_access_key: 345 # Used as the base secret for all MessageVerifiers in Rails, including the one protecting cookies. secret_key_base: ~~~~~~~~
この中に、secret_key_base
がある。値として長い文字列がセットされているはず。
確認したら次へ。
リモートサーバにmaster.keyを転送
Capistranoのapp/shared/conifg/
ディレクトリ以下にmaster.keyの内容をコピペ。
cd /path/to/app/shared/config/ sudo vim master.key
config/deploy.rb に追記
config/deploy.rb
append :linked_files, "config/master.key"
これでリリースのほうがmaster.keyをシンボリックリンクとして読み込むようになる。
これでプリコンパイルが通るはず。
解決するためにしたこと
ログを見る
cat log/capistrano.log
標準エラー出力ではエラー文がすべて表示されないので、ログを見た。