Help us understand the problem. What is going on with this article?

設定ファイル内のパスワード等を環境変数で隠すための How to 色々

More than 1 year has passed since last update.

Rails 5.2からは何でもかんでも環境変数に設定するのではなくcredential管理機能を使おう.

Rails 6からは更に環境ごとに credentials.yml.enc を切り替えることも可能になっている.

それでもどうしても必要になる一つの環境変数,RAILS_MASTER_KEY を参照する方法のためだけにこの記事は参考にされたし.それにしてももう随分古い記事になるので今でも全てそのまま通用するかは分からないので,ダメだった場合は編集リクエストを下さい.

参考


config/database.yml 内の DB のユーザ名・パスワード,また config/environments/production.rb 内のメール設定のユーザ名・パスワードなどを plain text で書いてしまうと,GitHub などにやすやすとアップ出来ない.

なので,そこは環境変数を用いることによって直接書かないようにする.

Ruby では,環境変数 VAR があれば,それに ENV['VAR'] でアクセス出来る.

よって,YAML ファイル内では例えば以下のように書けば良い.

config/database.yml
production:
... (中略)
  username: <%= ENV['DB_USERNAME'] %>
  password: <%= ENV['DB_PASSWORD'] %>

通常の *.rb ファイル内では例えば以下のように書けば良い.

config/environments/production.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)

/etc/init.d/nginx
VAR=abc ; export VAR

もしくは

/etc/init.d/nginx
export VAR=abc

Heroku

コマンドラインで以下を実行.(参考 : https://devcenter.heroku.com/articles/config-vars)

heroku config:add VAR=abc
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away