こんな人におすすめ
- プログラミング初心者でポートフォリオの作り方が分からない
- Rails Tutorialをやってみたが理解することが難しい
前回:#18 EC2環境構築, Nginx+Puma+Capistrano編
次回:#19 Docker編
今回の流れ
- Railsの環境変数を設定する
- 本番環境でのGmailの送信を設定する
Railsの環境変数を設定する
Rails5.2以降の環境変数の設定には、credentials.yml.encを使います。
デフォルトで.gitignoreになり暗号化されているのでおすすめです。
以下のように設定します。
EDITOR=vim rails credentials:edit
# 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
おそらくこんな感じかと思うので、以下のように環境変数を追加します。
# 省略
a:
b: bbb
c: ccc
# 省略
以上で設定が終わりました。
試しにコンソールで値を引き出してみます。
値を引き出すには、以下のように行います。
$ rails c
> Rails.application.credentials.a[:b]
=> "bbb"
この後のGmailの送信の設定には、このcredentials.yml.encを使います。
本番環境でのGmailの送信を設定する
前提として本番環境には、EC2を使っています。
またActionMailerの生成はすでに行なっているものとします。
(お済みでない方は#12などをご確認ください。)
それではGmailを送信の設定をします。
ここでの手順は以下の通りです。
- Googleアカウントのアプリパスワードを有効にする
- production.rbの設定を変更する
- 環境変数を設定する
Googleアカウントのアプリパスワードを有効にする
お手持ちのGoogleアカウントのアプリパスワードを有効にします。
有効にするまでに、いくつかの手順を踏みます。
- googleアカウント → 画面左ダッシュボード『セキュリティ』 → Googleへのログイン『2段階認証プロセス』 → 有効にする
- googleアカウント → 画面左ダッシュボード『セキュリティ』 → Googleへのログイン『アプリパスワード』 → 16桁のパスワードをコピーする
これで次の手順に使うパスワードを手に入れました。
production.rbの設定を変更する
Gmail用に設定を変更します。
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
}
先ほど見かけた、環境変数を引き出す記述があります。
最後はこれが動作するよう、環境変数を設定します。
環境変数を設定する
環境変数の設定です。
送信に使うアドレスやアプリパスワードはここに記述します。
host_server:
ip: XX.XX.XX.XX # EC2のIPアドレス
gmail:
user_name: hogehoge@gmail.com # Gmailアドレス
password: hogehoge # コピーしたアプリパスワード
これで送信の設定が完了しました。
参考になりました↓
【Rails】メール送信設定 〜gmail利用〜