vdeep logo

okutaniの技術とか雑記とかのBLOG.

【Rails】「config」gemを使って定数管理をおこなう方法

2017/9/17

2025/7/31

https://res.cloudinary.com/vdeep/image/upload/v1753972704/articles/rubyonrails-config-gem-580x358_ui4n4b.jpg

こんにちは、okutani(@okutani_t)です。「config」gemを利用することで、Ruby on Railsで便利に定数を管理することができます。

定数はYaml形式ですっきり、かつ見やすく管理することができます。

config gemのGitHubリポジトリは以下です。

rubyconfig/config

それでは、Ruby on Railsにconfig gemを導入して定数管理する方法についてみていきましょう。

configの導入

Gemfileに以下を記述します。

gem 'config'

bundlerを使って導入。今回は--pathオプションをつけてプロジェクト直下に導入しました。

$ bundle install --path vendor/bundle

これでconfigの導入は完了です。

configの初期設定

以下のコマンドを実行して、configの初期設定をおこなっていきます。

$ bundle exec rails g config:install
Running via Spring preloader in process 30847
      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

「config/」以下にいろいろとconfig関連のファイルが生成されました。

それぞれのファイルの役割は以下のとおりです。

config/initializers/config.rbconfigの設定ファイル
config/settings.ymlすべての環境で利用する定数を定義
config/settings.local.ymlローカル環境のみで利用する定数を定義
config/settings/development.yml開発環境のみで利用する定数を定義
config/settings/production.yml本番環境のみで利用する定数を定義
config/settings/test.ymlテスト環境のみで利用する定数を定義

.gitignoreには以下の内容が自動で追記されます。

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

基本的には「config/settings.yml」を編集していき、環境ごとに定数を定義したい場合はそれぞれ対応するファイルを編集していけばOKですね。

ちなみに、settings.local.ymlはGit管理から外れているので、共有するとまずい項目はこちらに定義すればOKです。

定数を定義

それでは、実際に「config/settings.yml」に定数を定義してみましょう。今回は次のように定義してみました。

service:
  name: 'vdeep'
  url: 'http://vdeep.net'

Yaml記法で書けるので、すっきり見やすくて良いですね。

動作確認

それでは、定義した定数が利用できるか確認してみましょう。

Railsコンソールを立ち上げて確認してみます。

$ bundle exec rails c
[1] pry(main)> Settings.service.name
=> "vdeep"
[2] pry(main)> Settings.service[:name]
=> "vdeep"
[3] pry(main)> Settings[:service][:name]
=> "vdeep"

上記のように、定義した定数を呼び出すことができました。

当たり前ですが、ControllerやViewなどで同じように「Settings.〜」で呼び出すことができるので試してみてください。

もし、ControllerやViewで設定した定数がうまく呼び出せない場合はサーバーを再起動させてみてください。

また、Settingsという名前は「config/initializers/config.rb」で変更することができます。

Settingsという名前が気に入らない場合は変更してみるのもありですね。

まとめ

本記事ではconfig gemの導入・利用方法について解説しました。

Railsで定数管理に迷ったらconfig gemを利用してみてください。

また、「dotenv」という環境変数を管理するgemもあるので、気になる方は合わせて参考にしてみてください

【Rails】『dotenv』で環境変数を管理する方法 | vdeep

Ruby on Rails開発時の参考になれば幸いです。