【发布时间】:2015-05-19 01:50:44
【问题描述】:
我想知道如何在resue块中访问ActiveJob执行参数,例如
def perform object
end
rescue_from Exception do |e|
if e.class != ActiveRecord::RecordNotFound
**job.arguments.first**
# do something
end
end
谢谢!!
【问题讨论】:
-
异常发生在哪里?在执行方法中?如果是这样,只需将救援块放在 perform 方法中的罪魁祸首代码下方。您将可以访问作为局部变量的
object参数。 -
Noz,我有 before_enqueue 和 around_perform 以及因此的 rescue_from。
-
我以前没有使用过任何一个,但是你能不能把你的救援块放在这些块中?我认为您不想在 ActiveJob 中使用
rescue_from,一个简单的rescue ActoveRecord::RecordNotFound => e就足够了。 -
在 ActiveJobs 中使用
rescue_from绝对支持(并且很有帮助):edgeguides.rubyonrails.org/active_job_basics.html#exceptions 具体来说,它在 Job 基类中非常有用(类似的故障可以合并到一个rescue_from而不是复制到十几个perform块中)。
标签: ruby-on-rails ruby ruby-on-rails-4 sidekiq rails-activejob