Rails に初コントリビュートした

Rails::Application#config_for merges shared configuration deeply by kirikiriyamama · Pull Request #37913 · rails/rails · GitHub

うれしい。


Rails::Application#config_forRails.env に応じて YAML ファイルを Hash として読み込むメソッドである。

# config/example.yml
development:
  key: val
config_for(:example)[:key] #=> "val"

また、各環境を通して共通の設定を記述することができる。

# config/example.yml
shared:
  foo: foo
development:
  bar: bar
config_for(:example) #=> {:foo=>"foo", :bar=>"bar"}

これまで、この共通値は shallow merge されていたが、これを deep merge するようにした。


非互換な変更になるため、PR にあたってはユースケースベースで話すことを意識した (表参道.rb でめっちゃ相談した、各位ありがとうございます)。 具体的には他の gem を使って設定値の管理をしているが Rails Way に移行したい、また共通の設定値が深くネストしているみたいな話をした。

あと念のためオプションで挙動を切り替えることも提案したが、特に言及されることなくスッとマージされた。