どうもてぃです。
備忘録として残しておきます。
環境変数を設定し、クライアント側で表示するものを変えたいとPMから要望が合ったので、その要件を満たすために実装しました。
実装したとはいっても、そんな大したことはやっていないですが。
実行環境
helperでは環境変数を読み込んでいない
まず前提として、helperでは環境変数は読み込めていないです。
今回、gemの dotenv-rails
を使っていますが、設定していた環境変数をhelperやviewで呼び出したのですが、 nil
が返ってきました。
module UsersHelper def display_user current_user.name if ENV['IS_USER_DISPLAY_DEFAULT'] == 'true' # => ENV['IS_USER_DISPLAY_DEFAULT']がnilで返ってくる end end
こんな感じ。
.env
ファイルに IS_USER_DISPLAY_DEFAULT
を設定している状態です。
解決策
至って簡単。
helperのメソッド内で読み込み直せば良い。
module UsersHelper def display_user Dotenv.overload current_user.name if ENV['IS_USER_DISPLAY_DEFAULT'] == 'true' end end
Dotenv.load
では環境変数を変更した際に再読み込みされないようなので、 Dotenv.overload
で対応。
これで面倒なクライアントさんの要件を満たすことが出来ました。
めでたしめでたし。