То, что вы пытаетесь, кажется мне разумным. Я взглянул на rails_worker_proxy.rb (из исходного кода github). Из прочитанного кода методы async_ * принимают оба: arg и: 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)
Можете поделиться фрагментом кода? Вы добавили какие-либо операторы отладки в свой код и / или в сам код backgroundrb? (Я обычно добавляю несколько предложений put и проверяю, когда что-то идет не так.)
Наконец, вы рассматривали возможность использования delayed_job? В настоящее время в сообществе Rails она пользуется большей популярностью.