use warnings;
use Config::Any;
-use NEXT;
+use MRO::Compat;
use Data::Visitor::Callback;
use Catalyst::Utils ();
-our $VERSION = '0.20';
+our $VERSION = '0.22';
=head1 NAME
# you can specify a file if you'd like
__PACKAGE__->config( 'Plugin::ConfigLoader' => { file => 'config.yaml' } );
+ In the file, assuming it's in YAML format:
+
+ foo: bar
+
+ Accessible through the context object, or the class itself
+
+ $c->config->{foo} # bar
+ MyApp->config->{foo} # bar
+
=head1 DESCRIPTION
This module will attempt to load find and load a configuration
file of various types. Currently it supports YAML, JSON, XML,
INI and Perl formats. Special configuration for a particular driver format can
be stored in C<MyApp-E<gt>config-E<gt>{ 'Plugin::ConfigLoader' }-E<gt>{ driver }>.
+For example, to pass arguments to L<Config::General>, use the following:
+
+ __PACKAGE__->config( 'Plugin::ConfigLoader' => {
+ driver => {
+ 'General' => { -LowerCaseNames => 1 }
+ }
+ } );
+
+See L<Config::Any>'s C<driver_args> parameter for more information.
To support the distinction between development and production environments,
this module will also attemp to load a local config (e.g. myapp_local.yaml)
|| {},
}
);
-
# map the array of hashrefs to a simple hash
my %configs = map { %$_ } @$cfg;
$c->load_config( { $_ => $configs{ $_ } } ) for @main, @locals;
$c->finalize_config;
- $c->NEXT::setup( @_ );
+ $c->next::method( @_ );
}
=head2 load_config
my @files;
if ( $extension ) {
- next unless grep { $_ eq $extension } @extensions;
+ die "Unable to handle files with the extension '${extension}'"
+ unless grep { $_ eq $extension } @extensions;
( my $local = $path ) =~ s{\.$extension}{_$suffix.$extension};
push @files, $path, $local;
}
else {
@files = map { ( "$path.$_", "${path}_${suffix}.$_" ) } @extensions;
}
-
@files;
}
If either of the first two user-specified options are directories, the
application prefix will be added on to the end of the path.
-DEPRECATION NOTICE: C<$c-E<gt>config-E<gt>{ file }> is deprecated
-and will be removed in the next release.
-
=cut
sub get_config_path {
my $c = shift;
- # deprecation notice
- if ( exists $c->config->{ file } ) {
- $c->log->warn(
- q(*** "file" config parameter has been deprecated in favor of "$c->config->{ 'Plugin::ConfigLoader' }->{ file }")
- );
- sleep( 3 );
- }
my $appname = ref $c || $c;
my $prefix = Catalyst::Utils::appprefix( $appname );
my $path = Catalyst::Utils::env_value( $c, 'CONFIG' )
|| $c->config->{ 'Plugin::ConfigLoader' }->{ file }
- || $c->config->{ file } # to be removed next release
|| $c->path_to( $prefix );
my ( $extension ) = ( $path =~ m{\.(.{1,4})$} );
=back
-DEPRECATION NOTICE: C<$c-E<gt>config-E<gt>{ config_local_suffix }> is deprecated
-and will be removed in the next release.
-
=cut
sub get_config_local_suffix {
my $c = shift;
- # deprecation notice
- if ( exists $c->config->{ config_local_suffix } ) {
- $c->log->warn(
- q(*** "config_local_suffix" config parameter has been deprecated in favor of "$c->config->{ 'Plugin::ConfigLoader' }->{ config_local_suffix }")
- );
- sleep( 3 );
- }
-
my $appname = ref $c || $c;
my $suffix = Catalyst::Utils::env_value( $c, 'CONFIG_LOCAL_SUFFIX' )
|| $c->config->{ 'Plugin::ConfigLoader' }->{ config_local_suffix }
- || $c->config
- ->{ config_local_suffix } # to be remove in the next release
|| 'local';
return $suffix;
values => delete $config->{ lc $_ } || delete $config->{ $_ }
},
grep { ref $config->{ lc $_ } || ref $config->{ $_ } }
- qw( Component Model M View V Controller C )
+ qw( Component Model M View V Controller C Plugin )
);
foreach my $comp ( @components ) {