📚

【Rails】credentialsを読み込む際に便利な dig メソッド

2020/10/14に公開

はじめに

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