Rails6のMulti Environment CredentialsでMissing `secret_key_base`

とある案件でRailsを使っていて、ステージング環境を作った時のことです。
起動と当時に以下のようなエラーを吐いて停止してしまいました。

=> Booting Puma
=> Rails 7.0.4.2 application starting in staging 
=> Run `bin/rails server --help` for more startup options
Exiting
/usr/local/bundle/gems/railties-7.0.4.2/lib/rails/application.rb:581:in `validate_secret_key_base': Missing `secret_key_base` for 'staging' environment, set this string with `bin/rails credentials:edit` (ArgumentError)
	from /usr/local/bundle/gems/railties-7.0.4.2/lib/rails/application.rb:419:in `secret_key_base'

この環境では、認証情報系を格納するcredentials.yml.encをRails6のMulti Environment Credentialsと呼ばれる方法で環境ごとに分けています。
さらにその上で各環境のmaster.keyに相当するキーファイルは格納せず、環境変数のRAILS_MASTER_KEYに環境ごとのキーを設定することで動作させています。

このエラーにあるsecret_key_baseは、credentials.yml.encの中には存在しますが、各環境ごとのCredentialsには記述していません。
その状態で開発環境(development)では動作していたので、親子関係で上位となるcredentials.yml.encから取得してきてくれているんだろうぐらいに思っていました。

よくよく考えるとmaster.keyを置くこともなく、環境変数にはdevelopment.keyの値しか渡していないのでcredentials.yml.encから値を取れるわけがないのです。
早速確認してみると、開発環境においてもやはりsecret_key_baseはnilが返ってきました
他の値、例えばDBのユーザー名はスクリーンショットの通り問題なく取得できています。
(開発環境とはいえroot使ってるのかよ!というのはさておき)

Rails開発環境でのCredentials内容確認

ということは、開発環境ではそもそもsecret_key_base自体が使われない??
あまり詳しくないのですが、このあたりの設定とかどこかにあったりするのでしょうか

では、エラーを解消するため、staging.yml.encにsecret_key_baseを設定してやることにします。
設定するキーは、

bundle exec rake secret

で取得します。

EDITOR=vim rails credentials:edit -e staging

でファイルを開き、他の項目と同様にsecret_key_baseを設定してあげて完了です。

Rails6のMulti Environment CredentialsでMissing `secret_key_base`にコメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です