LoginSignup
0
2

More than 3 years have passed since last update.

Rails Tutorialの知識から【ポートフォリオ】を作って勉強する話 #18.5 環境変数, Gmail送信設定編

Last updated at Posted at 2020-02-05

こんな人におすすめ

  • プログラミング初心者でポートフォリオの作り方が分からない
  • Rails Tutorialをやってみたが理解することが難しい

前回:#18 EC2環境構築, Nginx+Puma+Capistrano編
次回:#19 Docker編

今回の流れ

  1. Railsの環境変数を設定する
  2. 本番環境でのGmailの送信を設定する

Railsの環境変数を設定する

Rails5.2以降の環境変数の設定には、credentials.yml.encを使います。
デフォルトで.gitignoreになり暗号化されているのでおすすめです。
以下のように設定します。

shell
EDITOR=vim rails credentials:edit
credentials.yml.enc
# aws:
#   access_key_id: XXXX
#   secret_access_key: XXXX

# Used as the base secret for all MessageVerifiers in Rails, including the one protecting cookies.
secret_key_base: XXXX

おそらくこんな感じかと思うので、以下のように環境変数を追加します。

credentials.yml.enc
# 省略
a:
  b: bbb
  c: ccc
# 省略

以上で設定が終わりました。
試しにコンソールで値を引き出してみます。
値を引き出すには、以下のように行います。

shell
$ rails c
> Rails.application.credentials.a[:b]
=> "bbb"

この後のGmailの送信の設定には、このcredentials.yml.encを使います。

本番環境でのGmailの送信を設定する

前提として本番環境には、EC2を使っています。
またActionMailerの生成はすでに行なっているものとします。
(お済みでない方は#12などをご確認ください。)

それではGmailを送信の設定をします。
ここでの手順は以下の通りです。

  • Googleアカウントのアプリパスワードを有効にする
  • production.rbの設定を変更する
  • 環境変数を設定する

Googleアカウントのアプリパスワードを有効にする

お手持ちのGoogleアカウントのアプリパスワードを有効にします。
有効にするまでに、いくつかの手順を踏みます。

  1. googleアカウント → 画面左ダッシュボード『セキュリティ』 → Googleへのログイン『2段階認証プロセス』 → 有効にする
  2. googleアカウント → 画面左ダッシュボード『セキュリティ』 → Googleへのログイン『アプリパスワード』 → 16桁のパスワードをコピーする

これで次の手順に使うパスワードを手に入れました。

production.rbの設定を変更する

Gmail用に設定を変更します。

config/environments/production.rb
  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.default_url_options = { host: Rails.application.credentials.host_server[:ip] }
  ActionMailer::Base.smtp_settings = {
    :address        => 'smtp.gmail.com',
    :port           => '587',
    :authentication => :plain,
    :user_name      => Rails.application.credentials.gmail[:user_name],
    :password       => Rails.application.credentials.gmail[:password],
    :domain         => 'gmail.com',
    :enable_starttls_auto => true
  }

先ほど見かけた、環境変数を引き出す記述があります。
最後はこれが動作するよう、環境変数を設定します。

環境変数を設定する

環境変数の設定です。
送信に使うアドレスやアプリパスワードはここに記述します。

credentials.yml.enc
host_server:
  ip: XX.XX.XX.XX # EC2のIPアドレス

gmail:
  user_name: hogehoge@gmail.com # Gmailアドレス
  password: hogehoge # コピーしたアプリパスワード

これで送信の設定が完了しました。

参考になりました↓
【Rails】メール送信設定 〜gmail利用〜


前回:#18 EC2環境構築, Nginx+Puma+Capistrano編
次回:#19 Docker編

0
2
0

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
  3. You can use dark theme
What you can do with signing up
0
2