X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMooseX%2FConfigFromFile.pm;h=cd6cfdf729897b7a8d3c458d8b195cdbec2b0a1e;hb=74e7e6279f4e747018a3b72a8c13ea21e3919395;hp=6214934c2ae862af0699a29896b4f83b0bb240fb;hpb=28d693631e3b72ea26dc51fb9c4d84ce718dbde1;p=gitmo%2FMooseX-ConfigFromFile.git diff --git a/lib/MooseX/ConfigFromFile.pm b/lib/MooseX/ConfigFromFile.pm index 6214934..cd6cfdf 100644 --- a/lib/MooseX/ConfigFromFile.pm +++ b/lib/MooseX/ConfigFromFile.pm @@ -9,11 +9,6 @@ use namespace::autoclean; requires 'get_config_from_file'; -# overridable in consuming class or role to provide a default value -# This is called before instantiation, so it must be a class method, -# and not depend on any other attributes -sub _get_default_configfile { } - has configfile => ( is => 'ro', isa => Path|Undef, @@ -23,7 +18,10 @@ has configfile => ( lazy => 1, # it sucks that we have to do this rather than using a builder, but some old code # simply swaps in a new default sub into the attr definition - default => sub { shift->_get_default_configfile }, + default => sub { + my $class = shift; + $class->_get_default_configfile if $class->can('_get_default_configfile'); + }, ); sub new_with_config { @@ -37,7 +35,7 @@ sub new_with_config { else { # This would only succeed if the consumer had defined a new configfile # sub to override the generated reader - as suggested in old - # documentation + # documentation -- or if $class is an instance not a class name $configfile = try { $class->configfile }; # this is gross, but since a lot of users have swapped in their own @@ -170,8 +168,8 @@ a hashref of arguments to pass to C which are sourced from the configfile =head2 _get_default_configfile -This class method returns nothing by default, but can and should be redefined -in a consuming class to return the default value of the configfile (if not +This class method is not implemented in this role, but can and should be defined +in a consuming class or role to return the default value of the configfile (if not passed into the constructor explicitly). =head1 COPYRIGHT