Take me over?
NAME
Plack::App::FakeApache - Wrapping mod_perl2 applications in Plack
SYNOPSIS
use Plack::App::FakeApache;
my $app = Plack::App::FakeApache->new(
response_handler => "My::ResponseHandler"
dir_config => { ... }
)->to_app;
DESCRIPTION
Plack::App::FakeApache transforms a mod_perl2 application into a PSGI application
NOTICE
This is Proof of Concept code originating in the mocking code developed to test an internal very non-trivial mod_perl2 application. Features have been added on a need to have basis.
This code has been extended to make a different non-trivial mod_perl app work under plack too. If you need to use this module for serious work you will almost certainly need to read and modify the source. Contributions welcomed.
CONFIGURATION
*_handler arguments support multiple "stacked" handlers if passed as an arrayref.
- authen_handler
- authz_handler
- response_handler (required)
- handler (alias for response_handler)
-
Handlers for the respective request phases. Pass a blessed object, a class name or use the
Class->method
syntax. See the mod_perl docs for calling conventions.=request_class
If you want to subclass Plack::App::FakeApache::Request do so here. Make sure that your subclass inherits from Plack::App::FakeApache::Request (duh). This is for use in situations where you've subclasssed Apache2::Request and want to make it work under PSGI.
- dir_config
-
Hash used to resolve $req->dir_config() requests
- root
-
Root directory of the file system (optional, defaults to the current working directory)
- logger
-
The destination of the log messages (i.e. the errorlog). This should be a file handle
- request_args
-
Aditional args passed to the fake request object. E.g. auth_name and auth_type.
APACHE METHODS
The following methods from Apache2::RequestRec and mixins are supported:
- headers_in
- headers_out
- subprecess_env
- dir_config
- method
- unparsed_uri
- uri
- user
- hostname
- content_type
- content_encoding
- status
- log_reason (implemented as a no-op)
- read
- write
- filename
- construct_url
- auth_type
- auth_name
- is_initial_req
PLACK METHODS
A few methods have been added to the interface to enable interaction with Plack:
- plack_request
-
Returns the underling Plack::Request object
- plack_response
-
Returns the underlying Plack::Response object. During the request phase this is incomplete.
- finalize
-
Fills information into the response object and finalizes it.
MOD_PERL OVERRIDES
mod_perl overrides exit with ModPerl::Util. The way I've handled (kd) this was that in order to override the horrors of overriding CORE::GLOBAL::EXIT was to have a subroutine main::legacy_exit defined in the startup.pl or in the .psgi file which calls die "EXIT $number". Meanwhile this specific exception is ignored by Plack::APP::FakeApache.
AUTHOR
Peter Makholm, peter@makholm.net
Override subrequest, more cgi.pm support and exit support by Kieren Diment zarquon@cpan.org.