Ruby on Rails、Herokuでソース公開したくない値に環境変数を使用

Programming プログラミング

GitHubなどでソース公開する場合、データベースのユーザ名やパスワードなどは公開したくない。

また、FacebookアプリのFacebookアプリID、Facebookアプリシークレットキーも同様である。

なので、そういう値は環境変数を使用する。

スポンサーリンク

Rubyファイル

まずは、Rubyファイル。

ENV」を使用すると、以下のように環境変数の値を取得できる。

#FacebookアプリID、Facebookアプリシークレットキーを環境変数より取得
app_id = ENV["FACEBOOK_APP_ID"]
app_secret = ENV["FACEBOOK_APP_SECRET"]

database.ymlファイル

続いて、ymlファイル。

こちらも同様に「ENV」を使用し、「<%= ~ %>」で埋め込むと、以下のように環境変数の値を取得できる。

development:
  adapter: postgresql
  encoding: unicode
  database: <%= ENV&#91;"DB_DEV_NAME"&#93; %>
  pool: 5
  username: <%= ENV&#91;"DB_DEV_USER"&#93; %>
  password: <%= ENV&#91;"DB_DEV_PASS"&#93; %>
test:
  adapter: postgresql
  encoding: unicode
  database: <%= ENV&#91;"DB_TEST_NAME"&#93; %>
  pool: 5
  username: <%= ENV&#91;"DB_TEST_USER"&#93; %>
  password: <%= ENV&#91;"DB_TEST_PASS"&#93; %>
production:
  adapter: postgresql
  encoding: unicode
  database: <%= ENV&#91;"DB_PRODUCT_NAME"&#93; %>
  pool: 5
  username: <%= ENV&#91;"DB_PRODUCT_USER"&#93; %>
  password: <%= ENV&#91;"DB_PRODUCT_PASS"&#93; %>

ローカルとHerokuの環境変数に値を設定

Windowsの場合の環境変数への設定は、下記の開発環境(ローカル)のやつ。

Herokuの場合は、下記の本番環境(Heroku)のように「heroku config:set」で設定する。

最後の「cmd」でコマンドプロンプト画面を閉じないようにする。

なお、俺はこんな感じで環境変数を設定するファイルを「settings.bat」として、プロジェクトのフォルダ直下に置いて、Railsを触る前にまず実行している。

REM 開発環境(ローカル)
SET FACEBOOK_APP_ID=XXXXXXXXXXXXXXX
SET FACEBOOK_APP_SECRET=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

REM 本番環境(Heroku)
heroku config:set FACEBOOK_APP_ID=XXXXXXXXXXXXXXX
heroku config:set FACEBOOK_APP_SECRET=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

REM コマンドプロンプト画面を閉じない
cmd

うん、なかなか便利だ。

コメント

タイトルとURLをコピーしました