2014/11/19追記
最近はrails_configに乗り換えました。
環境毎にファイルが分かれるので定数の数が増えてきた場合はrails_configの方が管理しやすいです。
Ruby2.0, Rails4で確認
railsで定数を一元管理したい時にsettingslogic gemをよく使っています。
- gem追加
gem 'settingslogic'
- bundle install
./bin/bundle install
- initializer設定
ファイル名に0_をつけることで一番最初にsettingslogicのinitializerが読み込まれるようになり、他のinitialier内で設定ファイルを呼び出そうとした際にエラーが起きないようにしています。
config/initializers/0_settings.rb
class Settings < Settingslogic
source "#{Rails.root}/config/settings.yml"
namespace Rails.env
end
- settings.ymlに定数を記述
config/settings.yml
defaults: &defaults
cool:
saweet: nested settings
neat_setting: 24
awesome_setting: <%= "Did you know 5 + 5 = #{5 + 5}?" %>
development:
<<: *defaults
neat_setting: 800
test:
<<: *defaults
production:
<<: *defaults
- consoleから試してみる
./bin/rails c
Loading development environment (Rails 4.0.0)
[1] pry(main)> Settings.cool
=> {"saweet"=>"nested settings"}
[2] pry(main)> Settings.cool.saweet
=> "nested settings"
[3] pry(main)> Settings.awesome_setting
=> "Did you know 5 + 5 = 10?"
[4] pry(main)> Settings.neat_setting
=> 800
定数を一元管理できるのでスッキリしますね。
詳細に関しては公式ドキュメントを参照ください。