use Moose::Role;
with 'MooseX::ConfigFromFile';
-our $VERSION = '0.04';
+our $VERSION = '0.07';
use Config::Any ();
sub get_config_from_file {
my ($class, $file) = @_;
+ $file = $file->() if ref $file eq 'CODE';
my $files_ref = ref $file eq 'ARRAY' ? $file : [$file];
my $can_config_any_args = $class->can('config_any_args');
} );
my %raw_config;
- foreach my $file_tested ( @{$files_ref} ) {
+ foreach my $file_tested ( reverse @{$files_ref} ) {
if ( ! exists $raw_cfany->{$file_tested} ) {
- die qq{Specified configfile '$file_tested' does not exist, } .
- q{is empty, or is not readable};
+ warn qq{Specified configfile '$file_tested' does not exist, } .
+ qq{is empty, or is not readable\n};
+ next;
}
my $cfany_hash = $raw_cfany->{$file_tested};
Provided by the base role L<MooseX::ConfigFromFile>. You can
provide a default configfile pathname like so:
- has +configfile ( default => '/etc/myapp.yaml' );
+ has '+configfile' => ( default => '/etc/myapp.yaml' );
+
+You can pass an array of filenames if you want, but as usual the array
+has to be wrapped in a sub ref.
+
+ has '+configfile' => ( default => sub { [ '/etc/myapp.yaml', '/etc/myapp_local.yml' ] } );
+
+Config files are trivially merged at the top level, with the right-hand files taking precedence.
=head1 CLASS METHODS