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の違いについてはこちらでまとめる。