コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

定数管理をする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

参考リンク