You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CentOS 8生产环境Ruby 2.6.2/Rails 6.1.4邮件发送失败求助

解决方案:生产环境Mail::TestMailer未初始化错误

针对你遇到的问题,核心原因是生产环境意外加载了仅用于开发/测试的TestMailer类,下面是具体排查和修复步骤:

  • 检查生产环境邮件配置
    打开config/environments/production.rb,确认没有以下测试相关配置:

    config.action_mailer.delivery_method = :test
    

    同时确保生产环境的SMTP等邮件发送配置正确,没有引用TestMailer相关代码。

  • 排查业务代码中的邮件调用
    全局搜索项目代码,确认所有发送邮件的逻辑在生产环境下没有调用TestMailer,比如有没有写错环境判断条件(比如误把Rails.env.development?写成Rails.env.production?),导致生产环境走了测试邮件分支。

  • 验证Passenger的Ruby环境配置
    因为你用了RVM gemset,必须确保Passenger加载的是正确的Ruby版本和gemset:

    1. 在服务器上执行rvm use 2.6.2@rails6.1.4,再运行which ruby拿到Ruby的完整路径
    2. 在Apache的虚拟主机配置中添加或修改:
      PassengerRuby /path/to/your/ruby-2.6.2@rails6.1.4/wrappers/ruby
      SetEnv RAILS_ENV production
      
    3. 重启Apache服务:systemctl restart httpd
  • 确保生产环境未加载测试组Gem
    检查Gemfile,确认测试相关的Gem都放在group :test块内:

    group :test do
      # 比如rspec-rails、capybara等测试依赖
    end
    

    然后在生产环境重新安装Gem,排除测试/开发组:

    bundle install --without test development --deployment
    
  • 清理生产环境缓存
    执行以下命令清除缓存,避免旧的配置残留:

    rails assets:clean RAILS_ENV=production
    rails cache:clear RAILS_ENV=production
    touch tmp/restart.txt # 触发Passenger重启应用
    

内容的提问来源于stack exchange,提问作者Mandres

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 21:50:32