Ruby on Rails是否支持Windows上的handle_asynchronously?

时间:2013-07-29 08:47:28

标签: ruby-on-rails delayed-job

我在Windows XP上尝试Huginn,我已经安装了所有必需的组件,但agent.rb中的代码不起作用:

    # The call that doesn't work
    Agent.async_receive(agent.id, agents_to_events[agent.id].uniq)

# ...

def async_receive(agent_id, event_ids)
   # See github...
end
handle_asynchronously :async_receive

如果我内联async_receive代码,它可以正常工作,但如果我查看/delayed_job,我会看到:

ID: 26
Priority: 10
Attempts: 0
Handler: --- !ruby/object:Delayed::PerformableMethod
         object: !ruby/class 'Agent'
         method_name: :async_receive_without_delay
         args: [...]

我注意到方法名称已变为:async_receive_without_delay,但我不知道其重要性。

更新:我进一步注意到,运行rake jobs:work会导致上述async_receive正常工作。我错过了某处的初始化吗?

1 个答案:

答案 0 :(得分:1)

要通过handle_asynchronouslydelay排队的作业执行,您需要运行一个或多个延迟作业实例。有不止一种方法可以做到这一点,其中一种方法是

 rake jobs:work

另一个是

ruby script/delayed_job start

你可能希望设置类似上帝之类的东西来重新启动延迟工作的工作人员。