[Ruby on Rails 5] config にアプリ固有の値を定義する
YAML 設定ファイルに持たせた値を活用する。
railsconfig/config v1.4.0 が Rails v5.1 でうまく動かなかったので、マニュアルで設定を追加します。
設定ファイルの作成
config/initializers
に、YAML ファイルを読み込むスクリプトを用意します。
file = File.read("#{Rails.root}/config/my_config.yml")
MY_APP = YAML.safe_load(file, [], [], true)[Rails.env]
config/
に、固定値を設定する YAML ファイルを用意します。
COMMON には全ての環境で共通する設定を持たせます。
COMMON: &COMMON
code: 'foo'
development:
bar: 'dev'
<<: *COMMON
test:
bar: 'test'
<<: *COMMON
production:
bar: 'prod'
<<: *COMMON
例えば view 内で MY_APP['code']
のように設定値を利用することができます。
= check_box_tag :search, MY_APP['code'], true, class: 'form-check-input'
このあたりは「Ruby on Rails 5アプリケーションプログラミング」を参考にさせて頂きました。
Ruby on Rails 5アプリケーションプログラミング
posted with amazlet at 17.09.14
山田 祥寛
技術評論社
売り上げランキング: 12,115
技術評論社
売り上げランキング: 12,115
YAML.safe_load
当初 YAML.load(file)
を利用していたのですが、bbatsov/rubocop に YAML.safe_load
を使うように言われました。
置き換えるとエラーが発生するので調べると、#safe_load
は引数の指定が違いました。
file = File.read("#{Rails.root}/config/my_config.yml")
MY_APP = YAML.safe_load(file, [], [], true)[Rails.env]
こちらが参考になりました。