YAML support is back, yay!
[catagits/Catalyst-Runtime.git] / lib / Catalyst.pm
index 5a1959e..8fedc9c 100644 (file)
@@ -21,6 +21,7 @@ use Scalar::Util qw/weaken/;
 use Tree::Simple qw/use_weak_refs/;
 use Tree::Simple::Visitor::FindByUID;
 use attributes;
+use YAML ();
 
 __PACKAGE__->mk_accessors(
     qw/counter request response state action stack namespace/
@@ -447,6 +448,12 @@ Returns or takes a hashref containing the application's configuration.
 
     __PACKAGE__->config( { db => 'dsn:SQLite:foo.db' } );
 
+You can also use a L<YAML> config file like myapp.yml in your
+applications home directory.
+
+    ---
+    db: dsn:SQLite:foo.db
+
 =cut
 
 sub config {
@@ -594,6 +601,15 @@ sub setup {
 
     $class->setup_home( delete $flags->{home} );
 
+    # YAML config support
+    my $confpath = $class->config->{file}
+      || $class->path_to(
+        ( Catalyst::Utils::appprefix( ref $class || $class ) . '.yml' ) );
+    my $conf = {};
+    $conf = YAML::LoadFile($confpath) if -f $confpath;
+    my $oldconf = $class->config;
+    $class->config( { %$oldconf, %$conf } );
+
     $class->setup_log( delete $flags->{log} );
     $class->setup_plugins( delete $flags->{plugins} );
     $class->setup_dispatcher( delete $flags->{dispatcher} );