環境毎に異なる定数を使うのは自前でやっても難しくないけど、一般的な方法の方が保守性が上がるので、一般的と思われるConfig(gem)を導入しました。
Rails6に入れましたが、昔からあまり変わってなさそう。
難しくないし、他のサイトの方が詳しいので、簡単にメモ。
Config(gem)インストール
Gemfileの最終行に追加
# Use Config gem 'config'
$ bundle install $ rails g config:install 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
【参考】ここまでのコミット内容
https://dev.azure.com/nightonly/rails-app-origin/_git/rails-app-origin/commit/88107e5bc8bd606c74281f6b1a93fa1ef92fbecc
使い方
config/settings/development.yml
config/settings/production.yml
config/settings/test.yml
上記にyaml形式で環境毎の内容を書けばOK
base_domain: localhost:3000 hoge: foo: bar
viewでの表示ならこんな感じでOK。controllerやRSpecからも同様に呼べる。
app/views/???/???.html.erb
<%= Settings['base_domain'] %> <%= Settings['hoge']['foo'] %>
config/settings.yml ←共通の定数はここに。