先日Railsで開発中に、Configというgemで環境変数を読み込もうとしているにもかかわらず、環境変数が読み込まれず、対応に苦しんだので、その対策を紹介したいと思います。
<スポンサードリンク>
環境
バージョン
ruby 2.4.0
Rails 5.1.4
使用したgem
dotenv-rails
config
現象
今回、「config」という定数を環境ごとに管理するgemと「dotenv」という環境変数を使えるようにするgemです。
Gemfile
.env.development
そして下記のように、config/setting.ymlから環境変数を呼ぼうとした際、
環境変数がうまく読み込めておらず、設定ファイルのhostという変数をnilになってしまうという現象が起きました。
config/settings.yml
コンソール
この原因がわからず1時間ぐらいつまってしまったので対応策を残したいと思います。
<スポンサードリンク>
対応策
結論からいうと、「config」、「dotenv-rails」というgemを併用して使う場合は、Gemfileで、configより先にdotenv-railsを記述しないといけないようです。
.env.developmentとconfig/setting.ymlの内容は変更せずに、下記のようにGemfileの記述順序を変更し、bundle installし直すことで無事、config/setting.ymlで、環境変数を使えるようになりました。
Gemfile
コンソール
今回の記事が今後誰かの実装の参考になればうれしいです。
基本的にGemfileの記述順序は気にする必要はないという意見が多いのですが、調べているとこの記事の事象とは別の例でGemfileの記述順序を気にしなければいけなかった例もあるようなので、多少はGemfileの読み込み順序も気にするといいことがあるかもしれません。
もし、なにかあればコメントいただけるとうれしいので、なにかありましたらぜひコメントをお願いいたします。
よろしければフォロー、お気に入り、他の記事もお願いいたします(.. )//