NAME
Crane - Helpers for development in Perl
SYNOPSIS
use Crane;
...
use Crane ( 'name' => 'example' );
DESCRIPTION
Helpers for development in Perl. Includes the most modern technics and rules.
Also imports modules as "Crane::Base" in Crane::Base;
Import options
You can specify these options when using module:
- name
-
Script name, used when run as daemon.
If defined, run as daemon by default. Use --no-daemon command line option to cancel this behavior.
- base
-
Array (reference) to list of base modules.
- options
-
Array (reference) of options which will be added to the head of default options list.
- config
-
Hash (reference) with user defined default settings.
- namespace
-
Custom namespace. Please, look at examples below.
OPTIONS
These options are available by default. You can define your custom options if specify it in the import options.
- -M, --daemon, --no-daemon
-
Runs as daemon.
- -C path/to/config, --config=path/to/config
-
Path to configuration file.
- -P path/to/file_with.pid, --pid=path/to/file_with.pid
-
Path to PID file.
- -O path/to/messages.log, --log=path/to/messages.log
-
Path to messages log file.
- -E path/to/errors.log, --log-error=path/to/errors.log
-
Path to errors log file.
- -D, --debug, --no-debug
-
Debug output.
- -V, --verbose, --no-verbose
-
Verbose output.
- --version
-
Shows version information and exits.
- --help
-
Shows help and exits.
RETURN VALUE
In case of running as daemon will return 1 if process is already running.
DIAGNOSTICS
- Process is already running: %d
-
Where %d is a PID.
You tried to run application as daemon while another copy is running.
EXAMPLES
Singleton usage
use Crane;
...
use Crane ( 'base' => qw( Mojolicious::Controller ) );
Daemon usage
use Crane ( 'name' => 'example' );
Configure options
use Crane ( 'options' => [
[ 'from|F=s', 'Start of the interval.', { 'required' => 1 } ],
[ 'to|F=s', 'End of the interval.', { 'required' => 1 } ],
] );
As a result you have these two options, a separator and default options.
Basic namespace usage
package My;
use Crane (
'namespace' => 'My',
'config' => {
'my' => {
'autorun' => 1,
'hosts' => [
'127.0.0.1',
'127.0.0.2',
],
},
},
);
1;
...
use My;
use My::Config;
use My::Logger;
log_info(config->{'log'});
Advanced namespace usage
package My;
use Crane::Base;
use Crane::Options qw( :opts );
require Crane;
sub import {
my ( $package, $name ) = @_;
Crane->import(
'namespace' => 'My',
'name' => $name,
'options' => [
[ 'run!', 'Do action at startup.' ],
$OPT_SEPARATOR,
[ 'host=s@', 'Host name(s).' ],
],
'config' => {
'my' => {
'autorun' => 1,
'hosts' => [
'127.0.0.1',
'127.0.0.2',
],
},
},
);
return;
}
1;
...
use My 'my_script';
sub main {
...
return 0;
}
exit main();
ENVIRONMENT
See Crane::Base.
FILES
- etc/*.conf
-
Configuration files. See Crane::Config.
- log/*.log
-
Log files. See Crane::Logger.
- run/*.pid
-
Script's PID file.
BUGS
Please report any bugs or feature requests to https://rt.cpan.org/Public/Bug/Report.html?Queue=Crane or to https://github.com/temoon/crane/issues.
AUTHOR
Tema Novikov, <novikov.tema@gmail.com>
COPYRIGHT AND LICENSE
Copyright (C) 2013-2014 Tema Novikov.
This library is free software; you can redistribute it and/or modify it under the terms of the Artistic License 2.0. For details, see the full text of the license in the file LICENSE.