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

Rails配置ActionMailer触发uninitialized constant ActionMailer错误求助

配置ActionMailer时出现uninitialized constant ActionMailer错误

我在配置ActionMailer,使用生成邮件器后的默认代码,现在碰到了uninitialized constant ActionMailer错误,相关代码和错误信息如下:

代码

class ApplicationMailer < ActionMailer::Base
  default from: 'from@example.com'
  layout 'mailer'
end

错误栈

uninitialized constant ActionMailer
[98c7cc1a-bc46-4d7c-864e-0fc062867062] /Users/priya/fs-statuspage-api/app/mailers/application_mailer.rb:1:in `<main>'
/Users/priya/.rvm/gems/ruby-3.2.0@fs-statuspage-api/gems/bootsnap-1.16.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/Users/priya/.rvm/gems/ruby-3.2.0@fs-statuspage-api/gems/bootsnap-1.16.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/Users/priya/.rvm/rubies/ruby-3.2.0/lib/ruby/gems/3.2.0/gems/zeitwerk-2.6.6/lib/zeitwerk/kernel.rb:30:in `require'
/Users/priya/fs-statuspage-api/app/mailers/subscriber_mailer.rb:1:in `<main>'
/Users/priya/.rvm/gems/ruby-3.2.0@fs-statuspage-api/gems/bootsnap-1.16.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/Users/priya/.rvm/gems/ruby-3.2.0@fs-statuspage-api/gems/bootsnap-1.16.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/Users/priya/.rvm/rubies/ruby-3.2.0/lib/ruby/gems/3.2.0/gems/zeitwerk-2.6.6/lib/zeitwerk/kernel.rb:30:in `require'
/Users/priya/fs-statuspage-api/app/controllers/subscribers_controller.rb:20:in `create'
/Users/priya/.rvm/gems/ruby-3.2.0@fs-statuspage-api/gems/actionpack-7.0.4.2/lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'
/Users/priya/.rvm/gems/ruby-3.2.0@fs-statuspage-api/gems/actionpack-7.0.4.2/lib/abstract_controller/base.rb:215:in `process_action'
/Users/priya/.rvm/gems/ruby-3.2.0@fs-statuspage-api/gems/actionpack-7.0.4.2/lib/action_controller/metal/rendering.rb:53:in `process_action'
/Users/priya/.rvm/gems/ruby-3.2.0@fs-statuspage-api/gems/actionpack-7.0.4.2/lib/abstract_controller/callbacks.rb:234:in `block in process_action'
/Users/priya/.rvm/gems/ruby-3.2.0@fs-statuspage-api/gems/activesupport-7.0.4.2/lib/active_support/callbacks.rb:107:in `run_callbacks'
/Users/priya/.rvm/gems/ruby-3.2.0@fs-statuspage-api/gems/actionpack-7.0.4.2/lib/abstract_controller/callbacks.rb:233:in `process_action'
/Users/priya/.rvm/gems/ruby-3.2.0@fs-statuspage-api/gems/actionpack-7.0.4.2/lib/action_controller/metal/rescue.rb:22:in `process_action'
/Users/priya/.rvm/gems/ruby-3.2.0@fs-statuspage-api/gems/actionpack-7.0.4.2/lib/action_controller/metal/instrumentation.rb:67:in `block in process_action'
/Users/priya/.rvm/gems/ruby-3.2.0@fs-statuspage-api/gems/activesupport-7.0.4.2/lib/active_support/notifications.rb:206:in `block in instrument'
/Users/priya/.rvm/gems/ruby-3.2.0@fs-statuspage-api/gems/activesupport-7.0.4.2/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
/Users/priya/.rvm/gems/ruby-3.2.0@fs-statuspage-api/gems/activesupport-7.0.4.2/lib/active_support/notifications.rb:206:in `instrument'
/Users/priya/.rvm/gems/ruby-3.2.0@fs-statuspage-api/gems/actionpack-7.0.4.2/lib/action_controller/metal/instrumentation.rb:66:in `process_action'
/Users/priya/.rvm/gems/ruby-3.2.0@fs-statuspage-api/gems/actionpack-7.0.4.2/lib/action_controller/metal/params_wrapper.rb:259:in `process_action'

解决方法

  • 确认actionmailer依赖已安装:检查Gemfile中是否存在gem 'actionmailer',如果没有就添加进去,再运行bundle install。Rails默认会包含这个依赖,但手动搭建项目或误删时会出现缺失。
  • 确保完整加载Rails环境:如果是在非Rails环境(比如单独脚本)调用邮件器,需要在文件开头添加以下代码加载环境:
    require_relative '../config/environment'
    
  • 检查Zeitwerk加载配置:错误栈显示Zeitwerk在处理文件加载,确认app/mailers目录在Zeitwerk的加载路径中。Rails默认会自动加载该目录,若手动修改过加载配置,需确保该目录被包含。
  • 重启服务器:修改Gemfile或加载配置后,重启Rails服务器,确保新配置生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 03:35:47