2011-05-18 106 views
3

我很新的resque,但它看起來非常適合我的需求。是否可以將參數傳遞給(resque-status)Resque :: JobWithStatus?

其實,我試圖建立一個簡單的測試應用程序,如:

require 'resque' 
require 'resque/job_with_status' 
class WordAnalyzer < Resque::JobWithStatus 
    @queue = "word_analysis" 

    def self.perform(word) 
    puts "About to do heavy duty analysis on #{word}" 
    sleep 3 # fake analysis here 
    # this would be something impressive 
    puts "Finished with analysis on #{word}" 
    end 
end 

而且通過

WordAnalyzer.create(word) 

沒有resque狀態創建一個後臺工作,它完美的作品(含呼叫排隊而不是創建工人)。 隨着resque狀態,​​我得到一個

錯誤的參數數目(2 1) /.../resque_test/lib/word_analyzer.rb:6:in'執行」 /.../ .rvm /寶石/紅寶石1.9.2-P136 /寶石/ resque-1.16.1/lib目錄/ resque/job.rb:127:在'執行」

我搜索都實況和代碼,但沒有找到將參數傳遞給resque-status作業的正確方法。可能嗎?

在此先感謝。

+3

哦,我的執行方法......我的文檔中誤解的選項哈希值。它的工作原理是 WordAnalyzer.create(:字=>字) 然後訪問 選項[ '單詞'] 在實例(未類)方法執行。 – udo 2011-05-18 12:16:52

回答

8

你應該做

WordAnalyzer.create(:word => word) 

並獲得這個詞由

def perform 
    word = options['word'] 
    puts "About to do heavy duty analysis on #{word}" 
    sleep 3 # fake analysis here 
    # this would be something impressive 
    puts "Finished with analysis on #{word}" 
    end 
+0

爲什麼'options [:word]'不起作用? – Leopd 2012-03-16 18:05:53

+0

我認爲是因爲它的符號和'單詞'是一個字符串。如果你想使用'options [:word]',你可能需要做'WordAnalyzer.create(:word => word.to_sym)'。儘管如此,我還沒有嘗試過! – 2012-11-28 08:37:32

相關問題