我在使用Rails 5动作邮件时遇到了这个奇怪的错误。
# app/mailers/application_mailer.rb
class ApplicationMailer < ActionMailer::Base
default from: "from@example.com"
layout 'mailer'
end
IRB
~/workspace/rails5 > rails c ruby-2.4.1@rails5
Running via Spring preloader in process 45498
Loading development environment (Rails 5.1.2)
2.4.1 :001 > ApplicationMailer
NameError: uninitialized constant Mail::TestMailer
from app/mailers/application_mailer.rb:1:in `<top (required)>'
from (irb):1
2.4.1 :002 > ApplicationMailer
NoMethodError: undefined method `default' for ApplicationMailer:Class
from app/mailers/application_mailer.rb:3:in `<class:ApplicationMailer>'
from app/mailers/application_mailer.rb:1:in `<top (required)>'
from (irb):2
2.4.1 :003 >
这是rails 5的默认支架。
两个非常奇怪的事情发生在第一个是它总是告诉我未初始化的常量然后trows默认不是一个方法。
只是想知道如何解决它或者我是否应该降级到Rail 5.0
答案 0 :(得分:0)
解决方案结果是,如果你有一个名为mail
的模型,ActionMailer
将首先获取那个而不是rails类。如果发生这种情况,那么它第一次失败但第二次将加载rails类并尝试将它们粉碎在一起。允许子模块工作,但将主类视为猴子路径。