[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

How to redefine puts in .rbw files

Jano Svitok

4/17/2007 3:19:00 PM

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

From http://rubyforge.org/tracker/?func=detail&atid=715&aid=9018&gr...
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 :orig_puts, :puts
def puts(*args)
orig_puts *args if $stdout
end
end

(not tested)

Jano

1 Answer

Nobuyoshi Nakada

4/17/2007 3:47:00 PM

0

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