Thanks a lot Jeff, Yeah I saw it works, that's why I wondered about the linked post..
Anyway, I'm just trying to basically get emails that contain the exception/error message in the subject so it's easier to sort if there are many error mails. Of course the rescue_from method only targets one specific case - the one where I get a rails exception. But I think I cannot do it by monkey patching log4r as rails already sends a complete (and formatted) string to log.error making it hard to extract the relevant message. I'll see how I can use it, but I think I can get there somehow :) Thank a lot for your suggestion! Christoph On Tuesday, 12 November 2013 21:25:30 UTC+1, Jeff Lewis wrote: > > Hi Christoph, > > My (simple) example was just trying to give you an idea of how to do what > you were asking using rescue_from. > > And note that the log does show that the re-raising worked as expected, > where we did something with the caught exception first (ie write a debug > TEST line to the log) before then re-raising it and letting the rails env > stack handle it (ie log shows the stacktrace including the orig line where > the bug is in the code, ...). > > As for "a better way", it always depends on what you're ultimately trying > to accomplish and the tradeoffs for getting there. > > But if you really did want to use rescue_from for any/all > exceptions/errors that could occur, then at a minimum you're going to want > to make sure that what you do with that caught exception (ie your > Log4r::MDC... call) doesn't itself result in any exceptions/errors. One > way would be to wrap that work in a begin ... rescue Exception => e2 ... > end ... before then re-raising the originally caught exception. > > Jeff > > > On Tuesday, November 12, 2013 11:26:47 AM UTC-8, sol wrote: >> >> Hi Jeff, thanks for your reply! >> >> I found the article here: >> >> http://www.simonecarletti.com/blog/2009/11/re-raise-a-ruby-exception-in-a-rails-rescue_from-statement/ >> >> And he mentions that re-raising does not work since rails won't catch it >> anymore.. >> has this been changed since? >> >> I generally thought there might be a better way, as usually re-raising >> exceptions is considered to be bad :) >> >> Thanks a lot, >> Christoph >> >> On Tuesday, 12 November 2013 19:07:00 UTC+1, Jeff Lewis wrote: >>> >>> Hi Christoph, >>> >>> All you need to do is re-raise the exception after you're done using it >>> in your rescue_from, so something along the lines of: >>> >>> $ cat ./app/controllers/foo_controller.rb >>> ... >>> rescue_from Exception do |e| >>> # do something with e before re-raising it ... >>> Rails.logger.debug("TEST: before re-raising ... e=#{e.inspect}") >>> raise e >>> end >>> ... >>> >>> def testfoo >>> x = 'bar' if 1/0 >>> .... >>> end >>> .... >>> >>> $ curl -sLi http://foo.localhost/testfoo >>> ... >>> >>> $ cat ./log/development.log >>> ... >>> [c55f5] TEST: before re-raising ... e=#<ZeroDivisionError: divided by 0> >>> [c55f5] Completed 500 Internal Server Error in 17ms >>> [c55f5] >>> ZeroDivisionError (divided by 0): >>> app/controllers/foo_controller.rb:89:in `/' >>> app/controllers/foo_controller.rb:89:in `testfoo' >>> ... >>> >>> Jeff >>> >>> On Tuesday, November 12, 2013 6:40:12 AM UTC-8, sol wrote: >>>> >>>> Hi there, >>>> >>>> I'm using Log4r in my rails projects. On log.error an email is sent >>>> using the EmailOutputter. >>>> I know changed the EmailOutputter to include a global var in the >>>> subject (MDC) since the subject is normally static. >>>> >>>> I want to set this var to the exception message, so it is sent as the >>>> subject. >>>> >>>> Can anyone tell me how to do this in rails? >>>> >>>> Basically: >>>> >>>> raise e or some other cause >>>>> -> Log4r::MDC.put('subject', e.message) >>>>> continue with the exception >>>> >>>> >>>> I found *rescue_from* but it just gives it to the handler and then >>>> stops. >>>> >>>> Thanks a lot, >>>> Christoph >>>> >>> -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscr...@googlegroups.com. To post to this group, send email to rubyonrails-talk@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/cd998fe6-eaa4-4bc4-a486-0336d68c71b2%40googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.