LoginSignup
166

posted at

updated at

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

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
166