2014-02-19 56 views
0

當我跑我的rake任務:Sidekiq不接受Rake任務參數

namespace :foo do 
    task :bar => :environment do 
    MyWorker.perform_async(some_id) 
    end 
end 

我得到這個錯誤:

{"retry"=>3, "queue"=>"default", "class"=>"MyWorker", "args"=>[3], "jid"=>"05737ccbac2c88443e3014c4", "enqueued_at"=>1392842821.15404, "error_message"=>"wrong number of arguments (1 for 0)", "error_class"=>"ArgumentError", "failed_at"=>2014-02-19 20:47:01 UTC, "retry_count"=>0} 

現在,奇怪的是,如果我只是運行在部分MyWorker.perform_async(some_id)我的鐵軌控制檯,它完美

MyWorker.perform是這樣的:

def perform some_id 
    MyModel.new(some_id).sync 
end 

任何想法?

回答

0

如果您的執行方法採用some_id參數,那麼我很可能是MyModelMyModel的初始化方法是什麼樣的?

它也可以是與軌道的一個錯誤:(提供商,授權= {用戶名:ENV [ 'USERNAME'],密碼:ENV [ 'PASSWORD']}) DEF初始化:https://github.com/mperham/sidekiq/issues/601

+0

這就像 自.provider =提供商 self.authorization =授權 結束 –

+0

同步方法是什麼樣的?它是否在MyModel的任何關聯上工作? – TalkativeTree

+0

它掃描並保存產品。我測試了它,並且完美地工作。 我認爲重點是,當我調用MyWorker.new.perform(some_id)'它的工作原理,但'MyWorker.perform_async(some_id)'不會 –