ah yeah, big imports from text files do take forever if you use AR, don't
they.
I never use worker_new, i always just say something like
result = MiddleMan.worker(:lmail_worker).enq_mail_confirmation_letters(:arg
=> {:user_ids => users.collect(&:id), :password => password, :options =>
options}, :job_key => job_key)
2009/10/14 Chris Sund <[email protected]>
> Hey Max,
>
> Thanks for the reply. I want to move this back to AR that's why I want to
> implement backgroundrb. This process can take up to 29 minutes using Active
> Record where if I do straight SQL inserts it's a 2 minute process. I'm
> importing about 200K records at a time. I don't like programming outside
> the box though and the downside is I loose the ability to do validations and
> other nifty AR functions which I think is more useful than the time issue.
> In any case I had another question...
>
> 1.) What is the difference between MiddleMan.worker & Middleman.worker_new
> ? This is my biggest hang up. I'm not sure how to call the worker
> appropriately so it will create a session and fire my function
>
> Thanks!
>
> Chris
>
>
> On Wed, Oct 14, 2009 at 2:17 AM, Max Williams <[email protected]
> > wrote:
>
>> I'm a bit of a backgroundrb noob, though i do use it for several different
>> things. I usually follow the paradigm of keeping the controller code as
>> similar as possible, but instead of calling the original model method,
>> calling a new model method which calls a backgroundrb task, which in turn
>> calls the *original* model method. eg instead of this
>>
>> -controller calls 'my_obj.do_heavy_lifting'
>> -instance method do_heavy_lifting runs and returns
>> -controller continues
>>
>> I do this
>>
>> - controller calls 'my_obj.background_do_heavy_lifting'
>> - instance method background_do_heavy_lifting runs:it just calls a worker
>> method and returns
>> - controller continues
>> - worker method (in the background) calls 'my_obj.do_heavy_lifting'
>> -instance method do_heavy_lifting runs (in the background) and returns
>>
>> Of course this assumes that do_heavy_lifting can be done asynchronously,
>> ie that the controller can carry on without waiting for it to finish. But i
>> assume that's the case because otherwise why use backgroundrb?
>>
>> BTW your code for adding a record to the database is kind of horrible and
>> very error prone - why can't you use AR::Base.create?
>>
>>
>> 2009/10/14 Chris Sund <[email protected]>
>>
>>> Hey Everyone,
>>>
>>> I'm trying to get backgroundrb running and I would consider myself an
>>> intermediate rails programmer. I have the following controller method that I
>>> would like to move to a worker method, but I'm not sure how to properly call
>>> it from my controller once I place it in the worker method. Any advice or
>>> help would be appreciated. Due to the fact I am still learning, code
>>> examples would be awesome, but not necessary. I can usually get things
>>> figured out given enough time.
>>>
>>> Thanks!
>>>
>>> Chris
>>>
>>>
>>> def download_reads
>>>
>>> if fields_mapped?
>>> mapped_fields.each do |row|
>>>
>>> ActiveRecord::Base.connection.execute(
>>> "insert into readings(reading,
>>> date,
>>> year,
>>> accounting_period,
>>> account_id,
>>> water_usage,
>>> created_at,
>>> updated_at)
>>> values ('#{row[0]}',
>>> '#{row[1]}',
>>> '#{row[2]}',
>>> '#{row[3]}',
>>> '#{row[4]}',
>>> '#{row[5]}',
>>> '#{Time.current.to_s(:db)}',
>>> '#{Time.current.to_s(:db)}');")
>>>
>>> end
>>> flash[:notice] = 'Water Readings Have Been Downloaded'
>>> redirect_to :action => :download
>>> else
>>>
>>> end
>>> rescue MapFields::InconsistentStateError
>>> flash[:error] = 'Please try again'
>>> redirect_to :action => :download
>>> rescue MapFields::MissingFileContentsError
>>> flash[:error] = 'Please upload a file'
>>> redirect_to :action => :download
>>>
>>> end
>>>
>>>
>>> _______________________________________________
>>> Backgroundrb-devel mailing list
>>> [email protected]
>>> http://rubyforge.org/mailman/listinfo/backgroundrb-devel
>>>
>>
>>
>
_______________________________________________
Backgroundrb-devel mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/backgroundrb-devel