2011-05-20 35 views
3

延迟的工作,我已经得到了应该重新入队本身就是一项工作:堆栈溢出黄瓜步骤定义时,重新入队的.perform

class TestJob 
    def perform 
    Delayed::Job.enqueue(TestJob.new, {priority: 0, run_at: 5.minutes.from_now}) 
    true 
    end 
end 

我想调用其perform方法黄瓜一步的定义:

Then /^the job should run successfully/ do 
    TestJob.new.perform.should == true 
end 

但是,在这一步我得到一个堆栈溢出。这是什么造成的?

+0

排队叫TestJob的执行方法,将再次进行排队,它调用执行方法等无限循环。 – 2011-05-20 10:11:21

+0

为什么它会调用'perform'?据我所知,它只能在delayed_jobs表中添加一个新条目。 – 2011-05-20 20:15:55

回答

0

我确定这里有一个'更好'的答案,但是最后一次我尝试使用入队方法时,它被“破坏”了。由此,我的意思是我无法实现它的工作。

我做类似的东西,你在做什么,只是我做

TestJob.new.delay(:run_at => 10.seconds.from_now).perform