[Backgroundrb-devel] [Newbie] Trouble with methods?

Brian Morearty brian at morearty.org
Fri Apr 18 17:18:35 EDT 2008


> But I also learned that the return result is not just my string but a hash
containing my string in the "data" hash member.

That's useful for me to know because that's what was happening to me when I
ported BackgrounDRb to Windows and I kept wondering if it was a bug on my
side. But I guess that's what (the current version of) BackgrounDRb does on
all platforms, so it's not just me. (I hadn't tried it on another platform
because all I have for now is Windows.)

- Brian



On 4/18/08, Roggie Boone <rogboone at yahoo.com> wrote:
>
> Yes, thank you!  I had read about the optional 2nd argument
> but misunderstood its usefulness.  It's working now.  But I also
> learned that the return result is not just my string but a hash
> containing my string in the "data" hash member.
>
> Rog
>
> *Brian Morearty <brian at morearty.org>* wrote:
>
> Sorry, I meant to reply-all. Here's what I wrote:
>
> Hello Rogelio,
>
> If you want a return value you have to call it synchronously. The default
> call is asynchronous--because after all, it's a background call. That's why
> you're getting nil back.
>
> To make a synchronous call, pass "true" as the 2nd argument to your
> worker:
>
>  res = MiddleMan.worker(:pdfmaker_worker, jk).getres(nil, true)
>
> In this example I used nil for the first argument because your getres
> function doesn't take an argument.
>
> For more info see http://backgroundrb.rubyforge.org/rails/index.html and
> read the section "Invoke a method on worker and get results."
>
> - Brian Morearty
>
>
>
>
> On Fri, Apr 18, 2008 at 11:07 AM, Roggie Boone <rogboone at yahoo.com> wrote:
>
> > Hi,
> >
> > I'm new to BackgroundRB and am having some trouble figuring
> > out what must be a simple thing.  I'm in  time crunch where I
> > need my Rails app to generate PDF files on the fly for my website
> > users.  But before I leap into that, I'm trying to get familiar with
> > the basics.  So I have this worker in my rails app lib/worker folder:
> > ==============
> > class PdfmakerWorker < BackgrounDRb::MetaWorker
> >   set_worker_name :pdfmaker_worker
> >   set_no_auto_load(true)
> >   def create(args = nil)
> >     # this method is called, when worker is loaded for the first time
> >       register_status(:cnt => 0)
> >       1.upto 100000000 do |x|
> >        if x % 1000 == 0
> >         register_status(:cnt => x)
> >        end
> >       end
> >     #exit
> >   end
> >
> >   def getres
> >     res = "Just a test"
> >     return res
> >   end
> > end
> >
> > ============================================================
> >
> > I've written a simple program to test that worker and it is as follows:
> >
> > jk = MiddleMan.new_worker(:worker => :pdfmaker_worker, :job_key =>
> > "123", :data => nil)
> >
> > sleep (5)
> >
> > count = 0
> >
> > while count < 1
> >   pct = MiddleMan.ask_status(:worker => :pdfmaker_worker, :job_key =>
> > jk)
> >   sleep(2)
> >   puts "Count is: " + (pct[:cnt]).to_s
> >
> >   res = MiddleMan.worker(:pdfmaker_worker, jk).getres
> >   puts "Res is: " + res.to_s
> > end
> > ============================================================
> >
> > I run script/console and load the above program.  The worker counts up
> > to 10000000 and my little test program repeatedly queries the worker
> > and writes "Count is <whatever>" to the screen as it should.
> >
> > However, when it get to my custom method "getres" in the last
> > two lines of the test program,  the return result for "res" is nil.  The
> > worker doesn't crash, it just appears not to return a result.  I'm sure it's
> > something simple, but I don't see why.
> >
> > Here is a sample output of one iteration of the simple program:
> > ================
> > Count is: 970000000
> > {:type=>:do_work, :worker=>:pdfmaker_worker, :worker_method=>:getres,
> > :job_key=>"123"}
> > Res is:
> > {:type=>:get_status, :worker=>:pdfmaker_worker, :job_key=>"123"}
> > ================
> >
> > It looks like the call to "getres" is being recognized, but I'm
> > obviously
> > missing some critical link.
> >
> > My setup:
> >
> > Ubuntu 7.10
> > Ruby 1.8.6
> > Rails 2.0.2
> > BackgroundRB (been through several versions, latest of
> > which was retrieved via svn on 4/17/08 and I updated the
> > backgroundrb script as per install guidelines)
> >
> > Thanks in advance for your help.
> >
> > Rogelio
> >
> >  ------------------------------
> > Be a better friend, newshound, and know-it-all with Yahoo! Mobile. Try
> > it now.<http://us.rd.yahoo.com/evt=51733/*http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ>
> >
> > _______________________________________________
> > Backgroundrb-devel mailing list
> > Backgroundrb-devel at rubyforge.org
> > http://rubyforge.org/mailman/listinfo/backgroundrb-devel
> >
>
>
>
> --
> Brian
>
>
>  ------------------------------
> Be a better friend, newshound, and know-it-all with Yahoo! Mobile. Try it
> now.<http://us.rd.yahoo.com/evt=51733/*http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ>
>
>


-- 
Brian
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://rubyforge.org/pipermail/backgroundrb-devel/attachments/20080418/88af9644/attachment-0001.html 


More information about the Backgroundrb-devel mailing list