Just do IT

思うは招く

Capistrano3 secret_key_base エラー

デプロイのプリコンパイル時に出るエラー。

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を転送

Capistranoapp/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

標準エラー出力ではエラー文がすべて表示されないので、ログを見た。

Rails 6でCapistranoでデプロイする際のCredentials関連エラーに対処する - Qiita