【发布时间】:2013-09-05 19:37:27
【问题描述】:
我完全迷失了这个。在 Rails 3.2.12 应用程序中,我尝试使用 ActionMailer 发送电子邮件并收到此异常:
TypeError: 错误的参数类型 Class (expected Module) 来自 /Users/trcull/.rvm/gems/ruby-1.9.3-p125@featureviz/gems/actionpack-3.2.12/lib/abstract_controller/helpers.rb:153:in `include'
我已经把我的邮件精简到了最低限度。它甚至不发送邮件!这是它的全部内容:
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
产量:
TypeError: 错误的参数类型 Class (expected Module) 来自 /Users/trcull/.rvm/gems/ruby-1.9.3-p125@featureviz/gems/actionpack-3.2.12/lib/abstract_controller/helpers.rb:153:in `include'
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 >
【问题讨论】:
-
您是否在程序中的任何地方使用了
include?然后告诉我们。 TypeError: wrong argument type Class (expected Module) 清楚地表明您在include部分中使用了类名。
标签: ruby-on-rails ruby ruby-on-rails-3