読者です 読者をやめる 読者になる 読者になる

FAKELOG

思うがままに書き殴るブログ

『rails_config』で環境毎に定数を管理しよう!

Gem Rails

rails_config

定数を開発環境毎に YAML ファイルで管理出来るプラグイン。

公式リポジトリ

The Ruby Toolbox


Rails で試してみよう!

Gemfile に rails_config を記述する。

# Gemfile
gem 'rails_config'

コンソールでコマンドを実行すると、必要となる YAML ファイル一式が自動生成される。

$ bundle install
$ rails g rails_config:install
    create  config/initializers/rails_config.rb
    create  config/settings.yml
    create  config/settings.local.yml
    create  config/settings
    create  config/settings/development.yml
    create  config/settings/production.yml
    create  config/settings/test.yml
    append  .gitignore

各種ファイルの役割は以下。

  • config/initializers/rails_config.rb

定義した定数にアクセスする為のクラス名称を定義する。デフォルトは「Settings」になっている。

  • .gitignore

ファイル名称に「local」が含まれる YAML ファイルは、全てローカル環境専用のファイルとみなされる為、これらのファイルをバージョン管理に含めないような定義が追記される。

  • config/settings.local.yml

ローカル環境専用の YAML ファイル。ローカル環境で動作させている場合は、全ての YAML ファイルに記述されている定数より優先して使用される。ローカル環境のみ、別の定数を割り当てたい時に使用する。

  • config/settings.yml

全ての環境(development / test / production)のベースとして使用される。環境に左右されない定数を定義したい時に使用する。

  • config/settings/development.yml

開発環境でのみ、別の定数を割り当てたい時に使用する。「config/settings.local.yml」との違いは、個々人のローカル環境毎に異なる定数なのか、開発環境毎に異なる定数なのかのみ。

  • config/settings/test.yml

テスト環境でのみ、別の定数を割り当てたい時に使用する。

  • config/settings/production.yml

本番環境でのみ、別の定数を割り当てたい時に使用する。

利用方法

利用する時は以下のような感じで。

# config/settings.yml
service_name: "Service Name
service:
  tag_line: "Rails configuration plugin"
$ rails c

1.9.2-head :001 > Settings.service_name
  => "Service Name"
1.9.2-head :002 > Settings.service.tag_line
 => "Rails configuration plugin"

どんな感じ?

同様の機能を持つ settings_logic というプラグインもあるが、こちらは各種ファイルの自動生成コマンドも用意されているし、ローカル環境専用ファイルも用意されているので非常に便利。