NAME
OpusVL::AppKit
VERSION
version 2.26
DESCRIPTION
AppKit is based on CatalystX::AppBuilder, and includes some modules for
common tasks. The idea is that you produce a thin AppKit application,
and stick multiple modules together.
We recommend Dist::Zilla to get you started on AppKit. That's because
we've made minting profiles so we don't have to explain how it works.
$ dzil new -PAppKit MyApp
$ dzil new -PAppKitX MyApp::AppKitX::NewModularFeature
See Dist::Zilla::MintingProfile::AppKit and
Dist::Zilla::MintingProfile::AppKitX.
Whenever you mint a new AppKit application, you'll end up with a common
set of files:
MyApp.pm:
package MyApp;
use strict;
use warnings;
use MyApp::Builder;
our $VERSION='0.001';
my $builder = MyApp::Builder->new(
appname => __PACKAGE__,
version => $VERSION
);
$builder->bootstrap;
1;
MyApp/Builder.pm:
(see also "Builder")
package MyApp::Builder;
use Moose;
extends 'OpusVL::AppKit::Builder';
override _build_superclasses => sub
{
return [ 'OpusVL::AppKit' ]
};
override _build_config => sub
{
my $self = shift;
my $config = super();
$config->{'Controller::Login'} =
{
traits => '+OpusVL::AppKit::TraitFor::Controller::Login::NewSessionIdOnLogin',
};
$config->{'View::CMS::Page'}->{AUTO_FILTER} = 'html';
return $config;
};
myapp.conf:
name MyApp
connect_info dbi:SQLite:t/db/test.db
connect_info username
connect_info password
connect_info dbi:SQLite:t/db/test.db
connect_info username
connect_info password
NAME
OpusVL::AppKit - Catalyst based application
AppKitX
AppKitX is the namespace we use for the individual modules from which
your application is built. Each of this is almost an entire Catalyst
application per se; except that it doesn't inherit from Catalyst
itself, and requires marshalling by means of a Builder class.
We generally recommend keeping things as separate as possible, so we
normally have:
An AppKitX distribution for each logical chunk of the site
A DB distribution, usually a DBIx::Class distribution that stands
independently of the application itself
An AppKitX::DB distribution, which provides the Catalyst::Model for the
aforementioned DB distribution.
For example, once we've created MyApp, we would create
MyApp::AppKitX::SomeModule, MyApp::DB, and MyApp::AppKitX::DB.
There will be many MyApp::AppKitX::SomeModule style distributions; and
possibly some MyCompany::AppKitX::SomeModule distributions, for common
modules.
Builder
The builder is provided as a skeleton, but this is where you decide
which modules get loaded. To do so, you override a method in
MyApp/Builder.pm.
override _build_plugins => sub {
my $plugins = super();
return [ @$plugins, qw/
MyApp::AppKitX::Plugin1
MyApp::AppKitX::Plugin2
/ ];
}
This is all that's required to connect those plugins together - an app
with a builder with this method, listing them.
SEE ALSO
OpusVL::AppKit::Plugin::AppKit
OpusVL::AppKit::Base::Controller::GUI
OpusVL::AppKit::Controller::Root
Catalyst
SUPPORT
Support can be garnered by use of the GitHub issue tracker at
https://github.com/OpusVL/OpusVL-AppKit/issues
AUTHOR
OpusVL - www.opusvl.com
COPYRIGHT AND LICENSE
This software is copyright (c) 2010 by OpusVL - www.opusvl.com.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.