升级Rails至5.2后,Rspec中ActionMailer报找不到浏览器命令错误
Rails 4.2升级到5.2后ActionMailer测试报错Launchy找不到浏览器的解决办法
问题原因
Rails 5.2对ActionMailer的预览机制做了调整,测试环境下如果意外开启了邮件预览功能(show_previews),Launchy会尝试调用浏览器打开预览,但测试环境通常没有配置浏览器路径,就会抛出这个错误。即使你设置了delivery_method = :test,只要预览功能开启,Launchy还是会触发。
解决步骤
- 检查测试环境配置文件
config/environments/test.rb,确保添加或设置:
测试环境默认应该是关闭预览的,但升级过程中可能配置被覆盖或遗漏,手动设置后就能阻止Launchy尝试调用浏览器。config.action_mailer.show_previews = false - 如果确实需要在测试环境预览邮件,直接指定Launchy的浏览器路径:
Linux/macOS终端运行测试前设置:
Windows命令行运行测试前设置:export LAUNCHY_BROWSER=/usr/bin/chromium-browserset LAUNCHY_BROWSER="C:\Program Files\Google\Chrome\Application\chrome.exe" - 更新Launchy版本到兼容Rails 5.2的版本,在Gemfile中修改:
然后执行gem 'launchy', '~> 2.5'bundle update launchy,旧版本的Launchy可能和Rails 5.2的预览机制不兼容。 - 再次确认测试环境的邮件投递方式确实是
:test,检查config/environments/test.rb中的配置:
避免升级时配置文件被错误合并导致投递方式变更。config.action_mailer.delivery_method = :test
内容的提问来源于stack exchange,提问作者soltex
相关产品推荐
相关产品推荐

