RailsでYAMLに定義したカスタム設定を使う

Railsで自分で定義したYAMLファイルをロードしてアプリケーションで使いたい!

ってことでやってみますー

僕がRailsでカスタム設定といえば、そうこの子です!

github.com

Latest commit 0ae134b on Aug 7, 2014

なるほど、開発やめちゃったんだねー

そう言えばこんな子もいたよ

github.com

Latest commit 9a670d4 22 days ago

うん、大丈夫そう!これを使お、、う?

ちょっと気になったことが、

僕がゴリゴリRailsでアプリ作りまくってたときは、settingslogicはみんな使ってた

なのに、更新されてない???

なんで?

そこでRails本体のconfig周りを調べてみました!

すると、、

github.com

config_for って知らない子ですねー

どうやら、Railsのrootディレクトリ/config配下にあるYAMLファイルをシュッとロードしてくれるメソッドみたいです

# config/my_settings.yml

default: &default
  setting_name: My setting

development:
  <<: *default
irb(main):001:0> Rails.application.config_for(:my_settings)
=> {:setting_name=>"My setting"}

第2引数の env のデフォルトは Rails.env なので省略可能です

環境変数を使ってみましょう!

# config/my_settings.yml

default: &default
  setting_name: <%= ENV.fetch("MY_SETTING_NAME","") %>

development:
  <<: *default
irb(main):001:0> ENV["MY_SETTING_NAME"] = "My setting name"
irb(main):002:0> Rails.application.config_for(:my_settings)
=> {:setting_name=>"My setting name"}

settingslogicやconfigなどのgemがなくても、簡単にYAMLフィアルをロードできました!

Railsガイドにもちゃんと書かれてましたー

railsguides.jp