4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
# File 'lib/tee_simple.rb', line 4
def self.install(fn)
return if $stdout_tee
$stdout_tee = if fn.kind_of?(String)
File.open(fn,'w')
elsif defined?(fn.write)
fn
end
$stdout.instance_exec(fn) do
break if defined? write_origin
alias :write_origin :write
def write s
write_origin s
$stdout_tee.write s
end
end
$stderr.instance_exec(fn) do
break if defined? write_origin
alias :write_origin :write
def write s
write_origin s
$stdout_tee.write s
end
end
if fn.kind_of?(String)
at_exit { $stdout_tee.close unless $stdout_tee.closed? }
elsif defined?(fn.write)
end
true
end
|