X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FPlugin%2FStatic%2FSimple.pm;h=e15a9dea68570276bcc41656e82a71573db126ce;hb=6e89d83c40a25202d31ac9f9d8386ddab1f1c0a4;hp=7f9ab73fbbdc5b6d9d7a7364e0be4bcdd8843f4c;hpb=6a009cf08859e568c566a28d60f540bdf51bbbb1;p=catagits%2FCatalyst-Plugin-Static-Simple.git diff --git a/lib/Catalyst/Plugin/Static/Simple.pm b/lib/Catalyst/Plugin/Static/Simple.pm index 7f9ab73..e15a9de 100644 --- a/lib/Catalyst/Plugin/Static/Simple.pm +++ b/lib/Catalyst/Plugin/Static/Simple.pm @@ -8,7 +8,7 @@ use File::Spec (); use IO::File (); use MIME::Types (); -our $VERSION = '0.18'; +our $VERSION = '0.20'; __PACKAGE__->mk_accessors( qw/_static_file _static_debug_message/ ); @@ -22,7 +22,11 @@ sub prepare_action { # is the URI in a static-defined path? foreach my $dir ( @{ $config->{dirs} } ) { my $dir_re = quotemeta $dir; - my $re = ( $dir =~ m{^qr/}xms ) ? eval $dir : qr/^${dir_re}/; + + # strip trailing slashes, they'll be added in our regex + $dir_re =~ s{/$}{}; + + my $re = ( $dir =~ m{^qr/}xms ) ? eval $dir : qr{^${dir_re}/}; if ($@) { $c->error( "Error compiling static dir regex '$dir': $@" ); } @@ -34,6 +38,7 @@ sub prepare_action { $c->_debug_msg( "404: file not found: $path" ) if $config->{debug}; $c->res->status( 404 ); + $c->res->content_type( 'text/html' ); } } } @@ -209,6 +214,7 @@ sub serve_static_file { $c->_debug_msg( "404: file not found: $full_path" ) if $config->{debug}; $c->res->status( 404 ); + $c->res->content_type( 'text/html' ); return; } @@ -267,9 +273,12 @@ Catalyst::Plugin::Static::Simple - Make serving static pages painless. use Catalyst; MyApp->setup( qw/Static::Simple/ ); - # that's it; static content is automatically served by - # Catalyst, though you can configure things or bypass - # Catalyst entirely in a production environment + # that's it; static content is automatically served by Catalyst + # from the application's root directory, though you can configure + # things or bypass Catalyst entirely in a production environment + # + # one caveat: the files must be served from an absolute path + # (i.e. /images/foo.png) =head1 DESCRIPTION @@ -431,13 +440,14 @@ is automatically enabled when running Catalyst in -Debug mode. =head1 USING WITH APACHE -While Static::Simple will work just fine serving files through Catalyst in -mod_perl, for increased performance, you may wish to have Apache handle the -serving of your static files. To do this, simply use a dedicated directory -for your static files and configure an Apache Location block for that -directory. This approach is recommended for production installations. +While Static::Simple will work just fine serving files through Catalyst +in mod_perl, for increased performance you may wish to have Apache +handle the serving of your static files directly. To do this, simply use +a dedicated directory for your static files and configure an Apache +Location block for that directory This approach is recommended for +production installations. - + SetHandler default-handler @@ -446,6 +456,25 @@ through Catalyst. You can leave Static::Simple as part of your application, and it will continue to function on a development server, or using Catalyst's built-in server. +In practice, your Catalyst application is probably (i.e. should be) +structured in the recommended way (i.e., that generated by bootstrapping +the application with the C script, with a main directory +under which is a C directory for module files and a C +directory for templates and static files). Thus, unless you break up +this structure when deploying your app by moving the static files to a +different location in your filesystem, you will need to use an Alias +directive in Apache to point to the right place. You will then need to +add a Directory block to give permission for Apache to serve these +files. The final configuration will look something like this: + + Alias /myapp/static /filesystem/path/to/MyApp/root/static + + allow from all + + + SetHandler default-handler + + =head1 PUBLIC METHODS =head2 serve_static_file $file_path