From 72854549cde7a9957a21ad033ef87dba50a22f53 Mon Sep 17 00:00:00 2001 From: Patrick Donelan Date: Thu, 15 Apr 2010 11:00:06 -0400 Subject: [PATCH] Multi-site support --- app.psgi | 80 +++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 56 insertions(+), 24 deletions(-) diff --git a/app.psgi b/app.psgi index f99b64ccc..dc644af78 100644 --- a/app.psgi +++ b/app.psgi @@ -4,31 +4,63 @@ use lib '/data/WebGUI/lib'; use WebGUI; my $root = '/data/WebGUI'; -my $wg = WebGUI->new( root => $root, site => 'dev.localhost.localdomain.conf' ); -my $config = $wg->config; builder { + mount "http://dev.localhost.localdomain/" => builder { + + my $wg = WebGUI->new( root => $root, site => 'dev.localhost.localdomain.conf' ); + my $config = $wg->config; + enable 'Log4perl', category => 'mysite', conf => "$root/etc/log.conf"; + + # Reproduce URL handler functionality with middleware + enable '+WebGUI::Middleware::Snoop'; + enable 'Static', root => $root, path => sub {s{^/\*give-credit-where-credit-is-due\*$}{docs/credits.txt}}; + enable 'Status', path => qr{^/uploads/dictionaries}, status => 401; + + # For PassThru, use Plack::Builder::mount + + # Extras fallback (you should be using something else to serve static files in production) + my ( $extrasURL, $extrasPath ) = ( $config->get('extrasURL'), $config->get('extrasPath') ); + enable 'Static', root => "$extrasPath/", path => sub {s{^$extrasURL/}{}}; + + # Open/close the WebGUI::Session at the outer-most onion layer + enable '+WebGUI::Middleware::Session', + config => $config, + error_docs => { 500 => "$root/www/maintenance.html" }; + + # This one uses the Session object, so it comes after WebGUI::Middleware::Session + enable '+WebGUI::Middleware::WGAccess', config => $config; + + # Return the app + $wg->psgi_app; + }; - enable 'Log4perl', category => 'mysite', conf => "$root/etc/log.conf"; - - # Reproduce URL handler functionality with middleware - enable '+WebGUI::Middleware::Snoop'; - enable 'Static', root => $root, path => sub { s{^/\*give-credit-where-credit-is-due\*$}{docs/credits.txt} }; - enable 'Status', path => qr{^/uploads/dictionaries}, status => 401; - # For PassThru, use Plack::Builder::mount - - # Extras fallback (you should be using something else to serve static files in production) - my ($extrasURL, $extrasPath) = ( $config->get('extrasURL'), $config->get('extrasPath') ); - enable 'Static', root => "$extrasPath/", path => sub { s{^$extrasURL/}{} }; - - # Open/close the WebGUI::Session at the outer-most onion layer - enable '+WebGUI::Middleware::Session', - config => $config, - error_docs => { 500 => "$root/www/maintenance.html" }; - - # This one uses the Session object, so it comes after WebGUI::Middleware::Session - enable '+WebGUI::Middleware::WGAccess', config => $config; - - # Return the app - $wg->psgi_app; + mount "http://dev2.localhost.localdomain/" => builder { + + my $wg = WebGUI->new( root => $root, site => 'dev2.localhost.localdomain.conf' ); + my $config = $wg->config; + enable 'Log4perl', category => 'mysite', conf => "$root/etc/log.conf"; + + # Reproduce URL handler functionality with middleware + enable '+WebGUI::Middleware::Snoop'; + enable 'Static', root => $root, path => sub {s{^/\*give-credit-where-credit-is-due\*$}{docs/credits.txt}}; + enable 'Status', path => qr{^/uploads/dictionaries}, status => 401; + + # For PassThru, use Plack::Builder::mount + + # Extras fallback (you should be using something else to serve static files in production) + my ( $extrasURL, $extrasPath ) = ( $config->get('extrasURL'), $config->get('extrasPath') ); + enable 'Static', root => "$extrasPath/", path => sub {s{^$extrasURL/}{}}; + + # Open/close the WebGUI::Session at the outer-most onion layer + enable '+WebGUI::Middleware::Session', + config => $config, + error_docs => { 500 => "$root/www/maintenance.html" }; + + # This one uses the Session object, so it comes after WebGUI::Middleware::Session + enable '+WebGUI::Middleware::WGAccess', config => $config; + + # Return the app + $wg->psgi_app; + }; };