Rails 5.2からは何でもかんでも環境変数に設定するのではなくcredential管理機能を使おう.
Rails 6からは更に環境ごとに credentials.yml.enc
を切り替えることも可能になっている.
それでもどうしても必要になる一つの環境変数,RAILS_MASTER_KEY
を参照する方法のためだけにこの記事は参考にされたし.それにしてももう随分古い記事になるので今でも全てそのまま通用するかは分からないので,ダメだった場合は編集リクエストを下さい.
参考
- https://railsguides.jp/5_2_release_notes.html#credential%E7%AE%A1%E7%90%86
- https://techracho.bpsinc.jp/hachi8833/2018_10_09/62784#1-1
config/database.yml 内の DB のユーザ名・パスワード,また config/environments/production.rb 内のメール設定のユーザ名・パスワードなどを plain text で書いてしまうと,GitHub などにやすやすとアップ出来ない.
なので,そこは環境変数を用いることによって直接書かないようにする.
Ruby では,環境変数 VAR があれば,それに ENV['VAR'] でアクセス出来る.
よって,YAML ファイル内では例えば以下のように書けば良い.
production:
... (中略)
username: <%= ENV['DB_USERNAME'] %>
password: <%= ENV['DB_PASSWORD'] %>
通常の *.rb ファイル内では例えば以下のように書けば良い.
Appname::Application.configure do
... (中略)
ActionMailer::Base.smtp_settings = {
address: ENV['MAIL_ADDRESS'],
port: 25,
user_name: ENV['MAIL_USERNAME'],
password: ENV['MAIL_PASSWORD'],
authentication: :login,
}
end
環境変数の設定方法
rails server コマンドでの起動時に指定
VAR=abc rails server
Nginx + Passenger
/etc/init.d/nginx に以下を記載しておく.(参考 : http://qiita.com/items/83bb3fb5cb7f46484d4b)
VAR=abc ; export VAR
もしくは
export VAR=abc