i am very confused about how/when global state is shared between
parent-child processes in ruby, look at the following :

#!/usr/bin/env ruby

require 'delegate'

$errlog0 = open 'errlog0', 'w'
$errlog1 = open 'errlog1', 'w'

#############################################
# TEST ZERO
#############################################
class DupIO < SimpleDelegator
  def initialize io
    super io
  end
end

$stderr = DupIO.new $errlog0

puts "RUNNING TEST ZERO"

$stderr.puts 'this is redirected into errlog'
# this is NOT!!!
`ls some/command/which/produces/stderr`


#############################################
# TEST ONE
#############################################
$stderr = $errlog1

puts "RUNNING TEST ONE"

$stderr.puts 'this is redirected into errlog'
# this is TOO!!!
`ls some/command/which/produces/stderr`


-----
in TEST ZERO it seems the global variable $stderr has NO impact on a
spawned subprocess, yet in TEST ONE is certainly does??  can anyone
shed light on this?

-ara howard
ahoward / fsl.noaa.gov