On Thu, Mar 6, 2008 at 2:51 PM, Ryan Leavengood <[EMAIL PROTECTED]> wrote:
>
> On Thu, Mar 6, 2008 at 3:30 PM, Ian Smith-Heisters
> <[EMAIL PROTECTED]> wrote:
> >
> > I'm trying to figure out how to use exception_notification to alert me
> > of any error in bdrb. I'm not quite sure how bdrb handles errors,
> > though. It seems like implementing ExceptionNotifiable in my worker
> > class would catch any worker errors (maybe). But what if bdrb fails
> > before it loads the worker, or there some other internal bdrb error?
> > It seems to catch everything and put it in backgroundrb_debug.log, is
> > it possible to exploit whatever hook that uses?
> >
> > I'll play around with it and RTFS, but I was just hoping someone might
> > have some prior experience with this.
>
> I wanted something like this too and what I did was add some methods
> to BackgrounDRb::MetaWorker like so:
>
> class BackgrounDRb::MetaWorker
> def handle_exceptions
> result = nil
>
> if block_given?
> begin
> result = yield
> rescue Exception => e
> log_error(e)
> end
> end
>
> result
> end
>
> def log_error(error)
> case error
> when Exception
> class_name = self.class.name
> logger.info("Had exception #{error.class} in #{class_name},
> sending email.")
> NotifyMailer.deliver_error_notification(error, class_name)
> else
> logger.info(error.to_s)
> end
> end
> end
>
> I put the above in a file in lib. I require it in my workers and then
> call handle_exceptions with a block inside my worker methods. This
> definitely works, though I don't know if it is the ideal way to do it.
> For one thing it won't catch errors at the level of BackgrounDRb
> itself. But at least for worker errors it is fine. Also as you can see
> I defined my own error mailer that is very similar to the one from the
> ExceptionNotifier plug-in.
>
> It might be nice for BackgrounDRb to support something like this
> itself. Maybe one of us could put together a patch.
>
> Also I use the above with the last released version of BackgrounDRb, I
> haven't yet upgraded. Though it will probably also work with the new
> version.
>
> Ryan
>
Cool, thanks, this is really helpful. I'll post back with my finding
if I can ever get around to implementing something like this in my own
app.
_______________________________________________
Backgroundrb-devel mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/backgroundrb-devel