Ruby: Rails でマルチ環境対応の設定ファイルを用意する

設定は application.rb とかで書いてもいいのですが、YAML で外部的に管理すると綺麗、使いやすいといったような理由で好みに応じて使います。

gem "config" を使います。
Sinatra とかでも使うことができます。
以前のバージョンでは gem "rails_config" という名前でした。

初期設定用のコマンドがあります。

rails g config:install

以下のファイルがざっとできます。

config/settings.yml
config/settings/#{environment}.yml
config/environments/#{environment}.yml

config/settings.local.yml
config/settings/#{environment}.local.yml
config/environments/#{environment}.local.yml

RAILS_ENV に応じて呼び出されるファイルが変わります。

上記ファイルに YAML の形式で

size: 2
computed: <%= 1 + 2 + 3 %>
section:
  size: 3
  servers: [ {name: yahoo.com}, {name: amazon.com} ]

などと書いておくと、

Setting.computed
Setting.section.servers[0].name

という感じで Ruby のコードからアクセスできるようになります。

ちなみに config 設定なのでサーバー(unicorn)を再起動すると使えるようになります。