Rails 5.2 の production 環境を Capistrano でデプロイしようとして Missing `secret_key_base`... などと怒られたとき

結論

config/master.key をデプロイする必要がある*1

解決方法(の一つ)

set :linked_files, 'config/master.key' という行をデプロイ設定のファイルに追加して、master.key ファイルを shared/config/master.key の場所に置けばよいです。

備考

環境変数 ENV["RAILS_MASTER_KEY"]master.key の内容を指定してもよいです*2

なお、database.yml や 外部API のトークン なんかも全部 credentials.yml.enc に詰め込めば、.gitignore するファイルは master.key だけになるので見通しが良くなると思います。ただ、それがベターな方法かと問われると現状ではちと分からないです。

*1:当たり前

*2:おそらくその方が一般的かと

Rails 5.2 の credentials.yml.enc に登録してあるデータを呼び出す方法

前提

$ rails credentials:edit で編集した内容が以下のとおりであったとします。

# Used as the base secret for all MessageVerifiers in Rails, including the one protecting cookies.
secret_key_base: 1234567890
my_api_key: abcdefg
foo:
  bar: hogehoge
anata:
  boku:
    watashi: dare

結論

呼び出すには以下のように書きます。

Rails.application.credentials[:secret_key_base] #=> 1234567890
Rails.application.credentials[:my_api_key] #=> abcdefg
Rails.application.credentials.foo[:bar] #=> hogehoge
Rails.application.credentials.anata[:boku][:watashi] #=> dare

注意点

$ rails credentials:edit で編集した後はサーバの再起動が必要です。

参考

XShell を用いて SSHトンネル を作る方法

XShell

Windows用 の SSHクライアント です。現状ではこれが Windows ではベストだと思っています。個人利用ならばフリーです。

SSHトンネルを構築する

XShell を用いて SSHトンネルを構築する方法を示します。なお、事前の準備としていわゆる踏み台サーバの設定が必要になります。その設定が済んでいるものとして、以下、説明をします。

続きを読む
Powered by はてなブログ