> The final result might look like this: > > use WebApp; > use CGI::PSGI; > > my $handler = sub { > my $env = shift; > my $webapp = WebApp->new({ QUERY => CGI::PSGI->new($env) }); > $webapp->run_as_psgi; > };
I've considered this more, I want to submit a second draft of a proposal. First-class PSGI support should address all of the following aspects: 1. Passing in and setting up the PSGI env 2. Returning the PSGI required return format 3. Accessing the environment in an abstracted way. 4. Wrapping the whole application as a coderef which does steps 1-3. My initial proposal addressed the the return format, leaving setup and "env" access to CGI::PSGI, and letting the user deal with 4, the final wrapper. Michael Peters rightly pointed that arguments to new({}) is how we make all the other modifications to what happens in run(), and Miyagawa suggested that we provide a shortcut to generate the final wrapper as well, CGI::Application::PSGI does. So, some proposal refinements: 1. We should add an "env" method as an abstract way to access the environment. In non-PSGI code, this would just access \%ENV. Using this, internal code and plugins could access the environment in a way that would work with our without PSGI. With CGI::PSGI, we could access this already through $self->query->env, and perhaps $self->env will just be an alias for that. As a related example, we have this bug report: https://rt.cpan.org/Public/Bug/Display.html?id=54762 Adding a env() method to CGI::Application would help address it somewhat. 2. We add a wrapper method which should take the same arguments as new, but will default to setting up CGI::PSGI correctly and also calling run. So, running a CGI::Application project on PSGI could be as simple as this: WebApp->psgi_app({ ... args to new() ... }); If you want to manually construct the code ref, of course you still can. Anyone else have further thoughts on PSGI integration? Mark -- . . . . . . . . . . . . . . . . . . . . . . . . . . . Mark Stosberg Principal Developer m...@summersault.com Summersault, LLC 765-939-9301 ext 202 database driven websites . . . . . http://www.summersault.com/ . . . . . . . . ##### 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/ ## ## ## ################################################################