[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