【Rails】configのgemで環境変数が読み込まれない原因を徹底解説

先日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の読み込み順序も気にするといいことがあるかもしれません。

もし、なにかあればコメントいただけるとうれしいので、なにかありましたらぜひコメントをお願いいたします。

よろしければフォロー、お気に入り、他の記事もお願いいたします(.. )//

 

 

 

スポンサードリンク



コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA