[Rt-commit] r19116 - rt/3.999/trunk/lib/RT

clkao at bestpractical.com clkao at bestpractical.com
Thu Apr 9 10:59:21 EDT 2009


Author: clkao
Date: Thu Apr  9 10:59:20 2009
New Revision: 19116

Modified:
   rt/3.999/trunk/lib/RT/Lorzy.pm

Log:
handle errors when evaluating lorzy scripts.


Modified: rt/3.999/trunk/lib/RT/Lorzy.pm
==============================================================================
--- rt/3.999/trunk/lib/RT/Lorzy.pm	(original)
+++ rt/3.999/trunk/lib/RT/Lorzy.pm	Thu Apr  9 10:59:20 2009
@@ -13,8 +13,7 @@
 
 sub evaluate {
     my ($self, $code, %args) = @_;
-    my $ret = $EVAL->apply_script( $code, \%args );
-    return $ret;
+    eval { $EVAL->apply_script( $code, \%args ) };
 }
 
 sub create_scripish {
@@ -139,18 +138,24 @@
 
 sub prepare {
     my ( $self, %args ) = @_;
-    RT::Lorzy->evaluate( $self->factory->condition,
-        ticket      => $self->ticket_obj,
-        transaction => $self->transaction )
-        or return;
+    my $ret = RT::Lorzy->evaluate( $self->factory->condition,
+                                   ticket      => $self->ticket_obj,
+                                   transaction => $self->transaction );
+    if (my $e = Lorzy::Exception->caught()) {
+        Jifty->log->error("Rule '@{[ $self->description]}' condition error, ignoring: $e");
+    }
+    return unless $ret;
 
     return 1 unless $self->factory->prepare;
 
-    RT::Lorzy->evaluate( $self->factory->prepare,
+    $ret = RT::Lorzy->evaluate( $self->factory->prepare,
         context     => $self->context,
         ticket      => $self->ticket_obj,
         transaction => $self->transaction );
 
+    if (my $e = Lorzy::Exception->caught()) {
+        Jifty->log->error("Rule '@{[ $self->description]}' prepare error, ignoring: $e");
+    }
 }
 
 sub description { $_[0]->factory->description }
@@ -162,10 +167,15 @@
 
 sub commit {
     my ($self, %args) = @_;
-    return RT::Lorzy->evaluate( $self->factory->action,
-                                context => $self->context,
-                                ticket => $self->ticket_obj,
-                                transaction => $self->transaction);
+    my $ret = RT::Lorzy->evaluate( $self->factory->action,
+                                   context => $self->context,
+                                   ticket => $self->ticket_obj,
+                                   transaction => $self->transaction);
+
+    if (my $e = Lorzy::Exception->caught()) {
+        Jifty->log->error("Rule '@{[ $self->description]}' commit error: $e");
+    }
+    return $ret;
 }
 
 1;


More information about the Rt-commit mailing list