How to redefine puts in .rbw files

Discussion in 'Ruby' started by Jano Svitok, Apr 17, 2007.

  1. Jano Svitok

    Jano Svitok Guest

    (I'm ccing ruby-talk so that you might get more answers)

    From http://rubyforge.org/tracker/?func=detail&atid=715&aid=9018&group_id=167
    Date: 2007-04-17 17:09
    Sender: M Jessick

    What is the ruby-ish way to protect any stray "puts"
    calls leftover in a .rb fle that you want to run as .rbw?

    For example, I develop in in a .rb file, then run it .rbw. If
    I leave in a puts call it throws. Rather than go through and
    comment them all out (or worse, wrap them all in begin rescue
    end blocks ;), I would prefer them to be ignored through some
    magic.

    Is there a slick ruby way to do this? e.g.: overload puts and
    call the system puts within the overload within a begin rescue
    end.


    For example:

    begin
    puts "puts call that used to be ignored but now raises
    an exception in rubyw.exe since sometime in 2006"
    rescue SystemCallError
    end

    would solve the problem, but if I was smart enough to do this
    everywhere, I would probably know how to do this most conveniently
    in ruby ;)

    Try:

    module Kernel
    alias_method :eek:rig_puts, :puts
    def puts(*args)
    orig_puts *args if $stdout
    end
    end

    (not tested)

    Jano
     
    Jano Svitok, Apr 17, 2007
    #1
    1. Advertising

  2. Hi,

    At Wed, 18 Apr 2007 00:19:23 +0900,
    Jano Svitok wrote in [ruby-talk:248234]:
    > Is there a slick ruby way to do this? e.g.: overload puts and
    > call the system puts within the overload within a begin rescue
    > end.


    The global "puts" calls STDOUT.write.

    def STDOUT.write(str)
    super
    rescue Errno::EBADF
    def self.write(str)
    end
    end

    --
    Nobu Nakada
     
    Nobuyoshi Nakada, Apr 17, 2007
    #2
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. gabriele renzi
    Replies:
    1
    Views:
    117
    gabriele renzi
    Sep 14, 2003
  2. Michael Brooks
    Replies:
    22
    Views:
    415
    Rick DeNatale
    Mar 27, 2007
  3. Raj Singh
    Replies:
    4
    Views:
    143
    Ryan Ingram
    Jan 29, 2008
  4. aidy
    Replies:
    4
    Views:
    119
    Matthias Reitinger
    Aug 22, 2008
  5. Replies:
    8
    Views:
    146
    Louis-Philippe
    Mar 23, 2009
Loading...

Share This Page