3
我需要从一个Ruby文件中覆盖require
,这是我的start.rb(应用程序入口点)所必需的。在start.rb中,在此之前加载了rubygems
。如何在Ruby中覆盖require?
我试过的一切都给了我一个堆栈溢出错误。
什么是正确的做法?
我需要从一个Ruby文件中覆盖require
,这是我的start.rb(应用程序入口点)所必需的。在start.rb中,在此之前加载了rubygems
。如何在Ruby中覆盖require?
我试过的一切都给了我一个堆栈溢出错误。
什么是正确的做法?
一般来说,如果你想修补一些内置的方法,你应该先为原始方法制作一个别名。大多数情况下,你会在你的压倒一切的方法的某个地方调用旧的。否则,您将失去原始方法的功能,并且很可能会破坏应用程序逻辑。
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'
你为什么要这么做?你为什么需要它? – 2013-03-27 14:47:44
没有正确的方法来做到这一点。你不应该。 – 2013-03-27 14:48:29
Rubygems做到了,为什么我不应该这样做? – guai 2013-03-27 14:49:31