✉️
Deviseのパスワードリセット機能を本番環境に設定する
開発環境
- macOS
- VSCode
- Rails 7.1.3.3
- ruby-3.2.3
- PostgreSQL 16.2
行いたいこと
-
本番環境
でDeviseのパスワードリセット機能を使い、指定されたメールアドレスに
パスワードリセットのメール
を送信する。
前提として...
- 開発環境でDeviseによるパスワードリセット機能の実装が済んでいる。
- アプリのデプロイ先は
Heroku
です。
実装内容
-
Google
でアプリパスワード
を生成する。 - 生成した
アプリパスワード
を使いSMTP
を設定する。 - Heroku側で
環境変数
を設定する。
Googleでアプリパスワードの生成
・今回はアプリ用に新規でGmailを作成しました。まずGoogleのアカウントにログインします。
・2段階承認をオンにする
・セキュリティ
⇨ Googleにログインする方法
⇨ 2段階承認プロセス
↓
・アプリパスワードの生成
・検索欄に「アプリパスワード
」と入力する。⇨アプリパスワード(セキュリティ)
こちらから生成する
[ページを翻訳機能で日本語にしている場合は検索欄からは以下のように表示されない]
アプリパスワードを使い SMTP を設定する
・以下のファイルにそれぞれ追記と修正をする
・.env(隠しファイル)
・他のファイルで直接メールアドレス
とパスワード
の記載をしないように隠しファイル
に記載する。
・他のファイルではGMAIL_USERNAME
、GMAIL_PASSWORD
と記載する
.env
GMAIL_USERNAME = メールアドレス
GMAIL_PASSWORD = ・・・・・・・(空欄は開けず詰めて記載)
・ .gitignore(.envファイルの読み込み)
.gitignore
/.env
・ config/environments/production.rb
config/environments/production.rb
host = 'デプロイ先のアプリのURL'
config.action_mailer.default_url_options = { protocol: 'https', host: host }
config.action_mailer.raise_delivery_errors = true
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
port: 587,
domain: 'デプロイ先のアプリのURLのドメイン',
address: "smtp.gmail.com",
user_name: ENV["GMAIL_USERNAME"] ,
password: ENV["GMAIL_PASSWORD"] ,
authentication: :plain,
enable_starttls_auto: true
}
・ config/environments/development.rb
config/environments/development.rb
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
address: 'smtp.gmail.com',
port: 587,
domain: 'localhost',
user_name: ENV['GMAIL_USERNAME'],
password: ENV['GMAIL_PASSWORD'],
authentication: 'plain',
enable_starttls_auto: true
}
・ config/initializers/devise.rb(差出人のメールアドレス)
config/initializers/devise.rb
config.mailer_sender = ENV['GMAIL_USERNAME']
・ Gemfile(環境変数の読み込み)
・.envファイル
に記載された環境変数を自動的に読み込み、Railsアプリケーション内で変数を利用できるようになる。
Gemfile
gem 'dotenv-rails'
Heroku側で環境変数の設定
・ 環境変数の設定手順
・環境変数を設定したいアプリのダッシュボードから、
設定
⇨設定変数
⇨設定変数を表示する
・今回は以下の2つを登録しました。
[鍵]GMAIL_USERNAME
[価値]メールアドレス
[鍵]GMAIL_PASSWORD
[価値]パスワード16桁
以上でDeviseのパスワードリセット機能の本番環境設定は完了です。
Discussion