woshidan's loose leaf

ぼんやり勉強しています

定数値を環境ごとに分岐したいだけならRails.env.xxx? やconfig/environments以下のファイルに値を書くより環境変数にくくり出した方がよさそう

Railsで開発していると

if Rails.env.production?
  # production環境用の処理
elsif Rails.env.staging?
  # staging環境用の処理
else
  # それ以外の環境用の処理
end

という風に環境ごとの処理を書いたり、config/environments以下のproduction.rbやstaging.rb, development.rbに config.xxx と各環境用の値を設定して、Rails. configuration.xxxと呼び出すことができます。

しかし、環境ごとに変わる部分が単なる定数値であれば環境変数にして

ENV['SOME_VALUE']

のように参照することでproduction.rbやstaging.rbに値をハードコーディングせずに済ませることができます(代わりにdotenvなどを使い、.envファイルを共有したりします)。

こうしておくと環境ごとの値を変更したい場合リポジトリにコードをコミットせず済ませることができるので、処理の流れは変更しないが利用する外部リソースのURIなどを試行錯誤するときなどでは楽になります。

参考

railsdoc.com

qiita.com

pikawaka.com