X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=blobdiff_plain;f=lib%2FCatalyst%2FUtils.pm;h=d27fa9c5e83c7dedc153261735c660f461257c4f;hp=fd23d9504e0aea2de046aca14e1c1307986f33ed;hb=2f3812528068bc1d9f7840067f0c03d36cd47e6d;hpb=59ede84ed03cb297507bbb89058479040969c6f8 diff --git a/lib/Catalyst/Utils.pm b/lib/Catalyst/Utils.pm index fd23d95..d27fa9c 100644 --- a/lib/Catalyst/Utils.pm +++ b/lib/Catalyst/Utils.pm @@ -8,6 +8,7 @@ use Path::Class; use URI; use Class::Inspector; use Carp qw/croak/; +use Cwd; =head1 NAME @@ -160,6 +161,7 @@ sub home { # find the @INC entry in which $file was found (my $path = $inc_entry) =~ s/$file$//; + $path ||= cwd() if !defined $path || !length $path; my $home = dir($path)->absolute->cleanup; # pop off /lib and /blib if they're there @@ -171,8 +173,9 @@ sub home { # clean up relative path: # MyApp/script/.. -> MyApp - my ($lastdir) = $home->dir_list( -1, 1 ); - if ( $lastdir eq '..' ) { + my $dir; + my @dir_list = $home->dir_list(); + while (($dir = pop(@dir_list)) && $dir eq '..') { $home = dir($home)->parent->parent; } @@ -264,7 +267,9 @@ sub ensure_class_loaded { my $error; { local $@; - eval "require $class;"; + my $file = $class . '.pm'; + $file =~ s{::}{/}g; + eval { CORE::require($file) }; $error = $@; } @@ -326,10 +331,9 @@ sub env_value { return; } -=head1 AUTHOR +=head1 AUTHORS -Sebastian Riedel, C -Yuval Kogman, C +Catalyst Contributors, see Catalyst.pm =head1 COPYRIGHT