Railsで共通の設定ファイルをもちたいというとき
config_for()
を用いると、シンボルでyamlファイルを指定してそこで共通の設定項目を管理できる。
config/application.rb module Myapp class Application < Rails::Application config.time_zone = "Tokyo" config.i18n.default_locale = :ja config.active_record.default_timezone = :local config.load_defaults 5.2 config.generators do |g| g.assets false g.helper false end config.x.preference = config_for(:preference).deep_symbolize_keys end end
config.x.preference
のpreference
は任意の値でOK。
Railsガイドに書いてあるとおり、x
を挟むことでネストでも参照できる。
Railsアプリを設定する | Rails ガイド
config_for(:preference)
とシンボルでpreference
と指定しているので、
config直下にpreference.yml
を用意してあげる。
config/preference.yml default: &default hoge_k: hoge_v fuga_k: fuga_k_1: fuga_v_1 fuga_k_2: fuga_v_2 foo: - bar - baz development: <<: *default test: <<: *default production: <<: *default
controllerで引っ張ってあげたいときは、
Rails.configuration.x.preference[:hoge_k]
みたいにしてあげるとhoge_v
が引っ張れる。
deep_symbolized_keys
とsymbolized_keys
の違いについてはこちらでまとめる。