=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
+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.
=head3 EXAMPLE
- use Catalyst qw/
- Session
- Session::Store::FastMmap
- Session::State::Cookie
- /;
+ use parent qw/Catalyst/;
+ use Catalyst qw/
+ Session
+ Session::Store::FastMmap
+ Session::State::Cookie
+ /;
## Write data into the session
application class. This can be hard-coded, or brought in from a
separate configuration file.
-=head3 Using YAML
+=head3 Using Config::General
-YAML is a method for creating flexible and readable configuration
-files. It's a great way to keep your Catalyst application
-configuration in one easy-to-understand location.
+L<Config::General|Config::General> is a method for creating flexible
+and readable configuration files. It's a great way to keep your
+Catalyst application configuration in one easy-to-understand location.
-In your application class (e.g. C<lib/MyApp.pm>):
+Now create C<myapp.conf> in your application home:
- use YAML;
- # application setup
- __PACKAGE__->config( YAML::LoadFile(__PACKAGE__->config->{'home'} . '/myapp.yml') );
- __PACKAGE__->setup;
-
-Now create C<myapp.yml> in your application home:
-
- --- #YAML:1.0
- # DO NOT USE TABS FOR INDENTATION OR label/value SEPARATION!!!
- name: MyApp
+ name MyApp
# session; perldoc Catalyst::Plugin::Session::FastMmap
- session:
- expires: '3600'
- rewrite: '0'
- storage: '/tmp/myapp.session'
+ <Session>
+ expires 3600
+ rewrite 0
+ storage /tmp/myapp.session
+ </Session>
# emails; perldoc Catalyst::Plugin::Email
# this passes options as an array :(
- email:
- - SMTP
- - localhost
+ Mail SMTP
+ Mail localhost
This is equivalent to:
# configure email sending
__PACKAGE__->config->{email} = [qw/SMTP localhost/];
-See also L<YAML>.
+See also L<Config::General|Config::General>.
=head1 Skipping your VCS's directories
The L<Catalyst::Plugin::Authorization::Roles> plugin is required when
implementing roles:
+ use parent qw/Catalyst/;
use Catalyst qw/
- Authentication
- Authentication::Credential::Password
- Authentication::Store::Htpasswd
- Authorization::Roles
- /;
+ Authentication
+ Authentication::Credential::Password
+ Authentication::Store::Htpasswd
+ Authorization::Roles/;
Roles are implemented automatically when using
L<Catalyst::Authentication::Store::Htpasswd>:
=head3 EXAMPLE
+ use parent qw/Catalyst/;
use Catalyst qw/Authentication
Authentication::Credential::Password
Authentication::Store::Htpasswd
The Authorization::Roles plugin let's us perform role based access
control checks. Let's load it:
+ use parent qw/Catalyst/;
use Catalyst qw/
- Authentication # yadda yadda
- Authorization::Roles
- /;
+ Authentication # yadda yadda
+ Authorization::Roles
+ /;
And now our action should look like this:
5. Add a XMLRPC redispatch method and an add method with Remote
attribute to lib/MyApp/Controller/API.pm
- sub default : Private {
+ sub default :Path {
my ( $self, $c ) = @_;
$c->xmlrpc;
}
to find out where it was the user was trying to go, you can look in
the request object using C<< $c->req->path >>.
- sub default : Private { .. }
+ sub default :Path { .. }
works for all unknown URLs, in this controller namespace, or every one
if put directly into MyApp.pm.
actions are defined, then index will be used instead of default and
Path.
- sub index : Private { .. }
+ sub index :Path :Args(0) { .. }
becomes
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.
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/;