App-Kit
view release on metacpan or search on metacpan
lib/App/Kit.pm view on Meta::CPAN
package App::Kit;
## no critic (RequireUseStrict) - Moo does strict and warnings
use Moo;
our $VERSION = '0.63';
sub import {
strict->import;
warnings->import;
unless ( defined $_[1] && $_[1] eq '-no-try' ) { # Yoda was right: there *is* -no-try!
require Try::Tiny;
# Try::Tiny->import(); # not like pragma in import, so:
require Import::Into;
my $caller = caller();
Try::Tiny->import::into($caller);
}
}
# tidyoff
with 'Role::Multiton', # Would like to do ::New but that falls apart once you decide to extend() See rt 89239. For now we TODO the multiton-via-new tests
'App::Kit::Role::Log',
'App::Kit::Role::Locale',
'App::Kit::Role::HTTP',
'App::Kit::Role::NS',
'App::Kit::Role::FS',
'App::Kit::Role::Str',
'App::Kit::Role::CType',
'App::Kit::Role::Detect',
'App::Kit::Role::DB',
'App::Kit::Role::Ex';
# tidyon
1;
__END__
=encoding utf-8
=head1 NAME
App::Kit - A Lazy Façade to simplify your code/life
=head1 VERSION
This document describes App::Kit version 0.63
=head1 SYNOPSIS
Use directly in your code:
## no critic (RequireUseStrict) - App::Kit does strict and warnings
use App::Kit;
my $app = App::Kit->multiton; # now your script and all the modules that make it up have access to the same logging, localization, and a host of other fetaures without loading anything for them and not requiring special voo doo to load/initialize...
Or roll your own to use instead:
package My::App;
## no critic (RequireUseStrict) - Moo does strict and warnings
use Moo;
extends 'App::Kit';
with 'â¦'; # add a new role
has 'newthing' => ( ⦠); # add a new attr
has '+app_kit_thingy' => ( ⦠); # customize an existing role/attr/method
sub newmeth { ⦠} # add a new method
â¦
=head1 DESCRIPTION
A Lazy Façade to simplify your code/life. How?
Ever see this sort of thing in a growing code base:
package My::Thing;
use strict;
use warnings;
use My::Logger;
( run in 1.081 second using v1.01-cache-2.11-cpan-39bf76dae61 )