Hi,

Have you created a ticket for this?

I don't see a problem with having this functionality, but your
proposed interface seems a bit strange.

Why do you really need the :silent, and :silence arguments?
They seem to create redundancy: silence(:silence), and don't
really provide additional useful information.

I'd leave the argument boolean only. "silence(false)" and
"silence(true)" or just "silence" all seem obvious in what
they do, that is enable or disable silence.

I'm not sure if there is a need for it, but silence() could actually
support nesting, so you could enable it inside another block
that disables it. All this would require is adding a "when false"
case into this silence implementation which enables some higher
logging level.

Actually, to take this further, the silence method could take
a logging level as a parameter instead of a boolean. This way
you could arbitrarily change the logging level for code blocks
and also have nesting support. Although in that case the name
of the method should probably be changed as well.

just my 2 EURO



On R, 2007-08-03 at 17:17 +0100, Hugh Sasse wrote:
> I'm reposting this because I got no response. I posted it here
> rather than any tracking system because I regard it somewhat as
> having wet paint until it's been looked at by those more in the
> know than me.
>         Hugh
> 
> ---------- Forwarded message ----------
> Date: Tue, 24 Jul 2007 11:26:46 +0100 (WEST)
> From: Hugh Sasse <[EMAIL PROTECTED]>
> Reply-To: [email protected]
> To: [email protected]
> Subject: [Rails-core] logging patch
> 
> 
> I've been using fixture_references, and have been getting errors from 
> my database about incorrect values inserted.  fixture_references turns
> off logging by using the silence method.  The present implementation gives
> me no way to turn that back on temporarily without commenting out code.
> I'd like to propose the patch below, or something like it.hi
> 
> I have tried to keep it backwards compatible.  I've seen no other unit
> tests for logging features, so I couldn't see where to put test logfiles.
> As a consequence this has no tests, but I have used it live and it seems
> to be working correctly.  I've also written it in such a way that 
> boolean parameters may be avoided.  Maybe it can be hammered into a
> better shape before acceptance?
> 
>         Thank you,
>         Hugh
> 
> --- activerecord-1.15.3/lib/active_record/base.rb.orig        2007-04-04 
> 12:10:45.046875000 +0100
> +++ activerecord-1.15.3/lib/active_record/base.rb     2007-07-20 
> 11:47:22.234375000 +0100
> @@ -861,9 +861,18 @@
>          end
>        end
>  
> -      # Silences the logger for the duration of the block.
> -      def silence
> -        old_logger_level, logger.level = logger.level, Logger::ERROR if 
> logger
> +      # Silences the logger for the duration of the block.  Accepts
> +      # a parameter: true :silence, or :silent keeps it silent,
> +      # anything else leaves things as they are. The default is
> +      # silent, for backwards compatibility, and because it's what
> +      # you normally want.
> +      # (This means one need not use obsucure boolean parameters.)
> +      def silence(use_silence = true)
> +        old_logger_level = logger.level if logger
> +        case use_silence
> +        when true, :silent, :silence
> +          logger.level = Logger::ERROR if logger
> +        end
>          yield
>        ensure
>          logger.level = old_logger_level if logger
> 
> 
> 
> 
> 
> > 


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Core" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-core?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to