From: Albert Schlef Date: 2010-03-05T14:47:28+09:00 Subject: Outputting to a string I have a function that generates some textual data that I capture into a string: def gen_data(output, ...) ... output << "... some data ..." ... end s = '' gen_data(s, ...) I was wondering if instead it's possible to use a pattern similar to the following: def gen_data(...) ... puts "... some data ..." ... end s = capture_output do gen_data(...) end That's because I want to pass gen_data() as few arguments as possible (to make the code look "clean". But also because my current code already uses 'puts'. And also because I encountered this need several times in the past and I'm curious.) I notice that this last pattern has a problem: if some debugging code uses 'puts' too, the output will be ruined. So I'm interested to hears about similar patterns and not necessarily the faulty one I devised here. -- Posted via http://www.ruby-forum.com/.