I keep banging my head against the wall trying to figure this out.  I expect 
that I am doing something else wrong, but whenever I comment out the session 
initialization logic, my app runs (as well as it can without sessions, that is).

I am getting this error under FCGI and PSGI:
"[Dispatch] ERROR for request '/': Unknown error: Error executing class 
callback in init stage: Calling session_config after the session has already 
been created at 
/Users/crome/perl5/perlbrew/perls/perl-5.14.2/lib/site_perl/5.14.2/CGI/Application/Plugin/Session.pm
 line 79."

In both cases, nginx is serving as the front end for FCGI::Engine or plackup 
(tried several engines).  

My cgiapp_init() looks like:

method cgiapp_init {
    my $system = $self->param( 'DEVNET_SYSTEM' );
    my $path   = $self->param( 'DEVNET_PATH'   );
    my $file   = "${path}conf/wedge.conf";

    $self->conf->init(
        file   => $file,
        driver => 'ConfigGeneral',
    );

    # Set up templating options and filters
    use DEVNET::TT qw( :all );
    my $tt_opts = {
        PRE_PROCESS   => 'devnet.tt',
        WRAPPER       => 'wrapper.tt',
        COMPILE_EXT   => '.ttc',
        COMPILE_DIR   => File::Spec->tmpdir . '/tt',
    };

    $tt_opts->{ CONTEXT } = Template::Timer->new( $tt_opts ) if 
$self->conf->param( 'debug' );

    $self->tt_config( TEMPLATE_OPTIONS => $tt_opts );

    mkdir "$path/logs" unless -e "$path/logs";
    $self->log_config( LOG_DISPATCH_MODULES => [{
        module         => 'Log::Dispatch::File',
        name           => 'Application',
        min_level      => $self->conf->param( 'DebugInfo' )->{ 'min_level' },
        filename       => "${path}logs/wedge.log",
        mode           => 'append',
        append_newline => 1,
    }]);

    try {
        $self->dbic_config( 'Property', {
            schema       => 'DEVNET::Schema',
            connect_info => [{ dbh_maker => sub {
                return DEVNET::DB::connect({
                    config => \%{ $self->conf->raw },
                });
            }}]
        });
        }
        catch {
                return $self->redirect( '/wedge/error/maintenance' );
        };

    mkdir "${path}data" unless -e "${path}data";
    $self->session_config(
        CGI_SESSION_OPTIONS => [ "driver:File", $self->query, { Directory => 
"${path}data/" }],
        SEND_COOKIE => 1,
    );
}

My nginx.conf looks like:

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include           /DEVNET_WWW/nginx/conf/mime.types;
    default_type      application/octet-stream;
    sendfile          on;
    keepalive_timeout 65;
    gzip              on;

    server {
        listen       8000;
        server_name  localhost;

                access_log /DEVNET_WWW/Apps/sites/client/logs/access.log;
                error_log  /DEVNET_WWW/Apps/sites/client/logs/error.log;

                root /DEVNET_WWW/Apps/sites/client/static;

        location /common/ {
                        alias /DEVNET_WWW/Apps/sites/default/common/;
        }

                location /wedge {
                        include       /DEVNET_WWW/nginx/conf/fastcgi_params;
                        fastcgi_pass  unix:/tmp/client.sock;

                        fastcgi_split_path_info ^(/wedge)(/?.+)$;
                        fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
                        fastcgi_param PATH_INFO       $fastcgi_path_info;
                        fastcgi_param PATH_TRANSLATED 
$document_root$fastcgi_path_info;
                        fastcgi_param DEVNET_PATH     
/DEVNET_WWW/Apps/sites/client/;
                        fastcgi_param DEVNET_ROOT     /DEVNET_WWW/Apps/;
                        fastcgi_param DEVNET_SYSTEM   TaxInquiry;
                }
    }
}

Who else is using CAP::Session with FCGI or Plack?  How did you get it to work? 
 (Running on OS X but I am not sure that makes a difference).

Any help or suggestions most appreciated.  Thank you!

Jason A. Crome / CromeDome
DEVNET, Inc. - Cutting Edge Property Tax and Appraisal Solutions - 
http://www.devnetinc.com
--
AIM: TheOneCromeDome
Twitter: http://www.twitter.com/cromedome
Blog: http://crome-plated.tumblr.com/
CPAN: http://search.cpan.org/~cromedome/
github: http://github.com/cromedome
Bitbucket: https://bitbucket.org/cromedome/


#####  CGI::Application community mailing list  ################
##                                                            ##
##  To unsubscribe, or change your message delivery options,  ##
##  visit:  http://www.erlbaum.net/mailman/listinfo/cgiapp    ##
##                                                            ##
##  Web archive:   http://www.erlbaum.net/pipermail/cgiapp/   ##
##  Wiki:          http://cgiapp.erlbaum.net/                 ##
##                                                            ##
################################################################

Reply via email to