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
相关产品推荐
相关产品推荐

