Class: Hirb::Eval
- Inherits:
-
Object
- Object
- Hirb::Eval
- Defined in:
- lib/hirb/eval.rb
Class Method Summary collapse
Class Method Details
.boom_shakalaka(cmd) ⇒ Object
7 8 9 10 11 12 13 14 |
# File 'lib/hirb/eval.rb', line 7 def boom_shakalaka(cmd) puts "=" * 80 puts cmd puts "=" * 80 JSON.generate( steal_output { Kernel.eval("_ = #{cmd}", $binding) } ) end |
.steal_output(&b) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/hirb/eval.rb', line 16 def steal_output(&b) # Hold on to stdout and stderr stdout, stderr = $stdout, $stderr # Redirect stdout and stderr $stdout, $stderr = StringIO.new, StringIO.new result = nil begin result = b.call.inspect rescue $stderr.puts $! $stderr.puts $!.backtrace stderr.puts $! stderr.puts $!.backtrace end r = { :result => result, :out => $stdout.string.split("\n"), :err => $stderr.string.split("\n") } # Set stdout and stderr back $stdout, $stderr = stdout, stderr r end |