【Rails】「config」gemを使って定数管理をおこなう方法
2017/12/10
こんにちは、okutani(@okutani_t)です。「config」gemを利用することで、Ruby on Railsで便利に定数を管理することができます。
定数はYaml形式ですっきり、かつ見やすく管理することができます。
config gemのGitHubリポジトリは以下です。
それでは、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開発時の参考になれば幸いです。
Web開発のお仕事を募集しています
フリーランスのエンジニアとして、Webシステム開発のお仕事依頼を随時募集しています(現在の業務量によってお受けできない場合もあります)。
「Ruby on Rails」「JavaScript(jQuery, Reactなど)」「HTML + CSS」を用いたシステム開発、「Heroku」等を用いたサーバー構築・運用、「Git」や「GitHub」を利用したソーシャルコーディングなどに対応しています。
ご依頼を検討している方は、下記リンク本ブログからのお問い合わせ、もしくはokutaniのポートフォリオからご連絡ください。
LINKお問い合わせ
スポンサーリンク