📚
【Rails】credentialsを読み込む際に便利な dig メソッド
はじめに
Railsの設定ファイルでcredentialsから値を読み込みたい時があると思いますが、production環境のみで使用したいのにCI実行時にtest環境のcredentialsが見つからず、
NoMethodError:
Cannot load database configuration:
undefined method `[]' for nil:NilClass
このようなエラーに遭遇しました。
最初は、test環境のcredentialsを作成し、読み込み箇所で存在判定をすることで対応していたのですが、たまたまActiveStorageの設定ファイルを読んでいた際にdigメソッドのを知ったので記事にした次第です。
変更前
Rails.application.credentials.db.nil? ? 'root' : Rails.application.credentials.db[:host]
変更後
Rails.application.credentials.dig(:db, :host)
超便利。最高。
参考
Hash#dig: https://docs.ruby-lang.org/ja/latest/method/Hash/i/dig.html
Discussion