MooX::ConfigFromFile - Moo eXtension for initializing objects from config file
Contents
Acknowledgements
Bugs
Please report any bugs or feature requests to "bug-moox-configfromfile at rt.cpan.org", or through the
web interface at <http://rt.cpan.org/NoAuth/ReportBug.html?Queue=MooX-ConfigFromFile>. I will be
notified, and then you'll automatically be notified of progress on your bug as I make changes.
Description
This module is intended to easy load initialization values for attributes on object construction from an
appropriate config file. The building is done in MooX::ConfigFromFile::Role - using MooX::ConfigFromFile
ensures the role is applied.
For easier usage, with 0.004, several options can be passed via use resulting in default initializers for
appropriate role attributes:
"config_prefix"
Default for "config_prefix" in MooX::ConfigFromFile::Role.
"config_prefixes"
Default for "config_prefixes" in MooX::ConfigFromFile::Role. Ensure when use this flag together with
MooX::Cmd to load "MooX::ConfigFromFile" before "MooX::Cmd".
"config_prefix_map_separator"
Default for "config_prefix_map_separator" in MooX::ConfigFromFile::Role.
package Foo;
# apply role MooX::ConfigFromFile::Role and override default for
# attribute config_prefix_map_separator
use MooX::ConfigFromFile config_prefix_map_separator => "~";
...
"config_extensions"
Default for "config_extensions" in MooX::ConfigFromFile::Role.
"config_dirs"
Default for "config_dirs" in MooX::ConfigFromFile::Role. Same warning regarding modifying this
attribute applies here: Possible, but use with caution!
package Foo;
use MooX::ConfigFromFile config_dirs => [qw(/opt/foo/etc /home/alfred/area/foo/etc)];
...
"config_files"
Default for "config_files" in MooX::ConfigFromFile::Role.
Reasonable when you want exactly one config file in development mode. For production code it is
highly recommended to override the builder.
"config_singleton"
Flag adding a wrapper around the builder of "loaded_config" in MooX::ConfigFromFile::Role to ensure a
config is loaded only once per class. The perclass restriction results from applicable modifiers per
class (and singletons are per class).
"config_identifier"
Default for "config_identifier" in MooX::File::ConfigDir.
package Foo;
# apply role MooX::ConfigFromFile::Role and override default for
# attribute config_identifier - means to look e.g. in /etc/foo/
use MooX::ConfigFromFile config_identifier => "foo";
...
"config_hashmergeloaded"
Consumes role MooX::ConfigFromFile::Role::HashMergeLoaded directly after MooX::ConfigFromFile::Role
has been consumed.
License And Copyright
Copyright 2013-2018 Jens Rehsack.
This program is free software; you can redistribute it and/or modify it under the terms of either: the
GNU General Public License as published by the Free Software Foundation; or the Artistic License.
See <http://dev.perl.org/licenses/> for more information.
perl v5.36.0 2022-12-11 MooX::ConfigFromFile(3pm)
Name
MooX::ConfigFromFile - Moo eXtension for initializing objects from config file
Support
You can find documentation for this module with the perldoc command.
perldoc MooX::ConfigFromFile
You can also look for information at:
• RT: CPAN's request tracker (report bugs here)
<http://rt.cpan.org/NoAuth/Bugs.html?Dist=MooX-ConfigFromFile>
• AnnoCPAN: Annotated CPAN documentation
<http://annocpan.org/dist/MooX-ConfigFromFile>
• CPAN Ratings
<http://cpanratings.perl.org/d/MooX-ConfigFromFile>
• Search CPAN
<http://search.cpan.org/dist/MooX-ConfigFromFile/>
Synopsis
package Role::Action;
use Moo::Role;
has operator => ( is => "ro" );
package Action;
use Moo;
use MooX::ConfigFromFile; # imports the MooX::ConfigFromFile::Role
with "Role::Action";
sub operate { return say shift->operator; }
package OtherAction;
use Moo;
with "Role::Action", "MooX::ConfigFromFile::Role";
sub operate { return warn shift->operator; }
package QuiteOtherOne;
use Moo;
# consumes the MooX::ConfigFromFile::Role but load config only once
use MooX::ConfigFromFile config_singleton => 1;
with "Role::Action";
sub _build_config_prefix { "die" }
sub operate { return die shift->operator; }
package main;
my $action = Action->new(); # tries to find a config file in config_dirs and loads it
my $other = OtherAction->new( config_prefix => "warn" ); # use another config file
my $quite_o = QuiteOtherOne->new(); # quite another way to have an individual config file
