refactor DBIx::Class::Storage::Statistics::debugfh() to be lazy
Arthur Axel 'fREW' Schmidt [Fri, 26 Nov 2010 23:11:20 +0000 (17:11 -0600)]
Changes
lib/DBIx/Class/Storage/Statistics.pm

diff --git a/Changes b/Changes
index a07cefe..a38c256 100644 (file)
--- a/Changes
+++ b/Changes
@@ -32,6 +32,7 @@ Revision history for DBIx::Class
         - Switch all serialization to use Storable::nfreeze for portable
           architecture independent ice
         - Fix the bogus META.yml dependency injection issue for good
+        - Refactor DBIx::Class::Storage::Statistics::debugfh() to be lazy
 
 0.08124 2010-10-28 14:23 (UTC)
     * New Features / Changes
index 6852cd8..d4937d1 100644 (file)
@@ -5,7 +5,7 @@ use warnings;
 use base qw/DBIx::Class/;
 use IO::File;
 
-__PACKAGE__->mk_group_accessors(simple => qw/callback debugfh silence/);
+__PACKAGE__->mk_group_accessors(simple => qw/callback _debugfh silence/);
 
 =head1 NAME
 
@@ -46,19 +46,16 @@ be an IO::Handle compatible object (only the C<print> method is used). Initially
 should be set to STDERR - although see information on the
 L<DBIC_TRACE> environment variable.
 
-=head2 print
-
-Prints the specified string to our debugging filehandle, which we will attempt
-to open if we haven't yet.  Provided to save our methods the worry of how
-to display the message.
+As getter it will lazily open a filehandle for you if one is not already set.
 
 =cut
-sub print {
-  my ($self, $msg) = @_;
 
-  return if $self->silence;
+sub debugfh {
+  my $self = shift;
 
-  if(!defined($self->debugfh())) {
+  if (@_) {
+    $self->_debugfh($_[0]);
+  } elsif (!defined($self->_debugfh())) {
     my $fh;
     my $debug_env = $ENV{DBIX_CLASS_STORAGE_DBI_DEBUG}
                   || $ENV{DBIC_TRACE};
@@ -71,9 +68,23 @@ sub print {
     }
 
     $fh->autoflush();
-    $self->debugfh($fh);
+    $self->_debugfh($fh);
   }
 
+  $self->_debugfh;
+}
+
+=head2 print
+
+Prints the specified string to our debugging filehandle.  Provided to save our
+methods the worry of how to display the message.
+
+=cut
+sub print {
+  my ($self, $msg) = @_;
+
+  return if $self->silence;
+
   $self->debugfh->print($msg);
 }