2013-07-29 21 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'工作!有一個更好的方法嗎? –