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.