小さなエンドウ豆

まだまだいろいろ勉強中

【Rails】Javascript で使う変数等を環境変数にまとめる

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