在过去的一天半里,我和DelayedJob一直在搏斗。我正在尝试创建一个简单的Job类,它接受一个大字符串和一个ActiveRecord对象。但无论我在将它排队时传给约伯,它都被视为零。我已经尝试了许多不同的策略来完成这项工作;我试过传入ActiveRecord对象的id(被视为nil),我尝试将一个初始化器添加到Job对象(而不是让它继承自Struct的实例)......没有任何效果。
我把我的职业课程简化为荒谬的事情,但仍然无效:
class SimpleJob < Struct.new(:owner_id)
def perform
@owner = Owner.find(owner_id)
puts @owner.full_name
end
end
在我的控制器中:
def test_job
Delayed::Job.enqueue(SimpleJob.new(@owner.id))
redirect_to :action => 'index', :controller => 'owner'
end
当然,错误是找不到ID为nil的所有者(在您可能会问之前,是的,@ owner被实例化并且正在工作; before_filter确保这一点)。
我正在使用Rails 2.3.5,DelayedJob版本2.0.7。我的Job对象位于libs文件夹中,如果这有所不同。
我缺少配置的某些部分吗?
答案 0 :(得分:0)
您对延迟作业的呼叫设置正确。要检查的第一件事是@ owner.id起初不是零,因为它更可能是它的问题
答案 1 :(得分:0)
在表delayed_jobs中查看数据库,并检查对象是否正确序列化。
再见