mailcatcherとletter_opener_webの使い分け

letter_openerをよく使います。ローカルの開発環境でメールが送信されたらブラウザのタブが新しく開き、メールが送信されたことがすぐにわかる。べんり。

しかし、最近Docker環境で開発することが増えたので、自動でホストマシンのブラウザタブを開くことができなくなってしまいました。どうしよう。

開発用のメールボックスをブラウザで確認するgemとして有名なのはletter_opener_webMailCatcherです。ざっと調べて所感をまとめました。

letter_opener_web

  • letter_opener の拡張
  • rails engineとして作られている
    • なので、Railsにマウントして使う
  • mailcatcherより手軽に使える一方、別プロセスからのメール(例: ワーカからメールを送信する)には対応していないという欠点もある

mailcatcher

  • SMTPサーバを別プロセスで立てる
    • dockerコンテナを一個増やさないといけないのがめんどい
  • 別プロセスからのメールでも問題ない

所感

  • ローカルでdocker-composeを利用した開発環境の場合はletter_opener_webのほうが楽そう
    • 開発環境でのActive Jobはasync(同一プロセス別スレッド)なのでdeliver_laterでも問題なくメール受け取れるはず
  • ↑以外のことをしたいならmailcatcherを使ったほうが便利そう
    • 例えば外部にデモ環境を作る、とか

結論として、とりあえずYAGNIの精神でletter_opener_webにしておくのがいいかな、という気持ちになってきました