繁体   English   中英

是否有等效的ApplicationController,但适用于Active Job?

[英]Is there an equivalent of ApplicationController but for Active Job?

我在Rails应用程序中使用ActiveJob ,并尝试添加一些应由我的所有作业共享的通用功能(确切地说,是异常处理)。

一个例子是-

class MyAbstractJob < ActiveJob::Base
  rescue_from StandardError do |exception|
    # do exception handling stuff ...
  end
end

class FooJob < MyAbstractJob
  queue_as :my_queue

  def perform *args
    # do job stuff ...
  end      
end

此模式类似于对控制器使用ApplicationController ,后者从ActionController::Base继承,并提供了一个地方来实现任何控制器子类上可用的共享功能。

实际上,这似乎在大多数情况下都是有效的,除了当我尝试调用queue_as :my_queue -在这种情况下,我最终看到-

NoMethodError: undefined method 'queue_as' for #<Class:0x007f088905c970>

我没有在Rails文档中看到对此特定模式的引用。 有谁知道一个好的方法吗?

太奇怪了,我认为您的代码是正确的。 我已经按原样测试了您的代码,没有进行任何更改,也没有看到任何问题:

FooJob.perform_later
# Performing FooJob from Inline(my_queue)
# Performed FooJob from Inline(my_queue) in 3.81ms
# Enqueued FooJob (Job ID: 6fd5ea5c-06bb-46d8-943c-8cc6f1e6ac33) to Inline(my_queue)
# => #<FooJob:0x0000000464de90 @arguments=[], @job_id="6fd5ea5c-06bb-46d8-943c-8cc6f1e6ac33", @queue_name="my_queue">

我已经将两个类都放入了app/jobs目录。

您在问题中显示的错误似乎与继承有关。 您确定您的FooJob类确实是从MyAbstractJob继承的吗? 也许为了确定,您可能还需要重新加载Rails。

如果问题仍然存在,请发布真实的类代码,而不是简化的示例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM