我有一个单独的类,它根据先决条件数据组织创建帐户的所有方面(即,如果用户已经存在,而不是创建用户,而是将此数据添加到该用户帐户)。然后,这两种情况都会向用户发送电子邮件,通知他们为其帐户(新用户)提供所需信息,或者只是通知他们X数据已添加到他们的帐户中。这些交易电子邮件使用邮资应用程序进行管理。
在本地开发工作时,系统的每个方面都按预期工作,并且在每种情况下都会发送相应的电子邮件,但是在演示服务器(位于Heroku上)会出现一个奇怪的问题,即抛出RoutingError,消息为“No route matches {}”(未列出任何控制器或操作)。
在Heroku中启动了rails控制台后,我尝试检查此路由并且不会抛出任何错误。
以下是此过程中Heroku服务器日志的片段:
2012-08-04T01:07:09+00:00 app[web.1]: app/views/user_mailer/new_user_email.html.haml:7:in `_app_views_user_mailer_new_user_email_html_haml___1192864641417349048_59959220'
2012-08-04T01:07:09+00:00 app[web.1]: app/lib/user_generator.rb:70:in `send_user_email'
2012-08-04T01:07:09+00:00 app[web.1]: ActionController::RoutingError (No route matches {}):
2012-08-04T01:07:09+00:00 app[web.1]: app/mailers/user_mailer.rb:13:in `new_user_email'
2012-08-04T01:07:09+00:00 app[web.1]: app/controllers/details_controller.rb:62:in `finalise'
2012-08-04T01:07:09+00:00 app[web.1]: app/lib/user_generator.rb:36:in `generate_user_details'
发生这种情况后,PostageApp会将备用电子邮件发送给用户的电子邮件地址。
控制它的代码是:
def send_user_email(is_new)
if is_new
UserMailer.new_user_email(@user).deliver
else
UserMailer.confirm_details_email(@user, @details).deliver
end
end
我的主要问题是什么可能导致Heroku产生这种RoutingError(在本地运行代码时不会发生) - 之后是否有任何理由为什么PostageApp会发送一个单独的模板而不是那个?
编辑:发送替代电子邮件的原因是产生的500错误导致回调重试,导致细节重新添加到用户并发送第二封电子邮件。
我现在的问题是,当调用的辅助方法在服务器上运行时,可能会导致路由错误(完全如同在电子邮件中显示的那样)?