use strict;
use base 'Catalyst::Base';
use UNIVERSAL::require;
+use Catalyst::Exception;
use Catalyst::Log;
use Catalyst::Utils;
use Text::ASCIITable;
__PACKAGE__->mk_classdata($_) for qw/dispatcher engine log/;
-our $VERSION = '5.21';
+our $VERSION = '5.24';
our @ISA;
=head1 NAME
cd MyApp
# add models, views, controllers
- script/create.pl model Something
- script/create.pl view Stuff
- script/create.pl controller Yada
+ script/myapp_create.pl model Something
+ script/myapp_create.pl view Stuff
+ script/myapp_create.pl controller Yada
# built in testserver
- script/server.pl
+ script/myapp_server.pl
# command line interface
- script/test.pl /yada
+ script/myapp_test.pl /yada
use Catalyst;
=head1 DESCRIPTION
-Catalyst is based upon L<Maypole>, which you should consider for smaller
-projects.
-
The key concept of Catalyst is DRY (Don't Repeat Yourself).
See L<Catalyst::Manual> for more documentation.
}
else {
- die( qq/Unsupported mod_perl version: $ENV{MOD_PERL}/ );
+ Catalyst::Exception->throw(
+ message => qq/Unsupported mod_perl version: $ENV{MOD_PERL}/
+ );
}
}
}
else {
- die( qq/Unsupported mod_perl: $ENV{MOD_PERL}/ );
+ Catalyst::Exception->throw(
+ message => qq/Unsupported mod_perl: $ENV{MOD_PERL}/
+ );
}
}
$plugin->require;
- if ($@) { die qq/Couldn't load plugin "$plugin", "$@"/ }
+ if ( $@ ) {
+ Catalyst::Exception->throw(
+ message => qq/Couldn't load plugin "$plugin", "$@"/
+ );
+ }
else {
push @plugins, $plugin;
no strict 'refs';
$dispatcher = "Catalyst::Dispatcher::$appdis" if $appdis;
$dispatcher->require;
- die qq/Couldn't load dispatcher "$dispatcher", "$@"/ if $@;
+
+ if ( $@ ) {
+ Catalyst::Exception->throw(
+ message => qq/Couldn't load dispatcher "$dispatcher", "$@"/
+ );
+ }
+
{
no strict 'refs';
push @{"$caller\::ISA"}, $dispatcher;
$engine = "Catalyst::Engine::$appeng" if $appeng;
$engine->require;
- die qq/Couldn't load engine "$engine", "$@"/ if $@;
+
+ if ( $@ ) {
+ Catalyst::Exception->throw(
+ message => qq/Couldn't load engine "$engine", "$@"/
+ );
+ }
{
no strict 'refs';
# Find home
my $home = Catalyst::Utils::home($caller);
+
+ if ( my $h = $ENV{CATALYST_HOME} ) {
+
+ $home = $h if -d $h;
+
+ unless ( -e _ ) {
+ $caller->log->warn(qq/CATALYST_HOME does not exist "$h"/);
+ }
+
+ unless ( -e _ && -d _ ) {
+ $caller->log->warn(qq/CATALYST_HOME is not a directory "$h"/);
+ }
+ }
+
+ if ( my $h = $ENV{ uc($caller) . '_HOME' } ) {
+
+ $home = $h if -d $h;
+
+ unless ( -e _ ) {
+ my $e = uc($caller) . '_HOME';
+ $caller->log->warn(qq/$e does not exist "$h"/)
+ }
+
+ unless ( -e _ && -d _ ) {
+ my $e = uc($caller) . '_HOME';
+ $caller->log->warn(qq/$e is not a directory "$h"/);
+ }
+ }
+
if ( $caller->debug ) {
$home
? ( -d $home )
sub plugin {
my ( $class, $name, $plugin, @args ) = @_;
$plugin->require;
- my $error = $UNIVERSAL::require::ERROR;
- die qq/Couldn't load instant plugin "$plugin", "$error"/ if $error;
+
+ if ( my $error = $UNIVERSAL::require::ERROR ) {
+ Catalyst::Exception->throw(
+ message => qq/Couldn't load instant plugin "$plugin", "$error"/
+ );
+ }
+
eval { $plugin->import };
$class->mk_classdata($name);
my $obj;
eval { $obj = $plugin->new(@args) };
- die qq/Couldn't instantiate instant plugin "$plugin", "$@"/ if $@;
+
+ if ( $@ ) {
+ Catalyst::Exception->throw(
+ message => qq/Couldn't instantiate instant plugin "$plugin", "$@"/
+ );
+ }
+
$class->$name($obj);
$class->log->debug(qq/Initialized instant plugin "$plugin" as "$name"/)
if $class->debug;