Proprio A proposito, ecco un "modo hacky". Questa è la mia (ri) attuazione ppp.rb noto:.
#!/usr/bin/ruby
#
# better ppp.rb
#
require 'continuation' if RUBY_VERSION >= '1.9.0'
def ppp(*sym)
cc = nil
ok = false
set_trace_func lambda {|event, file, lineno, id, binding, klass|
if ok
set_trace_func nil
cc.call(binding)
else
ok = event == "return"
end
}
return unless bb = callcc{|c| cc = c; nil }
sym.map{|s| v = eval(s.to_s, bb); puts "#{s.inspect} = #{v}"; v }
end
a = 1
s = "hello"
ppp :a, :s
exit 0
Questo attualmente non riesce e 1.9 [012] a causa di un bug in set_trace_func di Ruby.
fonte
2011-05-24 11:46:12
Ecco un esempio del modo fragile di usare set_trace_func per farlo: http://stackoverflow.com/questions/1314592/how-can-i-get-the-binding-from-methodmissing/1315612#1315612 – rampion
Dovrebbe includere dichiarazione di non responsabilità : Si prega di non farlo a meno che non lo si * in effetti * usandolo per il debug di qualche tipo. – tmandry