X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FPlugin%2FConfigLoader.pm;h=8fe0e71a8f7f49dcb4cecb6daa59803e493384c5;hb=24e563f5b0bcdd4c8a4385dd03aaf69b09b75836;hp=e9d683e1947f07f49118e0ac99a6d83e01bb4cb1;hpb=48b5d20db4bd235ec409b2ec4821a8e9118f0a3d;p=catagits%2FCatalyst-Plugin-ConfigLoader.git diff --git a/lib/Catalyst/Plugin/ConfigLoader.pm b/lib/Catalyst/Plugin/ConfigLoader.pm index e9d683e..8fe0e71 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.21'; +our $VERSION = '0.24'; =head1 NAME @@ -53,7 +53,9 @@ 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) -which will override any duplicate settings. +which will override any duplicate settings. See +L +for details on how this is configured. =head1 METHODS @@ -96,7 +98,7 @@ sub setup { $c->load_config( { $_ => $configs{ $_ } } ) for @main, @locals; $c->finalize_config; - $c->NEXT::setup( @_ ); + $c->next::method( @_ ); } =head2 load_config @@ -194,7 +196,8 @@ sub get_config_path { =head2 get_config_local_suffix Determines the suffix of files used to override the main config. By default -this value is C, but it can be specified in the following order of preference: +this value is C, which will load C. The suffix can +be specified in the following order of preference: =over 4 @@ -206,6 +209,13 @@ this value is C, but it can be specified in the following order of prefer =back +The first one of these values found replaces the default of C in the +name of the local config file to be loaded. + +For example, if C< $ENV{ MYAPP_CONFIG_LOCAL_SUFFIX }> is set to C, +ConfigLoader will try and load C instead of +C. + =cut sub get_config_local_suffix { @@ -227,7 +237,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 ) { @@ -270,6 +280,8 @@ default macros: =item * C<__HOME__> - replaced with C<$c-Epath_to('')> +=item * C<__ENV(foo)__> - replaced with the value of C<$ENV{foo}> + =item * C<__path_to(foo/bar)__> - replaced with C<$c-Epath_to('foo/bar')> =item * C<__literal(__FOO__)__> - leaves __FOO__ alone (allows you to use @@ -295,6 +307,17 @@ sub config_substitutions { my $subs = $c->config->{ 'Plugin::ConfigLoader' }->{ substitutions } || {}; $subs->{ HOME } ||= sub { shift->path_to( '' ); }; + $subs->{ ENV } ||= + sub { + my ( $c, $v ) = @_; + if (! defined($ENV{$v})) { + Catalyst::Exception->throw( message => + "Missing environment variable: $v" ); + return ""; + } else { + return $ENV{ $v }; + } + }; $subs->{ path_to } ||= sub { shift->path_to( @_ ); }; $subs->{ literal } ||= sub { return $_[ 1 ]; }; my $subsre = join( '|', keys %$subs ); @@ -319,6 +342,8 @@ development of this module: =item * David Kamholz Edkamholz@cpan.orgE - L integration +=item * Stuart Watt - Addition of ENV macro. + =back Work to this module has been generously sponsored by: @@ -331,7 +356,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.