[Jifty-commit] r615 - in jifty/trunk: lib/Jifty lib/Jifty/Action lib/Jifty/Script lib/Jifty/Web/Form

jifty-commit at lists.jifty.org jifty-commit at lists.jifty.org
Tue Feb 21 23:59:04 EST 2006


Author: alexmv
Date: Tue Feb 21 23:59:03 2006
New Revision: 615

Modified:
   jifty/trunk/   (props changed)
   jifty/trunk/lib/Jifty/Action/Record.pm
   jifty/trunk/lib/Jifty/ClassLoader.pm
   jifty/trunk/lib/Jifty/Collection.pm
   jifty/trunk/lib/Jifty/Handle.pm
   jifty/trunk/lib/Jifty/Handler.pm
   jifty/trunk/lib/Jifty/LetMe.pm
   jifty/trunk/lib/Jifty/Script/Schema.pm
   jifty/trunk/lib/Jifty/Util.pm
   jifty/trunk/lib/Jifty/Web.pm
   jifty/trunk/lib/Jifty/Web/Form/Field.pm

Log:
 r9229 at zoq-fot-pik:  chmrr | 2006-02-21 23:58:11 -0500
  * Use Jifty::Util->require to log require errors
  * Auto-generate Bootstrap class
  * Check for a valid Jifty->web->response object before calling
    ->results on it


Modified: jifty/trunk/lib/Jifty/Action/Record.pm
==============================================================================
--- jifty/trunk/lib/Jifty/Action/Record.pm	(original)
+++ jifty/trunk/lib/Jifty/Action/Record.pm	Tue Feb 21 23:59:03 2006
@@ -63,9 +63,7 @@
     my $self = $class->SUPER::new(%args);
 
     my $record_class = $self->record_class;
-    $record_class->require;
-
-    $self->log->error("Can't require $record_class") if $UNIVERSAL::require::ERROR;
+    Jifty::Util->require($record_class);
 
     # Set up record
     if (ref $record_class) {

Modified: jifty/trunk/lib/Jifty/ClassLoader.pm
==============================================================================
--- jifty/trunk/lib/Jifty/ClassLoader.pm	(original)
+++ jifty/trunk/lib/Jifty/ClassLoader.pm	Tue Feb 21 23:59:03 2006
@@ -56,7 +56,11 @@
 
 =item I<ApplicationClass::Dispatcher>.
 
-An empty class that descends from L<Jifty::Dispatcher>
+An empty class that descends from L<Jifty::Dispatcher>.
+
+=item I<Application>::Bootstrap
+
+An empty class that descends from L<Jifty::Bootstrap>.
 
 =item I<CurrentUserClass> (generally I<Application>::CurrentUser)
 
@@ -100,7 +104,7 @@
     if ( $module =~ m!^($ApplicationClassPrefix)$! ) {
         return $self->return_class( "use warnings; use strict; package " . $ApplicationClassPrefix . ";\n"." 1;" );
     } 
-    elsif ( $module =~ m!^(?:$ApplicationClassPrefix)::(Record|Collection|Notification|Dispatcher)$! ) {
+    elsif ( $module =~ m!^(?:$ApplicationClassPrefix)::(Record|Collection|Notification|Dispatcher|Bootstrap)$! ) {
         return $self->return_class( "use warnings; use strict; package " . $ApplicationClassPrefix . "::". $1.";\n".
             "use base qw/Jifty::$1/; sub _autogenerated { 1 };\n"."1;" );
     } 
@@ -125,7 +129,8 @@
          
         # Auto-create CRUD classes
         my $modelclass = $ApplicationClassPrefix . "::Model::" . $3;
-        $modelclass->require;
+        Jifty::Util->require($modelclass);
+
         return undef unless eval {$modelclass->table}; #self->{models}{$modelclass};
 
         my $class = $ActionBasePath ."::".$2.$3;
@@ -169,9 +174,8 @@
     my $ApplicationClassPrefix = Jifty->config->framework('ApplicationClass');
     # if we don't even have an application class, this trick will not work
     return unless  ($ApplicationClassPrefix); 
-    $ApplicationClassPrefix->require;
-
-    Jifty->config->framework('CurrentUserClass')->require;
+    Jifty::Util->require($ApplicationClassPrefix);
+    Jifty::Util->require(Jifty->config->framework('CurrentUserClass'));
 
     my $ActionBasePath = Jifty->config->framework('ActionBasePath');
 
@@ -184,8 +188,9 @@
     $self->{models} = {map {($_ => 1)} grep {/^($ApplicationClassPrefix)::Model::(.*)$/ and not /Collection$/} $self->plugins};
     for my $full (keys %{$self->{models}}) {
         my($short) = $full =~ /::Model::(.*)/;
-         ($full . "Collection")->require;
-         ($ActionBasePath . "::" . $_ . $short)->require for qw/Create Update Delete/;
+        Jifty::Util->require($full . "Collection");
+        Jifty::Util->require($ActionBasePath . "::" . $_ . $short)
+            for qw/Create Update Delete/;
     }
 
 }

Modified: jifty/trunk/lib/Jifty/Collection.pm
==============================================================================
--- jifty/trunk/lib/Jifty/Collection.pm	(original)
+++ jifty/trunk/lib/Jifty/Collection.pm	Tue Feb 21 23:59:03 2006
@@ -100,7 +100,8 @@
 sub new_item {
     my $self = shift;
     my $class =$self->record_class();
-    $class->require();
+    Jifty::Util->require($class);
+
     # We do this as a performance optimization, so we don't need to do the stackwalking to find it
     return $class->new(current_user => $self->current_user);
 }

Modified: jifty/trunk/lib/Jifty/Handle.pm
==============================================================================
--- jifty/trunk/lib/Jifty/Handle.pm	(original)
+++ jifty/trunk/lib/Jifty/Handle.pm	Tue Feb 21 23:59:03 2006
@@ -40,7 +40,8 @@
     # We do this to avoid Jifty::DBI::Handle's magic reblessing, because
     # it breaks subclass methods.
     my $driver_class  = "Jifty::DBI::Handle::".  $driver;
-    $driver_class->require;
+    Jifty::Util->require($driver_class);
+
     unshift @ISA, $driver_class;
     return $class->SUPER::new();
 }

