2013-07-29 20 views
0

我在Windows XP上尝试Huginn,我已经安装了所有必需的组件,但是从agent.rb这个代码不工作:Ruby on Rails是否支持Windows上的handle_asynchronously?

# 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,但我不知道那的意义。

UPDATE:我还注意到运行rake jobs:work导致上述async_receive正常工作。我是否错过了某处的初始化?

+0

会发生什么情况?你是否延迟工作? –

+0

你究竟是什么意思?我添加了宝石,但也许我错过了某处的初始化? –

回答

1

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

rake jobs:work 

另一个是

ruby script/delayed_job start 

您可能希望建立像神重新启动延迟的工作人员,他们应该停止。

+0

我刚刚得出了一个类似的结论。我发现了这个项目的[schedule.rb](https://github.com/cantino/huginn/blob/master/bin/schedule.rb),它现在将我的事件移动到'delayed_job'队列中,所以现在如果我有两个DOS窗口用'bundle exec rails runner bin/schedule.rb'和'rake jobs:work'工作!有一个更好的方法吗? –