タイトルどおりですが、ちょっとハマったのでメモ
ジョブ実行完了したらメールを飛ばしたくて、以下のように実装しました
Mailer.send_mail(user).deliver_later
で、軽く動作確認…
ログでキューに入ってるの確認、
rails consoleで上記実行してletter_openerで見れた
ヨシっと思っていざ検証環境に上げたらメールが飛ばない、、、
色々デバッグしたりしてもわからず、ネット検索でも特に引っかからず、参ったなぁとrailsのドキュメントを開くと……
一般に、非同期キュー(.deliver_laterでメールを送信するなど)はRakeタスクに書いても動きません。Rakeが終了すると、.deliver_laterがメールの処理を完了する前にインプロセスのスレッドプールを削除する可能性があるためです。この問題を回避するには、.deliver_nowを用いるか、development環境で永続的キューを実行してください。
思いっきり書いてありましたorz
deliver_nowにしたら何事もなくメール飛んできました
Mailer.send_mail(user).deliver_now
ちなみにdeliver_later
にしたのは、既存処理がそうなってて、まあ非同期の方がいいよね〜となんとなく引っ張ってきたからでした
というわけで、jobからメール飛ばす時はdeliver_now
を使いましょう