【Rails】環境変数を使ってAPI KEYを隠す方法をやってみた

2018年4月7日

今プログラミングスクールに通いながら作成中のWEBアプリはYahoo地図のAPIを利用して地図表示を行おうと思っております。
それで事前にYahoo API KEYを取得しました。

このAPI KEYですが、基本的にはプログラムに埋め込まずに環境変数に格納しておくことでセキュリティが高まるとされています。

Githubに乗せたりするときに環境変数を管理外に置くことで他者にも見られなくなりますので、それを実施してみました。

その手順を備忘録として残しています。

流れは次のようになっています。

dotenvというGemをインストール

RailsのGemfileに以下のように追記しました。

#環境変数を扱う
gem 'dotenv-rails'

コンソールからバンドルインストールを実行。

$ bundle install

.envファイルを作成

プロジェクトのトップディレクトリに.envというファイルを作成します。
この階層には他にGemfileや.gitignoreファイルがあります。

.envの中身に以下のように記述して保存しました。

YAHOO_API_KEY = ‘<自分のYahooアプリケーションID>’

この値を扱うには、Rubyの中でENV[‘YAHOO_API_KEY’]とすれば取り出せます。

.envファイルはgitの管理下から外すので、.gitignoreに以下を追記しました。

/.env

表示部分の書き方

html.erbファイル上は以下のように記述。
これはYahoo地図を表示するJavascriptです。

<script type="text/javascript" charset="utf-8" src="https://map.yahooapis.jp/js/V1/jsapi?appid=<%= ENV['YAHOO_API_KEY'] %>"></script> 

Railsのコントローラーでは以下のように記述しました。

ymap_query = 'https://map.yahooapis.jp/search/local/V1/localSearch?output=json&appid=' + ENV['YAHOO_API_KEY'] +  '&sort=match&&query=ラーメン 新宿'

これでAPIが正常に動いたので大丈夫だと思いました。