Modified: jifty/trunk/lib/Jifty/Handler.pm
==============================================================================
--- jifty/trunk/lib/Jifty/Handler.pm	(original)
+++ jifty/trunk/lib/Jifty/Handler.pm	Tue Feb 21 23:59:03 2006
@@ -152,7 +152,7 @@
     ));
 
     $self->dispatcher(Jifty->config->framework('ApplicationClass')."::Dispatcher");
-    $self->dispatcher->require or Jifty->log->error("Compile error in ".$self->dispatcher.": $@");
+    Jifty::Util->require($self->dispatcher);
     $self->dispatcher->handle_request();
 
     $self->cleanup_request();

Modified: jifty/trunk/lib/Jifty/LetMe.pm
==============================================================================
--- jifty/trunk/lib/Jifty/LetMe.pm	(original)
+++ jifty/trunk/lib/Jifty/LetMe.pm	Tue Feb 21 23:59:03 2006
@@ -73,9 +73,8 @@
     my $self = shift;
     my $email = shift;
     my $currentuser_object_class = Jifty->config->framework('CurrentUserClass');
-    $currentuser_object_class->require;
+    Jifty::Util->require($currentuser_object_class);
     return $currentuser_object_class->new( email => $email );
-
 }
 
 

Modified: jifty/trunk/lib/Jifty/Script/Schema.pm
==============================================================================
--- jifty/trunk/lib/Jifty/Script/Schema.pm	(original)
+++ jifty/trunk/lib/Jifty/Script/Schema.pm	Tue Feb 21 23:59:03 2006
@@ -66,8 +66,8 @@
     my $self = shift;
 
     # Import Jifty
-    Jifty->require                or die $UNIVERSAL::require::ERROR;
-    Jifty::Model::Schema->require or die $UNIVERSAL::require::ERROR;
+    Jifty::Util->require("Jifty");
+    Jifty::Util->require("Jifty::Model::Schema");
 }
 
 
