On Feb 12, 2008 9:03 PM, hemant <[EMAIL PROTECTED]> wrote: > On Tue, Feb 12, 2008 at 12:05 AM, John Wells > > <[EMAIL PROTECTED]> wrote: > > > > On Feb 11, 2008 1:28 PM, hemant <[EMAIL PROTECTED]> wrote: > > > On Mon, Feb 11, 2008 at 8:20 PM, John Wells <[EMAIL PROTECTED]> wrote: > > > > On Feb 11, 2008 5:03 AM, hemant kumar <[EMAIL PROTECTED]> wrote: > > > > > > > > > > On Mon, 2008-02-11 at 00:55 -0800, Alex Soto wrote: > > > > > > does require 'lib/formatters' work? > > > > > > > > > > > > > > > > > > On Feb 10, 2008, at 10:11 PM, John Wells wrote: > > > > > > > > > > > > > Hi guys, > > > > > > > > > > > > > > New to backgroundrb, and I like it very much conceptually, but > > I'm > > > > > > > struggling to get it to run successfully. I started with trunk, > > but > > > > > > > was getting a very strange gem require error when starting a > > worker > > > > > > > (though it wasn't telling me which gem was missing)....see here: > > > > > > > http://pastie.caboo.se/150225 > > > > > > > > > > Its not complaining about any missing gems, rather its not able to > > load > > > > > workers defined inside lib/workers directory. You must define at > > least > > > > > one worker, before you can start bdrb. In case, you have already > > defined > > > > > a worker, Can we have a look at the code of your worker? > > > > > > > > Thanks for your help. Sure thing...the code is below. However, I'm > > > > very curious...how did you determine this was the problem? Just so I > > > > know what to look for in the future. > > > > > > Because, when I saw error at: > > > > > > http://pastie.caboo.se/150225 > > > > > > It clearly says thats start_worker is failing on 114 line. Generally > > > this happens, when bdrb is not able to load a particular worker file. > > > Also, you see empty string "gem_original_require': no such file to > > > load -- (LoadError)" because bdrb is not able to get name of worker > > > file to load correctly. > > > > > > > > > > > > > > > > > ===== controller that instantiates worker ===== > > > > class Admin::BatchController < Admin::ApplicationController > > > > > > > > def initialize > > > > super > > > > @formats = GW::BatchListing::ListingRow.formats > > > > @part_of = :admin > > > > end > > > > > > > > def get_progress > > > > if request.xhr? > > > > progress_percent = > > MiddleMan.get_worker(session[:job_key]).progress > > > > render :update do |page| > > > > page.call('progressPercent', 'progressbar', progress_percent) > > > > page.redirect_to( :action => 'done') if progress_percent >= > > 100 > > > > end > > > > else > > > > redirect_to :action => 'index' > > > > end > > > > end > > > > > > > > def done > > > > errors = "DONE " + MiddleMan.get_worker(session[:job_key]).errors > > > > if errors.size > 0 > > > > flash[:notice] = errors.join("<br/>") > > > > else > > > > flash[:notice] = "Successful load." > > > > end > > > > MiddleMan.delete_worker(session[:job_key]) > > > > end > > > > > > > > def add > > > > @user = User.find(params[:id]) > > > > @cats = Category.find(:all, :conditions=>"parent_id is null") > > > > if request.post? > > > > listings = params[:listings] > > > > content_type = listings.content_type.chomp > > > > if "application/zip"!=content_type and > > > > "application/x-zip-compressed"!=content_type > > > > flash[:notice] = > > > > "Only files of type application/zip " + > > > > "and application/x-zip-compressed " + > > > > "can be used. You uploaded #{content_type}." > > > > else > > > > # write out to tmp file > > > > tmpfile = "/tmp/#{rand 500000}.zip" > > > > open(tmpfile, "w") do |f| > > > > f << listings.read > > > > end > > > > parser = > > > > GW::BatchListing::ListingParser.new(params[:format], > > > > > > params[:listing_type], > > > > @user) > > > > session[:job_key] = > > > > MiddleMan.new_worker(:class => :foo_worker, > > > > :args => parser) > > > > end > > > > end > > > > end > > > > end > > > > > > > > > > There are couple of problems with above code, for example, > > > MiddleMan.get_worker is not defined. To get an idea about, which > > > methods are defined for MiddleMan, have a look at, > > > > > > http://backgroundrb.rubyforge.org/classes/BackgrounDRb/WorkerProxy.html > > > > > > Also, you should read README file that comes with plugin. > > > > > > > ===== and the worker itself ===== > > > > class BatchImportWorker < BackgrounDRb::MetaWorker > > > > attr_reader :progress > > > > attr_reader :errors > > > > set_worker_name :batch_import_worker > > > > > > > > def create(args = nil) > > > > # this method is called, when worker is loaded for the first time > > > > end > > > > > > > > def do_work(parser) > > > > @progress = 0 > > > > @errors = parser.process(tmpfile) > > > > end > > > > end > > > > > > Well, I find no problems with above worker code, and it should load. > > > Create a fresh rails app and see if bdrb works there. > > > > > > Ok, sorry... I was working from the old InfoQ article by Ezra and the > > api docs. I probably made some bad assumptions there...I will take a > > hard look and try it again. > > > > Thanks for your help! > > Just catching up on this. So, did you manage to get it work after > reading latest docs? > If yes, can you tell us, why bdrb was not able to load your worker? >
It was a number of small little errors, and some big ones. Perhaps the most damning was: @errors = parser.process(tmpfile) You'll note tmpfile doesn't exist in this context ;) That would cause a problem. I have my solution working now and it's working well. I really appreciate your help. My biggest hurdle with backgroundrb was the fact that I have some very complicated business rules taking place on the brdb side of things, and without an easy way to step through these with a debugger, lots of things can go wrong and it makes life more difficult. Running script/backgroundrb without arguments and using puts and inspect helps, but hooking to it with a debugger so that one could inspect variables, etc would be extremely useful. I started going down the path of getting NetBeans' debugger to work with it, but quickly realized it was going to take more time than I had given my current project. Anyway, thanks very much for your help! John _______________________________________________ Backgroundrb-devel mailing list [email protected] http://rubyforge.org/mailman/listinfo/backgroundrb-devel
