Forum: JRuby Convert Ruby Exceptions to Java

54147c1a1223b425d4f4f7947c9bba46?d=identicon&s=25 Ariel Valentin (Guest)
on 2014-08-04 15:42
(Received via mailing list)
Is anyone aware of a convenient way to convert Ruby exceptions into Java
Throwable? I am trying to use an slf4j logger to log Ruby errors.

Thanks,
Ariel Valentin
e-mail: ariel@arielvalentin.com
website: http://blog.arielvalentin.com
skype: ariel.s.valentin
twitter: arielvalentin
linkedin: http://www.linkedin.com/profile/view?id=8996534
8c21306523b16ba5dd35c3549bf90994?d=identicon&s=25 Theo Hultberg (Guest)
on 2014-08-04 22:34
(Received via mailing list)
when Ruby exception bubble into Java they are wrapped in instances of
RaiseException, a subclass of RuntimeException. The constructor of
RaiseException takes a RubyException so they should do the job:

https://github.com/jruby/jruby/blob/master/core/sr...

T#


On Mon, Aug 4, 2014 at 3:40 PM, Ariel Valentin <ariel@arielvalentin.com>
54147c1a1223b425d4f4f7947c9bba46?d=identicon&s=25 Ariel Valentin (Guest)
on 2014-08-05 05:22
(Received via mailing list)
The code is still executing in the Ruby context. e.g.
https://gist.github.com/arielvalentin/c340ae45dd83af8fd9d9

Ariel Valentin
e-mail: ariel@arielvalentin.com
website: http://blog.arielvalentin.com
skype: ariel.s.valentin
twitter: arielvalentin
linkedin: http://www.linkedin.com/profile/view?id=8996534
---------------------------------------
*simplicity *communication
*feedback *courage *respect
Caa2df9372ffa0a9e95b2bab1e8fea34?d=identicon&s=25 Karol Bucek (Guest)
on 2014-08-05 07:33
(Received via mailing list)
you can still emulate ~ wrapping ... if you've looked at the linked
RaiseException.java there's a constructor that takes a RubyException :

begin
  raise "error"
rescue => e
  t = org.jruby.exceptions.RaiseException.new(e)
  logger.error("This doesn't ... but will !", t)
end

although this might not be ideal, I would consider adding a "Ruby"
logging
method (on each level) to the logger's class that would format errors
with
their back-traces

K.

On Tue, Aug 5, 2014 at 5:20 AM, Ariel Valentin <ariel@arielvalentin.com>
54147c1a1223b425d4f4f7947c9bba46?d=identicon&s=25 Ariel Valentin (Guest)
on 2014-08-05 12:38
(Received via mailing list)
It occurred to me that Ruby loggers don't have the same error printing
features of SLF4J, so I think I am heading the route of using a utility
method to do that and just use error(String) for both cases.

Thanks,
Ariel
---
Sent from my mobile device. Please excuse any errors.
8c21306523b16ba5dd35c3549bf90994?d=identicon&s=25 Theo Hultberg (Guest)
on 2014-08-06 17:30
(Received via mailing list)
btw. if you haven't already written all your slf4j-integration code I
built
a Ruby Logger to SLF4J bridge a few months ago:
https://github.com/iconara/kreps

it doesn't have any exception logging feature though, since, as you say,
Ruby's Logger doesn't have it. Maybe it wouldn't be a bad feature to
pass
Ruby exceptions to SLF4J if you pass an exception object instead of a
string as message.

T#


On Tue, Aug 5, 2014 at 12:37 PM, Ariel Valentin
<ariel@arielvalentin.com>
54568ee7ba0c78a836e84c8756a3d681?d=identicon&s=25 Lenny Marks (Guest)
on 2014-08-06 17:58
(Received via mailing list)
You can also check out log4jruby (https://github.com/lenny/log4jruby).
We've been using it in production for quite some time now for our
Rails/Warbler/Tomcat apps.

-lenny
54147c1a1223b425d4f4f7947c9bba46?d=identicon&s=25 Ariel Valentin (Guest)
on 2014-08-06 18:17
(Received via mailing list)
Thanks all! I will look into these options.

Thanks,
Ariel
---
Sent from my mobile device. Please excuse any errors.
Please log in before posting. Registration is free and takes only a minute.
Existing account

NEW: Do you have a Google/GoogleMail, Yahoo or Facebook account? No registration required!
Log in with Google account | Log in with Yahoo account | Log in with Facebook account
No account? Register here.