在ruby中包装内核方法
试图调试我的环境中可能存在的require/load问题(仅打印在ruby中包装内核方法,ruby,Ruby,试图调试我的环境中可能存在的require/load问题(仅打印$”&$:是不够的),我希望包装load方法,但我预期的print语句没有执行,因此我假设以下操作没有如我所希望的那样工作 module Kernel alias :old_load :load def load(fname, wrap=false) puts "loading #{fname}" old_load fname, wrap end end 那么,通常是否可以包装内核方法(使用别名或其他方
$”
&$:
是不够的),我希望包装load方法,但我预期的print语句没有执行,因此我假设以下操作没有如我所希望的那样工作
module Kernel
alias :old_load :load
def load(fname, wrap=false)
puts "loading #{fname}"
old_load fname, wrap
end
end
那么,通常是否可以包装内核方法(使用别名或其他方式)?如果可以,正确的语法是什么
谢谢你确定吗?它在1.9.2中对我有效。是的,在这里也有效。记住在这个定义之后加载。@tadman,@p4010你们是对的……我假设
require
会自然调用加载
,并想在那里调试它。但是它调用了一个内部C函数rb\u load\u internal
>(请参阅),这将无法用ruby进行包装。如果您将其作为正确答案发布,我将接受您的任何一个答案…如果您有除$:$”之外的任何提示,strace也将非常好-谢谢!我不知道我们中是否有人提供了这个问题的答案。为什么不用你发现的自我回答呢?也许我误解了什么,但包装对我来说需要。