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