# by default myapp.* will be loaded
# you can specify a file if you'd like
- __PACKAGE__->config( file => 'config.yaml' );
+ __PACKAGE__->config( 'Plugin::ConfigLoader' => { file => 'config.yaml' } );
=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.
+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 }>.
To support the distinction between development and production environments,
this module will also attemp to load a local config (e.g. myapp_local.yaml)
my $c = shift;
my @files = $c->find_files;
my $cfg = Config::Any->load_files( {
- files => \@files,
- filter => \&_fix_syntax,
- use_ext => 1
+ files => \@files,
+ filter => \&_fix_syntax,
+ use_ext => 1,
+ driver_args => $c->config->{'Plugin::ConfigLoader'}->{driver} || {},
} );
# split the responses into normal and local cfg
=item * C<$ENV{ CATALYST_CONFIG }>
-=item * C<$c-E<gt>config-E<gt>{ file }>
+=item * C<$c-E<gt>config-E<gt>{ 'Plugin::ConfigLoader' }-E>gt>{ file }>
=item * C<$c-E<gt>path_to( $application_prefix )>
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 }") );
+ }
+
my $appname = ref $c || $c;
my $prefix = Catalyst::Utils::appprefix( $appname );
my $path = Catalyst::Utils::env_value( $c, 'CONFIG' )
- || $c->config->{ file }
+ || $c->config->{ 'Plugin::ConfigLoader' }->{ file }
+ || $c->config->{ file } # to be removed next release
|| $c->path_to( $prefix );
my( $extension ) = ( $path =~ m{\.(.{1,4})$} );
=item * C<$ENV{ CATALYST_CONFIG_LOCAL_SUFFIX }>
-=item * C<$c-E<gt>config-E<gt>{ config_local_suffix }>
+=item * C<$c-E<gt>config-E<gt>{ 'Plugin::ConfigLoader' }-E<gt>{ config_local_suffix }>
=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 }") );
+ }
+
my $appname = ref $c || $c;
my $suffix = Catalyst::Utils::env_value( $c, 'CONFIG_LOCAL_SUFFIX' )
- || $c->config->{ 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;
The parameter list is split on comma (C<,>). You can override this method to
do your own string munging, or you can define your own macros in
-C<MyApp->config->{ substitutions }>. Example:
+C<MyApp-E<gt>config-E<gt>{ 'Plugin::ConfigLoader' }-E<gt>{ substitutions }>.
+Example:
- MyApp->config->{ substitutions } = {
+ MyApp->config->{ 'Plugin::ConfigLoader' }->{ substitutions } = {
baz => sub { my $c = shift; qux( @_ ); }
}
sub config_substitutions {
my $c = shift;
- my $subs = $c->config->{ substitutions } || {};
+ my $subs = $c->config->{ 'Plugin::ConfigLoader' }->{ substitutions } || {};
$subs->{ HOME } ||= sub { shift->path_to( '' ); };
$subs->{ path_to } ||= sub { shift->path_to( @_ ); };
$subs->{ literal } ||= sub { return $_[ 1 ]; };