我完全迷失了这个。在 Rails 3.2.12 应用程序中,我尝试使用 ActionMailer 发送电子邮件并收到此异常:
类型错误:来自 /Users/trcull/.rvm/gems/ruby-1.9.3-p125@featureviz/gems/actionpack-3.2.12/lib/abstract_controller/helpers.rb:153:in 的参数类型类错误(预期模块) `包括'
我已经把我的邮件精简到了最低限度。它甚至不发送邮件!这是它的全部内容:
class SupportNewUserMailer < ActionMailer::Base
def new_user
puts "hi"
end
end
说真的,就是这样。然后我像这样从 Rails 控制台调用它并得到异常:
1.9.3p125:001 > SupportNewUserMailer.new_user
不知道这里发生了什么。我在同一个应用程序中有另一个邮件程序,它工作正常。
此外,如果它们是相关的,这是我在开发中的配置:
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
config.action_mailer.delivery_method = :smtp
config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = true
config.action_mailer.smtp_settings = {
:authentication => :plain,
:address => "smtp.mailgun.org",
:port => 587,
:domain => "redacted",
:user_name => "redacted",
:password => "redacted"
}
PS:是的,我尝试将其声明为类方法(即使文档说不这样做)并得到相同的结果:
class SupportNewUserMailer < ActionMailer::Base
def self.new_user
puts "hi"
end
end
产量:
类型错误:来自 /Users/trcull/.rvm/gems/ruby-1.9.3-p125@featureviz/gems/actionpack-3.2.12/lib/abstract_controller/helpers.rb:153:in 的参数类型类错误(预期模块) `包括'
PPS:不,找到课程不是问题。如果我将声明更改为此(注意,不再从 ActionMailer::Base 继承):
class SupportNewUserMailer
def self.new_user
puts "hi"
end
end
然后我可以正常调用它而没有错误,它会按预期将“hi”打印到屏幕上:
1.9.3p125 :001 > SupportNewUserMailer.new_user
hi
=> nil
1.9.3p125 :002 >