X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FPlugin%2FConfigLoader.pm;h=5240417c92ca00511a8a1ef9c126ebcf5fc66923;hb=f10899f5822521572e2975d421c0c07680774f49;hp=930d7c1fa7807bb06b72b7321caaa2561cf2169a;hpb=90c108e6b1da7eedb2f0adb194c68edd4dec4668;p=catagits%2FCatalyst-Plugin-ConfigLoader.git diff --git a/lib/Catalyst/Plugin/ConfigLoader.pm b/lib/Catalyst/Plugin/ConfigLoader.pm index 930d7c1..5240417 100644 --- a/lib/Catalyst/Plugin/ConfigLoader.pm +++ b/lib/Catalyst/Plugin/ConfigLoader.pm @@ -4,11 +4,11 @@ use strict; use warnings; use Config::Any; -use NEXT; +use MRO::Compat; use Data::Visitor::Callback; use Catalyst::Utils (); -our $VERSION = '0.20'; +our $VERSION = '0.24'; =head1 NAME @@ -26,12 +26,30 @@ Catalyst::Plugin::ConfigLoader - Load config files of various types # 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 Cconfig-E{ 'Plugin::ConfigLoader' }-E{ driver }>. +For example, to pass arguments to L, use the following: + + __PACKAGE__->config( 'Plugin::ConfigLoader' => { + driver => { + 'General' => { -LowerCaseNames => 1 } + } + } ); + +See L's C 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) @@ -58,7 +76,6 @@ sub setup { || {}, } ); - # map the array of hashrefs to a simple hash my %configs = map { %$_ } @$cfg; @@ -79,7 +96,7 @@ sub setup { $c->load_config( { $_ => $configs{ $_ } } ) for @main, @locals; $c->finalize_config; - $c->NEXT::setup( @_ ); + $c->next::method( @_ ); } =head2 load_config @@ -118,14 +135,14 @@ sub find_files { 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; } @@ -152,27 +169,16 @@ The order of preference is specified as: 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-Econfig-E{ 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})$} ); @@ -200,27 +206,14 @@ this value is C, but it can be specified in the following order of prefer =back -DEPRECATION NOTICE: C<$c-Econfig-E{ 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; @@ -234,7 +227,7 @@ sub _fix_syntax { 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 ) { @@ -338,7 +331,7 @@ Work to this module has been generously sponsored by: =head1 COPYRIGHT AND LICENSE -Copyright 2008 by Brian Cassidy +Copyright 2006-2009 by Brian Cassidy This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.