我需要从Ruby文件中覆盖require
,这是我的start.rb所需要的,这是应用程序入口点。在此之前,在start.rb中加载rubygems
。
我尝试的一切都给了我一个堆栈溢出错误。
这样做的正确方法是什么?
答案 0 :(得分:7)
通常,如果要修补某些内置方法,则应首先为原始方法创建别名。大多数情况下,你会用最重要的方法在某处调用旧的。否则你将失去原始方法的功能,并且可能会破坏应用程序逻辑。
ri require
或阅读文档以了解require
方法的定义位置。你会发现它在Kernel
模块中。此外,您将找到其方法签名,以便您知道参数列表的外观。Kernel
。 不要打破功能,除非你知道自己在做什么。module Kernel
# make an alias of the original require
alias_method :original_require, :require
# rewrite require
def require name
puts name
original_require name
end
end
# test the new require
require 'date'