QA@IT

Railsでアプリケーション固有の設定を持たせたい

8559 PV

Railsでアプリケーション固有の設定を持たせたいときに、どこに保存するのがよいでしょうか。
可能であれば、開発時と本番時と設定を切り替えたりしたいです。

利用しているRailsのバージョンは3.2です。

回答

リポジトリにコミットして構わない設定なら Rails::Application.config を使うのが手っ取り早いです。

# config/applicaiton.rb
module Awesome
  class Application < Rails::Application
    config.my_setting = 'foo' # デフォルトの設定
  end
end
# config/environments/production.rb
Awesome::Application.configure do
  config.my_setting = 'bar' # production 環境用の設定
end
Awesome::Application.config.my_setting #=> 'foo' or 'bar'

参考: http://blog.carbonfive.com/2011/11/23/configuration-for-rails-the-right-way/

編集 履歴 (0)
  • ありがとうございます! URLも参考になりました。 -

settingslogic を使って、アプリケーションの設定を yml ファイルに保存する方法が一番手軽に実現できるので便利です。

この方法で満たされない要件がある場合は教えてください。

編集 履歴 (0)
  • ありがとうございます! 最近の流行はsettingslogicだと聞いていました。 -

rails-settings-cached を使って、DBで設定内容を保存するできますので、ネットで自由に変更できます。

rails-settings よりスペードが早いです。

編集 履歴 (0)
  • ありがとうございます! DBに設定を持たせたいときには便利そうなgemで参考になりました。 -

定数管理であればrails_configもシンプルで良いかと思います。

rails gコマンドで初期ファイルも作ってくれて、config/settings配下に環境ごとの設定もファイル別で記述出来ます。
config/settings.local.ymlなどでローカル環境専用の定数も設定出来ます。

rails g rails_config:install
config/settings.yml
config/settings/development.yml
config/settings/production.yml
config/settings/test.yml

railsjedi/rails_config
https://github.com/railsjedi/rails_config

rails_configで環境毎に定数を管理しよう! - SCRABBLE☆NOTE
http://fakestarbaby.github.com/blog/2012/01/12/rails-config-how-to/

編集 履歴 (0)
  • rails_configも人気のgemですね〜。ありがとうございます! -
ウォッチ

この質問への回答やコメントをメールでお知らせします。