@@ -226,7 +226,7 @@
         # Load initial data
         eval {
             my $bootstrapper = $self->{'_application_class'} . "::Bootstrap";
-            $bootstrapper->require();
+            Jifty::Util->require($bootstrapper);
 
             $bootstrapper->run()
                 if ( UNIVERSAL::can( $bootstrapper => 'run' ) );
@@ -274,7 +274,8 @@
     # Figure out what versions the upgrade knows about.
     eval {
         my $upgrader = $self->{'_application_class'} . "::Upgrade";
-        $upgrader->require();
+        Jifty::Util->require($upgrader);
+
         $UPGRADES{$_} = [ $upgrader->upgrade_to($_) ]
             for grep { $appv >= version->new($_) and $dbv < version->new($_) }
             $upgrader->versions();

Modified: jifty/trunk/lib/Jifty/Util.pm
==============================================================================
--- jifty/trunk/lib/Jifty/Util.pm	(original)
+++ jifty/trunk/lib/Jifty/Util.pm	Tue Feb 21 23:59:03 2006
@@ -152,6 +152,28 @@
 
 }
 
+=head2 require PATH
+
+Uses L<UNIVERSAL::require> to require the provided C<PATH>.
+Additionally, logs any failures at the C<error> log level.
+
+=cut
+
+sub require {
+    my $self = shift;
+    my $class = shift;
+
+    $class->require;
+    if ($UNIVERSAL::require::ERROR) {
+        my $error = $UNIVERSAL::require::ERROR;
+        $error =~ s/ at .*?\n$//;
+        Jifty->log->error(sprintf("$error at %s line %d\n",
+                                 (caller)[1,2]));
+        return 0;
+    }
+    return 1;
+}
+
 =head1 AUTHOR
 
 Various folks at Best Practical Solutions, LLC.

Modified: jifty/trunk/lib/Jifty/Web.pm
==============================================================================
--- jifty/trunk/lib/Jifty/Web.pm	(original)
+++ jifty/trunk/lib/Jifty/Web.pm	Tue Feb 21 23:59:03 2006
@@ -168,7 +168,8 @@
     }
     else {
         my $class = Jifty->config->framework('CurrentUserClass');
-        $class->require;
+        Jifty::Util->require($class);
+
         my $object = $class->new();
         $object->is_superuser(1) if Jifty->config->framework('AdminMode');
         return ($object);
@@ -520,16 +521,11 @@
         unless $class =~ /^\Q$base_path\E::/
         or $class     =~ /^Jifty::Action::/;
 
-    unless ( $class->require ) {
-
-# The implementation class is provided by the client, so this isn't a "shouldn't happen"
-        $self->log->error( "Error requiring $class: ",
-            $UNIVERSAL::require::ERROR );
-        return;
-    }
+    # The implementation class is provided by the client, so this
+    # isn't a "shouldn't happen"
+    return unless Jifty::Util->require( $class );
 
     my $action;
-
     # XXX TODO bullet proof
     eval { $action = $class->new( %args, arguments => {%arguments} ); };
     if ($@) {
@@ -643,7 +639,7 @@
     my $self = shift;
     my $page = shift || $self->next_page;
 
-    if (   $self->response->results
+    if ( ($self->response and $self->response->results)
         or $self->request->state_variables )
     {
         my $request = Jifty::Request->new();

Modified: jifty/trunk/lib/Jifty/Web/Form/Field.pm
==============================================================================
--- jifty/trunk/lib/Jifty/Web/Form/Field.pm	(original)
+++ jifty/trunk/lib/Jifty/Web/Form/Field.pm	Tue Feb 21 23:59:03 2006
@@ -75,9 +75,7 @@
     }
     if ($subclass) { 
         $subclass = 'Jifty::Web::Form::Field::' . $subclass unless $subclass =~ /::/;
-        if ( $subclass->require() ) {
-            bless $self, $subclass;
-        }
+        bless $self, $subclass if Jifty::Util->require($subclass);
     }
 
     for my $field ( $self->accessors() ) {


More information about the Jifty-commit mailing list