経理からエンジニア転向した人のメモ

元経理マンがエンジニアに転向して現在

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

ryomoyr.hatenablog.com