From: John Napiorkowski Date: Thu, 2 Dec 2010 04:40:35 +0000 (-0500) Subject: documentation for WSA to get started X-Git-Tag: v0.005~13 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FWeb-Simple.git;a=commitdiff_plain;h=32d29dcd27e2b021ba40a6e39b2fcdff601b9742 documentation for WSA to get started --- diff --git a/lib/Web/Simple/Application.pm b/lib/Web/Simple/Application.pm index 6fb8784..05873c5 100644 --- a/lib/Web/Simple/Application.pm +++ b/lib/Web/Simple/Application.pm @@ -96,3 +96,120 @@ sub _cli_usage { } 1; + +=head1 NAME + +Web::Simple::Application - A base class for your Web-Simple applications + +=head1 DESCRIPTION + +This is a base class for your L application. You probably don't +need to construct this class yourself, since L does the 'heavy +lifting' for you in that regards. + +=head1 METHODS + +This class exposes the follow public methods. + +=head2 default_config + +Provide configuration information to your application, for example: + + sub default_config { + ( + title => 'Bloggery', + posts_dir => $FindBin::Bin.'/posts', + ); + } + +Now, C<$self> will have an attribute C which will be set to a HashRef +containing keys 'title' and 'posts_dir'. + +=head2 run_if_script + +In the case where you wish to run you L based application as a +stand alone CGI application, you can simple do: + + ## my_web_simple_app.pl + use MyWebSimpleApp::Web; + MyWebSimpleApp::Web->run_if_script. + +Or (even more simply) just inline the entire application: + + ## my_web_simple_app.pl + #!/usr/bin/env perl + use Web::Simple 'HelloWorld'; + + { + package HelloWorld; + + sub dispatch_request { + sub (GET) { + [ 200, [ 'Content-type', 'text/plain' ], [ 'Hello world!' ] ] + }, + sub () { + [ 405, [ 'Content-type', 'text/plain' ], [ 'Method not allowed' ] ] + } + } + } + + HelloWorld->run_if_script; + +=head2 to_psgi_app + +Given a L application root namespace, return it in a form suitable +to run in inside a L container, or in L or in a C<*.psgi> +file: + + ## app.psgi + use strictures 1; + use Plack::Builder; + use MyWebSimpleApp::Web; + + builder { + ## enable middleware + enable 'StackTrace'; + enable 'Debug'; + + ## return application + MyWebSimpleApp::Web->to_psgi_app; + }; + +This could be run via C, etc. Please note the L DSL +is optional, if you are enabling L internally in your +L application; your app.psgi could be as simple as: + + use MyWebSimpleApp::Web; + MyWebSimpleApp::Web->to_psgi_app; + +As always, mix and match the pieces you actually need and remember the +L philosophy of trying to keep it as minimal and simple as possible. + +=head2 run + +Used for running your application under stand-alone CGI and FCGI modes. Also +useful for testing: + + my $app = MyWebSimpleApp::Web->new; + my $c = HTTP::Request::AsCGI->new(@args)->setup; + $app->run; + +=head1 AUTHOR + +Matt S. Trout + +=head1 CONTRIBUTORS + +None required yet. Maybe this module is perfect (hahahahaha ...). + +=head1 COPYRIGHT + +Copyright (c) 2009 the Web::Simple L and L +as listed above. + +=head1 LICENSE + +This library is free software and may be distributed under the same terms +as perl itself. + +=cut