Closed11
RailsのsettingslogicとRails.configurationとconfig_forについて

まずタイトルのあれがなんなのか雑に説明すると、Railsアプリケーションにおける諸々の設定管理の方法のこと。
昔はsettingslogic
が主流だったけど、今はRails標準のRails.configuration
とconfig_for
が主に使われるようになったみたい。

もうすでに色々な記事が書かれていて、今更新しいことはないので自分の頭の整理のためにメモとして色々調べていこうと思う。
ちなみにこちらにだいたい知りたいことは書いてあったので、手を動かしながら見ていこうと思う。

とりあえず最新のruby versionでは動かなさそうな雰囲気があるので、ruby v3.0.6
のrailsプロジェクトを使う。

READMEに従って挙動を見ようとしたら、以下のエラーが...
`visit_Psych_Nodes_Alias': Alias parsing was not enabled. To enable it, pass `aliases: true` to `Psych::load` or `Psych::safe_load`. (Psych::AliasesNotEnabled
これがもうつかわれなくなった理由なのか...?

yamlで&
使えなくないから、こうしないといけないのか
直書きするか、psychのほうでどうにかしないといけなさそうだから、これはつらい...
# default: &defaults
# cool:
# saweet: nested settings
# neat_setting: 24
# awesome_setting: <%= "Did you know 5 + 5 = #{5+5}?" %>
development:
cool:
saweet: nested settings
neat_setting: 24
awesome_setting: <%= "Did you know 5 + 5 = #{5+5}?" %>
neat_setting: 800
# test:
# <<: *defaults

この時点で動作確認できたから、とりあえず満足。
irb(main):001> Settings.cool
=> {"saweet"=>"nested settings"}
irb(main):002> Settings.cool.saweet
=> "nested settings"
irb(main):003> Settings.neat_setting
=> 800
irb(main):004> Settings.awesome_setting
=> "Did you know 5 + 5 = 10?"

次はRails.configuration
とconfig_for
に乗り換えて、動きを見てみる

Railsガイドに沿って試してみる

irb(main):003> Rails.configuration.x.payment_processing.schedule
=> :daily
特に癖もなくyamlを扱いやすい印象

config/
以下にyamlが散乱しそうなので、config/x
にyamlを置いて、それをconfig_for(Rails.root.join('config/x/hoge.yml)
と読み込むことで、整理しやすくする。

上記のyamlで&を用いたコードに対して実行してもsettingslogicのようにエラーにならなかった
irb(main):001> Rails.configuration.x.fuga
=> {:configs=>[{:code=>100}, {:code=>200}, {:code=>300}]}
このスクラップは2024/02/10にクローズされました