LoginSignup
13
17

More than 5 years have passed since last update.

Rails 環境毎に異なる定数を管理するのに便利な gem rails_config を導入する

Posted at

環境 ( development, test, production) 毎に異なる定数の管理を、簡単に行う事が出来る、rails_config という gem をインストール・設定を行う。

GitHub リポジトリ rails_config
(https://github.com/railsconfig/rails_config)

※ インストールの方法から、利用方法までは上記 GitHub に全てまとまっています。

前提

バージョン
Ruby 2.1.1
Rails 4.2.0
rails_config 0.4.2

1. インストールと初期化

Gemfile へ rails_config を追記

Gemfile
gem 'rails_config'

Gemfile をインストール。
( rails プロジェクト内に閉じた状態で gem をインストールしたいため --path オプションを利用。 )

$ bundle install --path vendor/bundle


デフォルトの初期ファイルセットを作成する。

$ bundle exec rails g rails_config:install

以下のファイルが作成されます。

config/initializers/rails_config.rb
下記の YAML をパースした定義にアクセスするためのクラス。
デフォルトは Settings という名前となっている。

config/settings.yml
全ての環境で共通して利用する設定

config/settings.local.yml
ローカル環境のみで利用する設定
( バージョン管理の対象外 )

config/settings/development.yml
開発環境のみで利用する設定

config/settings/production.yml
本番環境のみで利用する設定

config/settings/test.yml
テスト環境のみで利用する設定

また、.gitignore に以下の記述が追記されます。

.gitignore
config/settings.local.yml
config/settings/*.local.yml
config/environments/*.local.yml

これによって config/settings.local.yml がコミットの対象外となります。
ローカルで開発を行っているような場合に、誤ってコミットされる事が無くなるので、その環境独自の設定も気兼ねなく記述する事が出来ます。

同じ設定を複数のファイルで記述した際の読み込みの優先度としては以下のようになります。

settings.local.yml > ( production.yml, test.yml, development.yml ) > settings.yml

2. 設定ファイルへの記述

view のセレクトボックスへセットする値を設定ファイルで管理する想定。

config/settings.yml
cuisine_type:
  '1': '和食'
  '2': '中華'
  '3': 'イタリアン'

3. 参照元の記述

view ファイル (ERB) で、実際に上記の設定を呼び出す例。

<p>
  <strong>Cuisine type:</strong>
  <%= Settings.cuisine_type[ @store.cuisine_type ] %>
</p>

実際の戻り値は RailsConfig::Options クラスのインスタンスのため、Hash のメソッドを利用したい場合は to_h してから。
※ form のセレクトボックスへ値をセットする際等。

<div class="field">
    <%= f.label :cuisine_type %><br>
    <%= f.select :cuisine_type, Settings.cuisine_type.to_h.invert %>
  </div>

4. おまけ

同じような機能を提供してくれる gem として settingslogic があります。
rails_config と違って、1 つのファイル内へ production, test, development の定義を記載するため、規模の小さなアプリケーションの場合は settingslogic のほうが見通しが良くなるかもしれません。

13
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
17