fix reported reversion
John Napiorkowski [Sun, 22 Dec 2013 16:14:33 +0000 (10:14 -0600)]
Changes
lib/Catalyst.pm
lib/Catalyst/Delta.pod
lib/Catalyst/Runtime.pm

diff --git a/Changes b/Changes
index fa0783d..d903a0f 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,5 +1,13 @@
 # This file documents the revision history for Perl extension Catalyst.
 
+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
 
   - Fixed first block of startup debug messages missing when using a custom
index 4aa3601..1240a44 100644 (file)
@@ -120,7 +120,7 @@ __PACKAGE__->stats_class('Catalyst::Stats');
 
 # Remember to update this in Catalyst::Runtime as well!
 
-our $VERSION = '5.90052';
+our $VERSION = '5.90053';
 
 sub import {
     my ( $class, @arguments ) = @_;
@@ -1124,6 +1124,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.
@@ -1134,7 +1135,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 8b5caf2..985b571 100755 (executable)
@@ -6,6 +6,51 @@ Catalyst::Delta - Overview of changes between versions of Catalyst
 
 This is an overview of the user-visible changes to Catalyst between major Catalyst releases.
 
+=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,
index 0d8dfed..677e547 100644 (file)
@@ -7,7 +7,7 @@ BEGIN { require 5.008003; }
 
 # Remember to update this in Catalyst as well!
 
-our $VERSION = '5.90052';
+our $VERSION = '5.90053';
 
 =head1 NAME