From: 7stud -- Date: 2009-02-09T07:29:40+09:00 Subject: assignment to $stdout deprecated? In pickaxe2, on p. 335, it says that assigning to $stdout is deprecated and to use $stdout.reopen() instead: -------------------------------------------------------------- IO#reopen ios.reopen(other_IO) => ios ios.reopen(path, mode_str) => ios ------------------------------------------------------------------------ Reassociates _ios_ with the I/O stream given in _other_IO_ or to a new stream opened on _path_. This may dynamically change the actual class of this stream. f1 = File.new("testfile") f2 = File.new("testfile") f2.readlines[0] #=> "This is line one\n" f2.reopen(f1) #=> # f2.readlines[0] #=> "This is line one\n" And there is this in the Standard LIbrary: StringIO Once a string is wrapped in a StringIO object, it can be read from and written to as if it were an open file....It also lets you pass strings into classes and methods that were originally written to work with files. But I get an error trying to replace $stdout with a StringIO object: require "stringio" strio = StringIO.new old_out = $stdout $stdout.reopen(strio) --output:-- r1test.rb:5:in `reopen': cannot convert StringIO into String (TypeError) from r1test.rb:5 What am I doing wrong? -- Posted via http://www.ruby-forum.com/.