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

NAME

Plasp::App - Create Plasp Plack App!

SYNOPSIS

In MyApp.pm

  package MyApp;

  use Moo;

  with 'Plasp::App';

  around new => sub {
    my ( $orig, $class ) = ( shift, shift );
    $class->$orig( @_ );
  };

  1;

In app.psgi

  use MyApp;

  $app = MyApp->new;

DESCRIPTION

Use Plasp::App as a Role::Tiny to create a new PSGI app. Call the new class method and get a subroutine in return which will serve a PSGI application.

CLASS METHODS

$class->new(%config)

You can pass in the configuration in new

  $app = MyApp->new(
    ApplicationRoot => '/var/www',
    DocumentRoot    => 'root',
    Global          => 'lib',
    GlobalPackage   => 'MyApp',
    IncludesDir     => 'templates',
    MailHost        => 'localhost',
    MailFrom        => 'myapp@localhost',
    XMLSubsMatch    => '(?:myapp):\w+',
    Error404Path    => '/error404.asp',
    Error500Path    => '/error500.asp',
    Debug           => 0,
  );
$class->config(%config)

You can even set or override the configuration in another context either before or after initialization;

  $app = MyApp->new;

  MyApp->config(ApplicationRoot => '/var/www');
  MyApp->config(DocumentRoot    => 'html');
  MyApp->config(Global          => 'lib');
  MyApp->config(GlobalPackage   => 'MyApp');
  MyApp->config(IncludesDir     => 'templates');
$class->psgi_app

Alternatively, you can just call the psgi_app class method, which is the same as calling $class->new without passing in any configuration.

  MyApp->config(
    ApplicationRoot => '/var/www',
    DocumentRoot    => 'root',
    Global          => 'lib',
    GlobalPackage   => 'MyApp',
    IncludesDir     => 'templates',
  );

  $app = MyApp->psgi_app;

SEE ALSO