logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

MooX::ConfigFromFile - Moo eXtension for initializing objects from config file

Acknowledgements

Author

       Jens Rehsack, "<rehsack at cpan.org>"

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.

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

See Also