Rails アプリ開発中、メール送信機能をテストするには Gmail の SMTP サーバーを使うのが手っ取り早い。
その際、ActionMailer の設定に Gmail のアカウントとパスワードを書く必要があるけど、 開発者ごとに違うし、そもそもアカウントとパスワードをソースコードに直接書きたくない。
そういった環境や開発者ごとに異なる情報を記述するために、 dotenv(dotenv-rails) を導入してみた。
Gemfile に
gem "dotenv-rails", groups: [:development, :test]
を追加して bundle install
。
プロジェクトのルートディレクトリに .env ファイルを作成し、環境変数にセットしたい情報を記述する。
GMAIL_ADDRESS="your-address@gmail.com" GMAIL_PASSWORD="your-password"
すると、config/environment/development.rb の ActionMailer の設定が次のように書ける。
config.action_mailer.delivery_method = :smtp config.action_mailer.raise_delivery_errors = true config.action_mailer.smtp_settings = { enable_starttls_auto: true, address: "smtp.gmail.com", port: 587, domain: "smtp.gmail.com", authentication: "plain", user_name: ENV["GMAIL_ADDRESS"], password: ENV["GMAIL_PASSWORD"] }
bin/rails server
で開発サーバーを起動すれば、.env ファイルに書いた環境変数が自動で読み込まれて ENV にセットされる。
.env ファイルをリポジトリから除外するように .gitignore に追加しておけば、 Gmail のアカウントとパスワードをソースコードに記述せずに、 心置きなくメール送信をテストできる。