=cut
-sub run { my $c = shift; return $c->engine->run( $c, $c->_finalized_psgi_app, @_ ) }
+sub run {
+ my $c = shift;
+ $c->engine_loader->needs_psgi_engine_compat_hack ?
+ $c->_run_needs_psgi_engine_compat_hack(@_) :
+ $c->engine->run( $c, $c->_finalized_psgi_app, @_ );
+}
+
+sub _run_needs_psgi_engine_compat_hack {
+ my $c = shift;
+
+ ## We assume if they used the classic PSGI Engine, they must has CC:M
+ for my $metal (Catalyst::Controller::Metal->metals_for($c)) {
+ my $res = $metal->call(@_);
+ if (defined $res && !(ref $res eq 'ARRAY' && $res->[0] == 404)) {
+ return $res;
+ }
+ }
+
+ ## If we got this far, just do the psgi app
+ $c->_finalized_psgi_app->(@_)
+}
=head2 $c->set_action( $action, $code, $namespace, $attrs )
use Catalyst::Exception;
use File::Copy ();
-use IO::File qw( SEEK_SET );
+use IO::File ();
use File::Spec::Unix;
has filename => (is => 'rw');
binmode( $handle, $layer );
- $handle->seek(0, SEEK_SET);
+ $handle->seek(0, IO::File::SEEK_SET);
while ( $handle->sysread( my $buffer, 8192 ) ) {
$content .= $buffer;
}
- $handle->seek(0, SEEK_SET);
+ $handle->seek(0, IO::File::SEEK_SET);
return $content;
}