コード日進月歩

プログラミングの技術的なメモなど

定数管理をするgem configにて動的に書き換える

定数を管理する config といgemがあるが、これは配列をしていすると上書きできる。上書きできるのでテストするときは上書きするなどの行為ができる。 ※普通のソースコード上ではsettingsの旨味なくなるのでやらないこと

環境

rails (5.2.0)
config (1.7.0)

やり方

Settings.add_source!({{上書きしたいHash}})
Settings.reload!

こんな感じでyamlを書く

test:
  text: "TestText"
  msg: "Message"

ハッシュで上書きする。 同列のネストの値も上書きされてしまうので注意

Settings.test.text
# => "TestText"
Settings.test.msg
# => "Message"

# リロードする
Settings.add_source!({test:{text:"NewText"}})
Settings.reload!

# 再度確かめる
Settings.test.text
# => "NewText"
Settings.test.msg
# => nil

参考リンク