Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 延迟的作业:命名错误:未定义的方法“我的方法”不延迟';_Ruby On Rails_Actionmailer_Delayed Job - Fatal编程技术网

Ruby on rails 延迟的作业:命名错误:未定义的方法“我的方法”不延迟';

Ruby on rails 延迟的作业:命名错误:未定义的方法“我的方法”不延迟';,ruby-on-rails,actionmailer,delayed-job,Ruby On Rails,Actionmailer,Delayed Job,使用rails 2.3.11和delayed_job 2.0.4作为gem,我在异步使用handle_时遇到一个错误: 在我的ActionMailer模型中,我删除了我的\u方法,并在声明之后添加了'handle\u asynchronously:my\u method' class MailSender < ActionMailer::Base def my_method ... end handle_asynchronously :my_meth

使用rails 2.3.11和delayed_job 2.0.4作为gem,我在异步使用
handle_时遇到一个错误:

在我的ActionMailer模型中,我删除了我的\u方法,并在声明之后添加了'handle\u asynchronously:my\u method'

class MailSender < ActionMailer::Base
    def my_method
        ...
    end
    handle_asynchronously :my_method
end

使用
mailssender.delay.deliver\u延迟我的\u方法
正在工作并且任务已正确处理-但是我宁愿使用
handle\u异步
un-my-model来确保邮件始终在后台发送…

您仍然可以使用handle\u异步宏声明,但是使用ActionMailer调用延迟作业的语法有点不同

# without delayed_job
MailSender.my_method.deliver

# with delayed_job
MailSerder.delay.my_method

这是从旧版本的自述文件中提取出来的,但它不在当前版本中,因此可能是新版本的延迟作业解决了这一细微差别。

我遇到了同样的问题,并最终遇到了以下问题。基本上,delayed_job worker似乎很难对非ActiveRecord对象进行解组。对我有效的快速修复方法是要求您的类在初始值设定项或environment.rb中,例如

# config/environment.rb
...
require 'mail_sender'

您需要使用重新启动工作进程

耙工:工作


在3.2.3中也有这个问题


通过在每次代码更改后重新启动DJ进程来修复此问题。

这看起来像Rails 3 mailer-我正在使用Rails 2.3.x。延迟是我现在正在做的事情。尽管如此,我还是想在我的mailer Model中简单地异步使用
handle\u
,这就解决了它。不过,使用Rails控制台有点麻烦。这不应该是必需的,因为延迟的_作业应该自己运行。如何调查这件事?
# config/environment.rb
...
require 'mail_sender'