RSS Git Download  Clone
Raw Blame History
#!/usr/bin/env perl

use strict;
use warnings;
use FindBin '$Bin';
use lib "$Bin/../lib";

use Path::Tiny;
use SessionTest;
use Data::Printer;

# check we have a sessions & logs dir:
for my $dir( qw/logs sessions/ ) {
    my $path = path($Bin, '/../', $dir)->realpath; # warn $path;
    -e $path or warn "required directory '$path' is missing"; # no need for fatals
}

# use this block if you don't need middleware, and only have a single target Dancer app to run here
# SessionTest->to_app;

#=begin comment
# use this block if you want to include middleware such as Plack::Middleware::Deflater

use CHI;
use YAML;
use Plack::Builder;
# use Plack::App::Directory;
use Plack::Session::Store::File;
use Plack::Session::Store::Cache;

builder { # p %ENV;
	# mount "/css" => Plack::App::Directory->new({ root => "public/css" })->to_app;
    enable 'Debug' if $ENV{PLACK_ENV} eq 'development';
	enable 'Static', # this works for stand-alone plackup but not lighttp proxy due to path:
        path => qr{^/(images|javascripts|css)/}, root => 'public/';
	enable 'Session', 
		store => Plack::Session::Store::Cache->new(
            cache => CHI->new(driver => 'FastMmap', dir_create_mode => 0777)
        );
		#store => Plack::Session::Store::File->new(
        #    dir => $FindBin::Bin . '/../sessions',
            # default serializer = Storable; YAML takes it's args the opposite order
        #    serializer   => sub { YAML::DumpFile( reverse @_ ) },
        #    deserializer => sub { YAML::LoadFile( @_ ) },
        # ;
    SessionTest->to_app;
}

#=end comment

=cut

=begin comment
# use this block if you want to mount several applications on different path

use SessionTest;
use SessionTest_admin;

use Plack::Builder;

builder {
    mount '/'      => SessionTest->to_app;
    mount '/admin' => SessionTest_admin->to_app;
}

=end comment

=cut