बस FYI करें, यहाँ एक "hacky तरीका है।" यह मेरा (पुनः) प्रसिद्ध ppp.rb के कार्यान्वयन है:।
#!/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
यह वर्तमान में 1.9 के साथ विफल [012] रूबी के set_trace_func में एक बग के कारण।
स्रोत
2011-05-24 11:46:12
यहां ऐसा करने के लिए set_trace_func का उपयोग करने के नाजुक तरीके का एक उदाहरण है: http://stackoverflow.com/questions/1314592/how-can-i-get-the-binding-from-methodmissing/1315612#1315612 – rampion
अस्वीकरण शामिल करना चाहिए : कृपया तब तक ऐसा न करें जब तक कि आप * वास्तव में * किसी प्रकार के डिबगिंग के लिए इसका उपयोग नहीं कर रहे हों। – tmandry