merged fix for regression from master
John Napiorkowski [Sun, 22 Dec 2013 16:22:43 +0000 (10:22 -0600)]
Changes
lib/Catalyst.pm
lib/Catalyst/Delta.pod

diff --git a/Changes b/Changes
index 05a4cec..9318a45 100644 (file)
--- a/Changes
+++ b/Changes
@@ -21,7 +21,8 @@
     fail to provide one.  This should cause less issues when trying to guess the
     length of a funky filehandle.  This now uses Plack::Middleware::ContentLength
   - Removed custom code to remove body content when the request is HEAD and
-    swapped it for Plack::Middleware::Head.
+    swapped it for Plack::Middleware::Head
+  - Merged fix for regressions from stable..
 
 5.90059_001 - 2013-12-19
   - Removed deprecated Regexp dispatch type from dependency list.  If you are
    'Catalyst::DispatchType::Regex' to you build system NOW or you application
    will be broken.
 
+5.90053 - 2013-12-21
+  - Reverted a change in the previous release that moved the setup_log phase
+    to after setup_config.  This change was made to allow people to use
+    configuration that is late loaded (such as via the ConfigLoader Plugin)
+    to setup the plugin.  However it also broke the ability to use the log
+    during plugin setup (ie, it breaks lots of plugins).  Reverting the 
+    change.  See Catalyst::Delta for workarounds.
 
 5.90052 - 2013-12-18
 
index c07a1c7..4e55662 100644 (file)
@@ -1126,6 +1126,7 @@ sub setup {
 
     $class->setup_home( delete $flags->{home} );
 
+    $class->setup_log( delete $flags->{log} );
     $class->setup_plugins( delete $flags->{plugins} );
 
     # Call plugins setup, this is stupid and evil.
@@ -1136,7 +1137,6 @@ sub setup {
         $class->setup unless $Catalyst::__AM_RESTARTING;
     }
 
-    $class->setup_log( delete $flags->{log} );
     $class->setup_middleware();
     $class->setup_data_handlers();
     $class->setup_dispatcher( delete $flags->{dispatcher} );
index 3e76cf3..22d3244 100755 (executable)
@@ -43,6 +43,51 @@ or report specific problems to the dev team.
 Also, we have started migrating code in Catalyst to equivilent Plack
 Middleware when such exists and is correct to do so. 
 
+=head2 VERSION 5.90053
+
+We are now clarifying the behavior of log, plugins and configuration during
+the setup phase.  Since Plugins might require a log during setup, setup_log
+must run BEFORE setup_plugins.   This has the unfortunate side effect that
+anyone using the popular ConfigLoader plugin will not be able to supply
+configuration to custom logs since the configuration is not yet finalized
+when setup_log is run (when using ConfigLoader, which is a plugin and is
+not loaded until later.)
+
+As a workaround, you can supply custom log configuration directly into
+the configuration:
+
+    package MyApp;
+    use Catalyst;
+
+    __PACKAGE__->config(
+      my_custom_log_info => { %custom_args },
+    );
+
+    __PACKAGE__->setup;
+
+If you wish to configure the custom logger differently based on ENV, you can
+try:
+
+    package MyApp;
+
+    use Catalyst;
+    use Catalyst::Utils;
+
+    __PACKAGE__->config(
+      Catalyst::Utils::merge_hashes(
+        +{ my_custom_log_info => { %base_custom_args } },
+        +{ do __PACKAGE__->path_to( $ENV{WHICH_CONF}."_conf.pl") },
+      ),
+    );
+
+    __PACKAGE__->setup;
+
+Or create a standalone Configuration class that does the right thing.
+
+Basically if you want to configure a logger via Catalyst global configuration
+you can't use ConfigLoader because it will always be loaded too late to be of
+any use.  Patches and workaround options welcomed!
+
 =head2 VERSION 5.9XXXX 'cataplack'
 
 The Catalyst::Engine sub-classes have all been removed and deprecated,