こんにちは、皆さん!
今回はRailsにおいて環境変数を安全に設定していきたいと思います。
- トピック:
- 学習した内容:
- Herokuですごく簡単に環境変数を設定できる!
- リソース:
環境変数とは?
なぜ環境変数を使うのか?
なぜ環境変数を安全に保護しないといけないのか?
どうやって安全にキープするのか?
ENV['API_KEY']
ローカルでは他のファイルに保存しておけば、アクセスできます。
プロダクション、つまり、オンラインではconfigに環境変数を保存すれば安全にキープできます。
では、試してみましょう!!
おススメはそのコードをダウンロードして、この記事通りに見て、そして、ローカルやHerokuで試してみることです。
まず、リソースのウェブ通りに
config/initializers/environment_variables.rb
を作って下記のコードをコピーペースト!
module EnvironmentVariablesExample class Application < Rails::Application config.before_configuration do env_file = Rails.root.join("config", 'environment_variables.yml').to_s if File.exists?(env_file) YAML.load_file(env_file)[Rails.env].each do |key, value| ENV[key.to_s] = value end # end YAML.load_file end # end if File.exists? end # end config.before_configuration end # end class end # end module
簡単に説明すると、config
フォルダー内のenvironment_variables.yml
が存在するか調べて、あるのなら、ENV[]
に内容を保存できます。
config/environment_variables.yml
は下記のような内容で大丈夫です。
このファイルを忘れずに.gitignore
に追加してください!!
development: GMAIL_USERNAME: myemail@gmail.com GMAIL_PASSWORD: monkey123 production: GMAIL_USERNAME: myemail@mydomain.com GMAIL_PASSWORD: myproductionpassword123
ここで、変数の名前や内容を好きなように設定できます。
僕は今回のコードの中で下記のように環境変数にアクセスしています。
<%= ENV['GMAIL_USERNAME'] %>
ここまではローカルの場合です。ローカルとHerokuでそれぞれサイトを開いて確認してみてください。違いが分かりましたか?
Heroku上で何かが足りないと思ったら、正解です。実は、肝心の環境変数を含んだファイルは危険なため、Herokuにはプッシュしません。ですので、Heroku上では必要な内容へアクセスできないのです。
では、次はHerokuでどうやって設定するかです。
まずはHerokuのconfigを確認してみましょう!
$ heroku config
すると、下記のような内容が出てきます。(いくつか内容を消したものがありますが)
DATABASE_URL: LANG: en_US.UTF-8 RACK_ENV: production RAILS_ENV: production RAILS_LOG_TO_STDOUT: enabled RAILS_SERVE_STATIC_FILES: enabled SECRET_KEY_BASE:
そこで、下記のコマンドを入力して、configに環境変数を追加しましょう!
$ heroku config:set GMAIL_USERNAME=myemail@gmail.com
GMAIL_USERNAME
のところは好きに変えて自分の必要な環境変数を追加しましょう!
ここで、またコマンドでconfigを開くと、
GMAIL_USERNAME: myemail@gmail.com
この内容が追加されています。
そうすると、Herokuのサイト上でもアクセスできるようになります!!
まとめ
僕もはじめはこんなに簡単に設定できるのかと感心しました。
みなさんの役に立つことを願います!
では、また次回まで✌