NAME
Mojolicious::Plugin::MountPSGI - Mount PSGI apps
SYNOPSIS
# Mojolicious
$self->plugin('MountPSGI', { '/' => 'ext/MyApp/app.psgi'});
# Mojolicious::Lite
plugin 'MountPSGI', { '/' => 'ext/MyApp/app.psgi' };
# rewrite the path so the psgi app doesn't see the mount point
# thus app.psgi sees / when /mount is visited
plugin 'MountPSGI', { '/mount' => 'ext/MyApp/app.psgi', rewrite => 1 };
DESCRIPTION
Mojolicious::Plugin::MountPSGI lets you mount any PSGI app inside a Mojolicious app. For instance you could use this to deploy your PSGI app under hypnotoad, or to include a PSGI app inside a path inside your Mojo app.
The key given is the route under which to mount the app. The value is either a PSGI application or a string which resolves to an instance via "load_psgi" in Plack::Util.
One additional option is rewrite
which if set to a true value will rewrite the PATH_INFO
and SCRIPT_NAME
values in the env hash so that the application does not see the mount point in its request path. This uses the mechanism as described by Plack::App::URLMap.
CAVEATS
Due to the way Mojolicious parses multipart requests, the original request body is not available to pass to the PSGI application. As a stopgap measure this plugin rebuilds the request from its parts at what is likely a huge cost in performance. There has been discussion about "adding proxying primatives" to Mojolicious which would likely be useful in resolving this performance hit.
If PLACK_ENV
is not otherwise set, the "mode" in Mojolicious will be used while loading the application script and during synchronous responses. For delayed responses, the plugin cannot ensure that it will be set. Applications should fetch their PLACK_ENV
before requesting a delayed response and manage it appropriately.
METHODS
Mojolicious::Plugin::MountPSGI inherits all methods from Mojolicious::Plugin and implements the following new ones.
register
$plugin->register;
Register plugin in Mojolicious application.
SEE ALSO
Mojolicious, Mojolicious::Guides, http://mojolicio.us.
CONTRIBUTORS
Joel Berger (jberger)
Peter Valdemar Mørch (pmorch)
Graham Knop (haarg)
COPYRIGHT
Most of this module was assembled from the Mojo mount plugin and the Mojolicious-Plugin-PlackMiddleware plugin. Copyright on that code belongs to the authors.
The remainder is (C) 2011-2015 Marcus Ramberg and the /CONTRIBUTORS
above.
LICENSE
Licensed under the same terms as Perl itself.