NAME

EntityModel::Web::PSGI - serve EntityModel::Web definitions through PSGI

VERSION

version 0.002

SYNOPSIS

# execute via plackup for example: plackup ./app.psgi
use EntityModel;
use EntityModel::Web::PSGI;
# Load a model which includes a web definition
my $model = EntityModel->new->add_plugin(Web => {
})->load_from(JSON => {
  file => $ENV{ENTITYMODEL_JSON_MODEL}
});
# Create the PSGI wrapper
my $app = EntityModel::Web::PSGI->new;
# Set up web and template information
my ($web) = grep $_->isa('EntityModel::Web'), $model->plugin->list;
my $tmpl = EntityModel::Template->new(
	include_path	=> $ENV{ENTITYMODEL_TEMPLATE_PATH}
);
$tmpl->process_template(\qq{[% PROCESS Main.tt2 %]});
$app->template($tmpl);
$app->web($web);
# Return our PSGI coderef
sub { $app->run_psgi(@_) };

DESCRIPTION

Preliminary support for running EntityModel::Web definitions through a PSGI interface.

Expects the "web" EntityModel::Web attribute to be set before any requests are served, with at least one site definition if you want this to do anything useful.

Currently also proxies a "template" attribute, although expect this to be deprecated in a future version (it really shouldn't be here).

METHODS

web

Accessor for the EntityModel::Web definition used for this PSGI instance. Returns $self if used as a mutator:

my $web;
$psgi->web($web)->psgi_request(...);

template

Accessor for the EntityModel::Web definition used for this PSGI instance. Returns $self if used as a mutator:

my $template;
warn $psgi->template($template)->web;

run_psgi

Process a PSGI request. Will be called by the PSGI framework.

psgi_result

Returns an appropriate PSGI response, either an arrayref or a coderef depending on server support for async/streaming.

SEE ALSO

AUTHOR

Tom Molesworth <cpan@entitymodel.com>

LICENSE

Copyright Tom Molesworth 2011. Licensed under the same terms as Perl itself.