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/.