=head2 Enable debug status in the environment
Normally you enable the debugging info by adding the C<-Debug> flag to
-your C<use Catalyst> statement. However, you can also enable it using
-environment variable, so you can (for example) get debug info without
-modifying your application scripts. Just set C<CATALYST_DEBUG> or
-C<E<lt>MYAPPE<gt>_DEBUG> to a true value.
+your C<use Catalyst> statement (or C<__PACKAGE__->setup(qw/-Debug/)
+). However, you can also enable it using environment variable, so you
+can (for example) get debug info without modifying your application
+scripts. Just set C<CATALYST_DEBUG> or C<E<lt>MYAPPE<gt>_DEBUG> to a
+true value.
=head2 Sessions
=head3 EXAMPLE
- use Catalyst qw/
- Session
- Session::Store::FastMmap
- Session::State::Cookie
- /;
+ use parent qw/Catalyst/;
+ __PACKAGE__->setup( qw/
+ Session
+ Session::Store::FastMmap
+ Session::State::Cookie
+ /;)
## Write data into the session
The L<Catalyst::Plugin::Authorization::Roles> plugin is required when
implementing roles:
- use Catalyst qw/
- Authentication
- Authentication::Credential::Password
- Authentication::Store::Htpasswd
- Authorization::Roles
- /;
+ use parent qw/Catalyst/;
+ __PACKAGE__->setup (qw/
+ Authentication
+ Authentication::Credential::Password
+ Authentication::Store::Htpasswd
+ Authorization::Roles
+ /);
Roles are implemented automatically when using
L<Catalyst::Authentication::Store::Htpasswd>:
=head3 EXAMPLE
- use Catalyst qw/Authentication
- Authentication::Credential::Password
- Authentication::Store::Htpasswd
- Authorization::Roles/;
+ use parent qw/Catalyst/;
+ __PACKAGE__->setup( qw/Authentication
+ Authentication::Credential::Password
+ Authentication::Store::Htpasswd
+ Authorization::Roles/);
__PACKAGE__->config->{authentication}{htpasswd} = "passwdfile";
The Authorization::Roles plugin let's us perform role based access
control checks. Let's load it:
- use Catalyst qw/
+ use parent qw/Catalyst/;
+ __PACKAGE__->setup(qw/
Authentication # yadda yadda
Authorization::Roles
- /;
+ /);
And now our action should look like this:
3. Add the XMLRPC plugin to MyApp.pm
- use Catalyst qw/-Debug Static::Simple XMLRPC/;
+ __PACKAGE__->setup( qw/-Debug Static::Simple XMLRPC/);
4. Add an API controller
expect a low number of hits or you don't need mod_perl/FastCGI speed,
you could use the development server as the application server with a
lightweight proxy web server at the front. However, consider using
-L<Catalyst::Engine::HTTP::POE> for this kind of deployment instead, since
+L<Catalyst::Engine::HTTP::Prefork> for this kind of deployment instead, since
it can better handle multiple concurrent requests without forking, or can
prefork a set number of servers for improved performance.
Order deny,allow
Allow from all
</Proxy>
+
+ # Need to specifically stop these paths from being passed to proxy
+ ProxyPass /static !
+ ProxyPass /favicon.ico !
+
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
+ # This is optional if you'd like to show a custom error page
+ # if the proxy is not available
+ ErrorDocument 502 /static/error_pages/http502.html
+
You can wrap the above within a VirtualHost container if you want
different apps served on the same host.
Using the plugin is as simple as setting your use line in MyApp.pm to include:
- use Catalyst qw/Static::Simple/;
+ __PACKAGE__->setup( qw/Static::Simple/);
and already files will be served.
In your main application class (MyApp.pm), load the plugin:
- use Catalyst qw/-Debug FormValidator Static OtherPlugin/;
+ __PACKAGE__->setup( qw/-Debug FormValidator Static OtherPlugin/);
You will also need to make sure your end method does I<not> forward
static content to the view, perhaps like this:
Cache::FastMmap, Cache::FileCache, and Cache::Memcached. These can be
used to cache the result of slow operations.
-This very page you're viewing makes use of the FileCache plugin to cache the
+The Catalyst Advent Calendar uses the FileCache plugin to cache the
rendered XHTML version of the source POD document. This is an ideal
-application for a cache because the source document changes infrequently but
-may be viewed many times.
+application for a cache because the source document changes
+infrequently but may be viewed many times.
- use Catalyst qw/Cache::FileCache/;
+ __PACKAGE__->setup( qw/Cache::FileCache/);
...
We can add the PageCache plugin to speed things up.
- use Catalyst qw/Cache::FileCache PageCache/;
+ __PACKAGE__->setup( qw/Cache::FileCache PageCache/);
sub front_page : Path ('/') {
my ( $self, $c ) = @_;