Static::Simple 0.20, fixed static dirs regex and added content-type text/html to...
[catagits/Catalyst-Plugin-Static-Simple.git] / lib / Catalyst / Plugin / Static / Simple.pm
index aa0c732..7dbf37e 100644 (file)
@@ -8,7 +8,7 @@ use File::Spec ();
 use IO::File ();
 use MIME::Types ();
 
-our $VERSION = '0.17';
+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' );
             }
         }
     }
@@ -92,6 +97,7 @@ sub setup {
     $config->{ignore_dirs} ||= [];
     $config->{debug} ||= $c->debug;
     $config->{no_logs} = 1 unless defined $config->{no_logs};
+    $config->{no_logs} = 0 if $config->{logging};
     
     # load up a MIME::Types object, only loading types with
     # at least 1 file extension
@@ -208,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;
     }
 
@@ -266,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
+    # (ie. /images/foo.png)
 
 =head1 DESCRIPTION
 
@@ -322,7 +332,7 @@ Since Catalyst 5.50, logging of static requests is turned off by
 default; static requests tend to clutter the log output and rarely
 reveal anything useful. However, if you want to enable logging of static
 requests, you can do so by setting
-C<MyApp-E<gt>config-E<gt>{static}-E<gt>{no_logs}> to 0.
+C<MyApp-E<gt>config-E<gt>{static}-E<gt>{logging}> to 1.
 
 =head2 Forcing directories into static mode