From: Arthur Axel 'fREW' Schmidt Date: Fri, 26 Nov 2010 23:11:20 +0000 (-0600) Subject: refactor DBIx::Class::Storage::Statistics::debugfh() to be lazy X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=c6fa3170af14483e9d749931642fdd3000baa28c;p=dbsrgits%2FDBIx-Class-Historic.git refactor DBIx::Class::Storage::Statistics::debugfh() to be lazy --- diff --git a/Changes b/Changes index a07cefe..a38c256 100644 --- 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 diff --git a/lib/DBIx/Class/Storage/Statistics.pm b/lib/DBIx/Class/Storage/Statistics.pm index 6852cd8..d4937d1 100644 --- a/lib/DBIx/Class/Storage/Statistics.pm +++ b/lib/DBIx/Class/Storage/Statistics.pm @@ -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 method is used). Initially should be set to STDERR - although see information on the L 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); }