The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Scaffold::Engine - The Scaffold interface to Plack/psgi

SYNOPSIS

  use Scaffold::Server;
  use Scaffold::Render::TT;

  my $psgi_handler;
  my $server = Scaffold::Server->new(
     locations => [
         {
             route   => qr{^/$},
             handler => 'App::HelloWorld',
         },{
             route   => qr{^/test$},
             handler => 'App::Cached',
         },{
             route   => qr{^/robots.txt$},
             handler => 'Scaffold::Handler::Robots',
         },{
             route   => qr{^/favicon.ico$},
             handler => 'Scaffold::Handler::Favicon',
         },{
             route   => qr{^/static/(.*)$},
             handler => 'Scaffold::Handler::Static',
         },{
            route   => qr{^/login/(.*)$},
            handler => 'Scaffold::Uaf::Login',
         },{
            route   => qr{^/logout$},
            handler => 'Scaffold::Uaf::Logout',
         }
     ],
     authorization => {
         authenticate => 'Scaffold::Uaf::Manager',
         authorize    => 'Scaffold::Uaf::Authorize',
     },
     render => Scaffold::Render::TT->new(
         include_path => 'html:html/resources/templates',
     ),
 );

 $psgi_hander = $server->engine->psgi_handler();

... or

  use Scaffold::Server;
  use Scaffold::Render::TT;

  my $server = Scaffold::Server->new(
     engine => {
         module => 'ServerSimple',
         args => {
             port => 8080,
         }
     },
     locations => [
         {
             route   => qr{^/$},
             handler => 'App::HelloWorld',
         },{
             route   => qr{^/test$},
             handler => 'App::Cached',
         },{
             route   => qr{^/robots.txt$},
             handler => 'Scaffold::Handler::Robots',
         },{
             route   => qr{^/favicon.ico$},
             handler => 'Scaffold::Handler::Favicon',
         },{
             route   => qr{^/static/(.*)$},
             handler => 'Scaffold::Handler::Static',
         },{
            route   => qr{^/login/(.*)$},
            handler => 'Scaffold::Uaf::Login',
         },{
            route   => qr{^/logout$},
            handler => 'Scaffold::Uaf::Logout',
         }
     ],
     authorization => {
         authenticate => 'Scaffold::Uaf::Manager',
         authorize    => 'Scaffold::Uaf::Authorize',
     },
     render => Scaffold::Render::TT->new(
         include_path => 'html:html/resources/templates',
     ),
 );

 $server->engine->run();

DESCRIPTION

This module is used internally by Scaffold::Server to initialize and return the code reference that is needed by the Plack/psgi runtime environment. The first example in the Synopsis can be ran with the following command:

 # plackup -app app.psgi -port 8080

The second example can be ran with this command:

 # perl app.pl

The first example is more versatile, as the code can be used in any environment that the Plack runtime supports.

ACCESSORS

psgi_handler

Returns a code reference to the dispatch handler.

run

Runs Scaffold::Server as a standalone application.

SEE ALSO

 PlackX::Engine

 Scaffold
 Scaffold::Base
 Scaffold::Cache
 Scaffold::Cache::FastMmap
 Scaffold::Cache::Manager
 Scaffold::Cache::Memcached
 Scaffold::Class
 Scaffold::Constants
 Scaffold::Engine
 Scaffold::Handler
 Scaffold::Handler::Default
 Scaffold::Handler::Favicon
 Scaffold::Handler::Robots
 Scaffold::Handler::Static
 Scaffold::Lockmgr
 Scaffold::Lockmgr::KeyedMutex
 Scaffold::Lockmgr::UnixMutex
 Scaffold::Plugins
 Scaffold::Render
 Scaffold::Render::Default
 Scaffold::Render::TT
 Scaffold::Routes
 Scaffold::Server
 Scaffold::Session::Manager
 Scaffold::Stash
 Scaffold::Stash::Controller
 Scaffold::Stash::Cookie
 Scaffold::Stash::View
 Scaffold::Uaf::Authenticate
 Scaffold::Uaf::AuthorizeFactory
 Scaffold::Uaf::Authorize
 Scaffold::Uaf::GrantAllRule
 Scaffold::Uaf::Login
 Scaffold::Uaf::Logout
 Scaffold::Uaf::Manager
 Scaffold::Uaf::Rule
 Scaffold::Uaf::User
 Scaffold::Utils

AUTHOR

Kevin L. Esteb, <kevin@kesteb.us>

Coded adapted from PlackX::Engine by Takatoshi Kitano <kitano.tk@gmail.com>

COPYRIGHT AND LICENSE

Copyright (C) 2009 by Kevin L. Esteb

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.5 or, at your option, any later version of Perl 5 you may have available.