vdeep

*

vdeepはプログラミング、IT、Web技術、ライフハックの事などなどを管理人okutaniがつぶやくブログです。月間13万PV〜。

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

      2017/12/10

LINEで送る
Pocket


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

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

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

LINKrailsconfig/config: Easiest way to add multi-environment yaml settings to Rails, Sinatra, Pandrino and other Ruby projects.

それでは、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.rb configの設定ファイル
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開発時の参考になれば幸いです。

この記事が気に入ったら
いいね ! しよう

Twitter で
LINEで送る
Pocket

okutani (@okutani_t) のヒトコト
定数管理がかんたんにできて便利ですね。ただ、configって名前が安直すぎてはじめて見たとき理解するのにちょっと時間がかかりました。。笑

 - Ruby on Rails

スポンサーリンク

PC用AdSense

PC用AdSense

  こちらもどうぞ

vdeepのトップページへ戻る画像です。風船の形をした島を女の子が掴んでいます。