DelayedJob Job实例将所有传入的对象视为nil

时间:2011-10-07 17:24:12

标签: ruby-on-rails delayed-job

在过去的一天半里,我和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文件夹中,如果这有所不同。

我缺少配置的某些部分吗?

2 个答案:

答案 0 :(得分:0)

您对延迟作业的呼叫设置正确。要检查的第一件事是@ owner.id起初不是零,因为它更可能是它的问题

答案 1 :(得分:0)

在表delayed_jobs中查看数据库,并检查对象是否正确序列化。

再见