Rails Diary

プログラミングの学習記録です。

letter_openerでメールが表示されない問題

パスワードリセット課題のつまずき

  • letter_openerで送信したメールを確認するも、メールに記載されたリンクから編集ページに飛ぶことができなかった。
    以下の画面になってしまう。 https://i.gyazo.com/07116987ffe8822dd3185368305709f3.png

config/environments/development.rbに以下を追加することでリンクが繋がった◎

config.action_mailer.delivery_method = :letter_opener_web
config.action_mailer.perform_deliveries = true

# 追加
config.action_mailer.default_url_options = { host: 'localhost:3000'}
  • letter_opener_webにメールが表示されない問題
    どういう状況下でリンクが上手く通らないのか検証するために、コードを消してメールを確認してを繰り返していたけれど、letter_openerを開いてもメール自体が表示されずに困った。

短時間に何度もメール送信されるのを防ぐ設定があるらしい。だからメール送信される時とされない時があったみたい。これでめちゃくちゃ悩んだ🥲

そのことについて言及されたやり取り(翻訳)

deliver_reset_password_instructions! doesn't actually send the email · Issue #701 · NoamB/sorcery · GitHub

Deliver_reset_password_instructions!実際にはメールを送信しません。メーラーアクションの.deliverまたは.deliver_nowコマンドでこれを指定する必要があります。

Deliver_reset_password_instructionsがメールオブジェクトを返すということですか?その上でdeliverメソッドを呼び出す必要がありますか?または、単にこのメソッドは機能せず、falseを返しますか?

配信を頻繁にトリガーするためですか?構成には、次のものがあります。 ハンマーによる保護、別の電子メールの送信を許可するまでの待機時間(秒単位)。 デフォルト:5 * 60 user.reset_password_time_between_emails =

これはハンマーによる保護かもしれませんが、Railsの開発環境では、メーラー(デフォルトではUserMailer)で発生する例外はデフォルトで無視されることもわかりました。 例外を見つけるには、config / environment /development.rbでこれを設定します。 config.action_mailer.raise_delivery_errors = true これで、例外に関する情報を取得する必要があります。 プロダクションのように機能するように、これをコミットすることをお勧めします。

config/initializers/sorcery.rb https://i.gyazo.com/f078a2c043fc5a3a7d0dd8e1aa9885a0.png

https://i.gyazo.com/36295bc0c4ed3aa410bc817fa4611db4.png

のように変更すると自分の場合はNoMetthodErrorになってしまった。。よく分からない。ひとまずは連続して送ると上手く表示されない設定ということだけ覚えておく。