Rails プロジェクトの環境変数を JS で使用する
Rails アプリケーションで外出したくない環境変数は .env
に書き込んで dotenv-rails
を使って呼び出すのが一般的らしいので設定してみました。
ただ、今回は mapbox という Javascript のライブラリの API token を .env
に定義したいので、Rails の環境変数を JS側でも使用できるように gon
という Gem を使って参照する方法をまとめていきます。
Gem のインストール
まずRails プロジェクト配下の Gemfile に下記を追記する。
gem 'gon' gem 'dotenv-rails'
※バージョンは今回指定していません...
それから $ bundle install
でそれぞれインストールします。
.env の設定
次に .env ファイルを作ります。
例えば、下記のように環境変数を定義します。
MAPBOX_ACCESS_KEY={{自分のAPI token}}
Rails で環境変数を扱う
Rails で定義した環境変数( MAPBOX_ACCESS_KEY
)をコントローラで使用する際は下記のように書きます。
def show p ENV['MAPBOX_ACCESS_KEY'] end
※確認のためにprint してます
ENV[key]
って感じで呼び出すことができます。便利!
Rails 環境変数を JS ファイルで使用
先程説明した gon
という Gem を使用して環境変数を JS に渡します。
まずコントローラ側で下記のように書きます。
def show gon.mapbox_access_key = ENV['MAPBOX_ACCESS_KEY'] end
これでバックエンド側での設定は終わりです。
次に JS ファイル側に下記のように書いて使用します。
mapboxgl.accessToken=gon.mapbox_access_key;
gon.{{変数名}}
で参照できるのすごく便利です。
最後に
.env は公開したくないので .gitignore などに追加しておきましょう。
参考 qiita.com