我在使用 Nginx 的生产环境中实现Delayed_Job_Active_Record gem 时遇到问题。用户提交了一个“联系我们”表单,Nginx 调用了相关的控制器操作,以下代码行失败:
@contact.delay.send_contact_form
其中相关方法为:
def send_contact_form
ContactMailer.contact_us(self).deliver
end
开发环境:OK
- 在我的本地机器上,我有 Webrick 提供的页面。一切运行良好,延迟的作业通过“Delayed_Jobs”表并发送电子邮件。
生产环境 - Rails 控制台:好的
- 在服务器上,如果我手动创建
@contact
和调用@contact.delay.send_contact_form
,延迟的作业会通过延迟的作业表并发送电子邮件。
生产环境 - Webrick:好的
- 在服务器上,如果我启动 Rails Webrick 服务器并
@contact
通过 Web 界面输入数据,然后提交作业,则会通过延迟的作业表并发送电子邮件。
生产环境 - Nginx:错误
- 该应用程序目前由 Nginx 提供服务。
- 如果我通过 Nginx 访问界面并输入数据
@contact
并提交页面会挂起。 - 生产日志在控制器操作上给出以下错误,(参考上面的行):
NoMethodError(#< Contact:0x000000052962b0> 的未定义方法“延迟”)
我还确认 Rails、Ruby 以及 Delayed_Job_Active_Record 和 Daemons gem 的版本在两种环境中是相同的。
任何帮助将不胜感激,因为我已经坚持了一段时间。我想找到一个与 Nginx 一起使用的解决方案,它可以为我提供与“延迟作业”相同的功能。
谢谢。