사람이 여전히 1.9.3에 관심이 있다면,이 작업을 수행 할 수있는 cludgy 방법이 :
당신은 set_trace_func
내에서 호출 된 함수를 평가하기 위해 eval(code, binding)
을 사용할 수 있습니다 처리기를 호출 한 다음 eval
반환 값을 메모합니다.
직접 발신자 코드를 다시 작성해야합니다. set_trace_func
은 핸들러의 TEH 기간 동안 해제 되었기 때문에에만, 한 수준 아래이 작업을 수행 할 수
arg_arr = []
params = eval('method(__method__).parameters', binding)
params.each do |param|
case param[0]
when :req, :opt
arg_arr << param[1]
when :rest
arg_arr << '*' + param[1]
else
puts "Need handler for type #{param[0]}"
end
end
call_expr = "#{id} #{arg_arr.join(',')}"
puts "Call with <#{call_expr}>"
res = eval(call_expr, binding)
puts "sub-method #{id} returned #{res}"
eval("return #{res.inspect}", binding)
: 같은 뭔가. 더하기 arguments
의 출력이 문서화되지 않은 것으로 보입니다. 또한 악을 사용합니다.