Ce que vous essayez semble raisonnable pour moi. J'ai jeté un oeil à rails_worker_proxy.rb (à partir du code source de github). A partir d'une lecture de code, les async_ * méthodes acceptent les deux: arg et: args:
arg,job_key,host_info,scheduled_at,priority = arguments && arguments.values_at(:arg,:job_key,:host,:scheduled_at, :priority)
# allow both arg and args
arg ||= arguments && arguments[:args]
# ...
if worker_method =~ /^async_(\w+)/
method_name = $1
worker_options = compact(:worker => worker_name,:worker_key => worker_key,
:worker_method => method_name,:job_key => job_key, :arg => arg)
run_method(host_info,:ask_work,worker_options)
Pouvez-vous partager un extrait de code? Avez-vous ajouté des instructions de débogage dans votre code et/ou dans le code backgroundrb lui-même? (J'ajoute généralement quelques mises et vérifie les choses quand les choses tournent mal.)
Enfin, avez-vous envisagé d'utiliser delayed_job? Il a plus de traction de nos jours dans la communauté Rails.
Eh bien, vous voudrez peut-être regarder le code. Dans l'exemple, "charge_customer" accepte un argument, donc envoyer: arg avec juste un argument semble correct. Je me demande pourquoi vous avez changé de: arg à: args si .. Avez-vous essayé juste: arg => [1,2,3]? – Trevoke