Re: [cgiapp] cgi::application::dispatch under PSGI

2012-02-28 Thread Kurt Lidl
On 2/28/2012 11:45 AM, Kurt Lidl wrote:
 Greetings.

 I've got a large application that is running under mod_perl, running on
 Apache 2.2.22.
 Everything is working OK there.  It uses CGI::Application::Dispatch as
 its invocation
 method.

Debugging this further, I see that the PATH_INFO environmental variable 
has been reset
to /' by the time CGI::Application::Dispatch::PSGI.pm has started to 
run.  That explains why
I'm not getting parameters passed into the scripts.

Curiously, the SCRIPT_NAME and SCRIPT_URL variables are still set 
properly.

I guess I just have to figure out where the PATH_INFO is getting mangled...

-Kurt


#  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/ ##
####




Re: [cgiapp] cgi::application::dispatch under PSGI

2012-02-28 Thread Rhesa Rozendaal
On 02/28/2012 05:45 PM, Kurt Lidl wrote:
 Greetings.

 I've got a large application that is running under mod_perl, running on
 Apache 2.2.22.
 Everything is working OK there.  It uses CGI::Application::Dispatch as
 its invocation
 method.

I'm using roughly the same stack, though I use starman in dev, and 
intend to do so in prod as well (behind an apache reverse proxy).

 I became interested in making that application work under PSGI.  Since
 that is
 now supported natively by modern versions of CGI::Application, I figured
 it shouldn't
 be too hard to make this work.

It's not hard, but I found out it takes jumping through some hoops.

 I've got a dead-simple .psgi file:

 --- snip, snip ---
 use lib ('..');

 use Data::Dump qw(dump ddx);
 use CWS1::Dispatch;

 CWS1::Dispatch-as_psgi;
 --- snip, snip ---

Here's mine, using your class name as example:

--- snip, snip ---
use CWS1::Dispatch;
use CGI::PSGI;

my $cgiapp = sub {
 my $env = shift;
 CWS1::Dispatch-as_psgi(
 args_to_new = {
 QUERY = CGI::PSGI-new($env),
 })-($env);
};
--- snip, snip ---

The key here is that I found I needed to make sure each request gets a 
fresh instance of a CGI::PSGI object.


 In my Dispatch.pm file, I have this:

Mine is the same (in structure).

There's nothing specific in my regular apps, and I do receive params 
from CA::Dispatch. So I think you'll get it working in your situation 
too, as long as you make sure you pass in a fresh CGI::PSGI object every 
time.

rhesa

#  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/ ##
####