configでRailsアプリの設定情報を集約的に管理する
はじめに
アプリ全体で利用されるグローバルな設定情報、これを一元的に管理したいというのは、非常に理にかなった要求です。そうした思いを実現するのがconfigというgemです。ちなみに昔はrails_configという名前でした。
実装
configをインストールします。
gem install config
generatorが用意されているので、これを実行します。
$ bundle exec rails g config:install
Running via Spring preloader in process 19187
create config/initializers/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
生成されたYAMLファイルはグローバルな設定情報を記載する為のものです。settings.yamlには全ての環境に影響を与える設定を記述します。環境の名前が付与されているファイルには、環境ごとの設定を記述します。ERBによる記述も可能です。
設定した値は以下のような形で参照できます。
pp Settings.foo.bar
併せてYAMLファイル内にちゃんと値が設定されているか否か、バリデーションを行うことも可能です。こちらは設定の値を環境変数などで自動的に流し込むよう指示している場合に、とても便利です。
Railsでアプリを開発する場合は、こちらのconfigやdotenv-railsといったgemを利用するケースが多いかと思います。また、二つを同時に利用する場合は、Gemfile内で先にdotenv-railsを指定する必要があります。