[Backgroundrb-devel] Instantiating middleman and worker from inside a model?
jrobbins at cmj.com
Tue Jan 16 11:58:08 EST 2007
as i understand it the S3Worker class does not need to be visible in the
scope of the Image model. Only the MiddleMan class needs to be visible.
You pass the :s3_worker symbol to the MiddleMan class and it uses that
symbol to find the correct class on the other side of the drb connection
(ie in the backgroundrb_server process, not here in the rails process).
So i suggest going through a laundry list of different situations to see
if this works anywhere in your code.
-is that erroneous parentheses in "def s3delete)" only in your email?
-can you call worker(:class => s3_worker) from the backgroundrb console?
-try making a different method for the image class does nothing but
instantiate an s3_worker and calling it in the rails console.
-double check the class code for S3Worker to make sure the symbol
:s3_worker will clearly resolve to both the class name and the file name.
-try removing the 3 from the class name; it's not supposed to be a
problem because it's not the first character of the name but i feel like
i've had a problem with numbers in class names before.
Tomasz Kaye wrote:
> I spoke too soon, i'm still stuck with the same problem (sorry). Perhaps
> if i show how my model looks it'll be obvious what i'm doing wrong;
> class Image < ActiveRecord::Base
> def destroy
> def s3delete)
> :class => :s3_worker
> When i call destroy on an image model I'm getting the error: "NameError
> (uninitialized constant S3Worker):" . which is to be expected i suppose.
> How should i make S3Worker visible in this scope?
> thanks again.
> On Jan 15, 2007, at 7:51 PM, Joshua Bates wrote:
>> Just call work_thread on the worker.
>> Something like....
>> def save_to_s3
>> worker.work_thread(:method => :save, :args => [args])
>> def worker
>> @worker ||= MiddleMan.worker(:s3)
>> If you need to pass the whole model to the worker, make sure to add
>> include DRbUndumped in your model.
>> On 1/15/07, *Tomasz Kaye* < tomasz at resourcestudio.nl
>> <mailto:tomasz at resourcestudio.nl>> wrote:
>> In short: how (if possible) would i go about arranging it so that i
>> can instantiate a middleman and set a worker going from within a
>> method in one of my models? or is this a weird thing to be wanting to
>> do? (
>> My specific situation: I have an 'Image' model in my application. An
>> actual image file associated with the model is being stored on
>> amazons s3 system. I'd like to use a worker to handle each s3
>> operation (eg. deleting the image from s3). The Image model seems the
>> neatest place to set the worker going but I'm a little stumped as to
>> how i should modify my model to enable the instantiation of middleman
>> within it.
>> thanks in advance for any pointers!
>> (apologies in advance if this message gets posted twice; i think my
>> previous attempt didn't work)
>> Backgroundrb-devel mailing list
>> Backgroundrb-devel at rubyforge.org
>> <mailto:Backgroundrb-devel at rubyforge.org>
> Backgroundrb-devel mailing list
> Backgroundrb-devel at rubyforge.org
More information about the Backgroundrb-devel