Chris Johnson
2009-May-12 23:23 UTC
[Backgroundrb-devel] Problem passing multiple arguments as hash to enq_method
Hi,
I''m having trouble calling the enq_* method on my worker and passing
in multiple arguments via hash. I CAN pass in an an array of arguments
and it works; but the hash syntax does not seem to work.
My worker is loaded automatically when the BDRB process is started.
This works:
WORKER:
-----------------------------------------------------------------------------
class ReportingWorker < BackgrounDRb::MetaWorker
set_worker_name :reporting_worker
set_no_auto_load false
def create(args=nil)
logger.info "ReportingWorker started."
end
def create_export(args)
work_order_id = args[0]
user_id = args[1]
.... # do stuff
end # create_export
end
SCRIPT/CONSOLE
MiddleMan.worker(:reporting_worker). create_export(:arg =>
[2887,1], :job_key => 2887, :scheduled_at => Time.now)
-----------------------------------------------------------------------------
This does not work:
WORKER:
-----------------------------------------------------------------------------
class ReportingWorker < BackgrounDRb::MetaWorker
set_worker_name :reporting_worker
set_no_auto_load false
def create(args=nil)
logger.info "ReportingWorker started."
end
def create_export(args)
work_order_id = args["work_order_id"]
user_id = args["user_id"]
.... # do stuff
end # create_export
end
SCRIPT/CONSOLE
MiddleMan.worker(:reporting_worker). create_export(:arg =>
[{:work_order_id => 2887, :user_id => 1}], :job_key =>
2887, :scheduled_at => Time.now)
MiddleMan.worker(:reporting_worker). create_export(:arg =>
{:work_order_id => 2887, :user_id => 1}, :job_key =>
2887, :scheduled_at => Time.now)
(neither works)
-----------------------------------------------------------------------------
I should also note that I''m currently using the async_* technique to
kick off these report jobs (similar to the FIRST example noted above)
and that works OK; I WOULD like to be able to track jobs via the queue
though; hence my desire to get this enq_* stuff working consistently.
Thanks in advance for any help!
Chris