Railsで扱う定数はどこで定義すべきか?
Railsでアプリを書いているとよくあることですが、上限値とかデフォルト値などのマジックナンバーがソースに入ってきます。そんな定数をコードの中へ埋め込むのは気持ち悪いので、どこかグローバルに参照できるところへ出しておきたいところ。
どこに置くか
アプリ全体で共有する定数は「config/environment.rb」に置けばいいようです。開発、テスト、本番ごとに切り替える必要がある定数は、「config/environments/development.rb」などに置いておくようです。
environment.rbに定数を書いたときの注意
これで小一時間はまりました。「environment.rb」はWEBサーバ(WEBrickやMongrelなど)起動時に読み込まれるため、WEBサーバを立ち上げたまま変更しても反映しません。
リスタートが必要です!
その他の方法
- YMLファイルに設定を書いて、こんな感じでアクセスする。(検証はしてません)
myconfig = YAML.load(File.open("#{RAILS_ROOT}/config/myconfig.yml"))
- Rubyファイルに設定を書いて、requireする。
- データベースに設定用のテーブルを作る。
参考
- こちら(→http://techno.hippy.jp/rorwiki/?HowtoAddYourOwnConfigInfo)で、リスタートの件を見つけなかったら、いつまでもああでもないこうでもないとやってました。感謝です。