2014-02-19 5 views
0

Когда я запускаю мои реки задачу: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, то я, скорее всего, MyModel. Как выглядит метод инициализации MyModel?

Это также может быть ошибка с рельсами: https://github.com/mperham/sidekiq/issues/601

+0

Это как: Защиту инициализации (поставщик, авторизация = {имя пользователя: ENV [ 'USERNAME'], пароль: ENV [ 'PASSWORD']}) самостоятельно .provider = provider self.authorization = авторизация end –

+0

Как выглядит метод синхронизации? Он работает над любыми ассоциациями MyModel? – TalkativeTree

+0

Он сканирует и сохраняет продукты. Я тестировал его и отлично работал. Я думаю, дело в том, что когда я вызываю 'MyWorker.new.perform (some_id)' он работает, но 'MyWorker.perform_async (some_id)' не будет –

Смежные вопросы