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["DB_DEV_NAME"] %> pool: 5 username: <%= ENV["DB_DEV_USER"] %> password: <%= ENV["DB_DEV_PASS"] %> test: adapter: postgresql encoding: unicode database: <%= ENV["DB_TEST_NAME"] %> pool: 5 username: <%= ENV["DB_TEST_USER"] %> password: <%= ENV["DB_TEST_PASS"] %> production: adapter: postgresql encoding: unicode database: <%= ENV["DB_PRODUCT_NAME"] %> pool: 5 username: <%= ENV["DB_PRODUCT_USER"] %> password: <%= ENV["DB_PRODUCT_PASS"] %>
ローカルと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
うん、なかなか便利だ。
コメント