送信メール確認用にdevelopment環境ではletter_openerを使っていたのですが dockerへ移行したので動かなくなりました。。
そこで、Webインターフェースで送信メールを確認できるletter_opener_webに乗り換えました。 ただ、Rails3.2+ruby1.9.3という古い環境では簡単にはいかなかったのでメモを残します。
結論
以下の環境で無事動きました
Gemfile
group :development do gem 'public_suffix', '~> 1.4.6' gem "letter_opener", '1.4.1' gem 'letter_opener_web', '1.2.2' end
docker-compose.yml
services: web: # 他は省略 environment: - BROWSER=echo
動くようになるまでの道筋
おまけです。
public_suffixのインストールに失敗
依存gemの1つ、public_suffixのインストールで失敗しました。
public_suffix requires Ruby version >= 2.0.
そこで、ruby1.9.3をサポートしているバージョン '1.4.6' にダウングレードします。
参考にしたページ
/letter_openerを開くとエラー
/usr/local/bundle/gems/letter_opener_web-1.3.4/app/controllers/letter_opener_web/letters_controller.rb:8: unknown type of %string before_action :load_letter, only: %i[show attachment destroy]
- %i の記法は ruby2.0からのサポート
- before_action は Rails4からの機能
このため、letter_opener_web を '1.2.2' にダウングレードしました
Launchy::CommandNotFoundError のエラーが出る
このエラーは letter_opener_web の バージョン1.3.3 から rescue節でハンドリングすることで出ないようになっているのですが 1.2.2 にダウングレードしているためエラーが出てしまいます..
該当のコミット
環境変数 BROWSER をセットすることで回避します。
ブラウザでなくともコマンドにURLを渡すことさえできればエラーは出ないので 環境変数 BROWSER=echo
をセットします。
メール送信時に undefined method `html_part'
letter_opener がエラーを出しています。 以下のページによると バージョン1.4.xではエラーが出ないようなので 1.4.1 にダウングレードします。