1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ActionMailer実行時にletter_openrが原因で落ちた

Last updated at Posted at 2020-11-22

##表示されていたエラー
Launchy::CommandNotFoundError Exception: Unable to find a browser command. If this is unexpected, Please rerun with environment variable LAUNCHY_DEBUG=true or the '-d' commandline option and file a bug

##経緯と概要
vagrantがどうこうという記事ばかりで参考になるものが決め打ちでなかなか見当たらなかった為、次回同じ原因でハマった時用の備忘録。
結論、EC2でリモート開発するなら、letter_openerではだめで、letter_opnener_webを使わないといけない。

HogeMailer.hoge(huga).deliver

みたいな感じのパターンで落ちてて、上記エラー出てるなら疑うべき。

##環境
Rails 4.2
Ruby 2.3
letter_opener 1.4.1
EC2に内にソースコードを置いて、SSH接続での開発

##対応方法
letter_openerだと、リモート開発時(EC2にSSH接続している等)には、上記エラーを吐いてしまう。
リモート開発でメール送信機能の確認をしたいのであれば、letter_opener_webの追加が必要。
導入手順は以下。
###1 gemfileにletter_opener_webの追加
gemfileで、

gem 'letter_opener_web', group:  :development

を追加する。

###2 config/environments/development.rbの設定追加

config.action_mailer.delivery_method = :letter_opener_web

を追加する。

※※※既にletter_openerをインストールしているのであれば、

config.action_mailer.delivery_method = :letter_opener

という行があるはずなので、
単純に末尾に_webを足してやればOK。

###3 config/routes.rbに設定追加
最後に、以下3行をroutes内に追加してやればOK。

  if Rails.env.development?
    mount LetterOpenerWeb::Engine, at: '/letter_opener'
  end

##letter_opener_web導入後

localhost:3000/letter_opener/を別タブでブラウザ上に開いておけば、
メールの送信記録が確認できる。

##参考記事
https://qiita.com/k-shogo/items/d85905535a64e82a3b2b
http://rubyandrails.hatenablog.com/entry/letter_opener_web
https://www.geek.sc/archives/2227
https://qiita.com/7sgg_m/items/178e0d90fc55c5716474

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?