很抱歉的模糊問題的標題,但我不知道是什麼原因導致了以下內容:重寫namespaced puts只有在覆蓋Kernel.puts後才起作用?
module Capistrano
class Configuration
def puts string
::Kernel.puts 'test'
end
end
end
現在,當調用Capistrano的puts
,我沒有看到「測試」,但我看到原來的輸出。
然而,當我還補充一點:
module Kernel
def puts string
::Kernel.puts 'what gives?'
end
end
現在,突然之間,puts
實際上返回 「測試」,而不是 「怎麼辦?」,而不是原來的內容,但 「測試」。
是否有合理的解釋爲什麼會發生這種情況(除了我對Ruby內核內部工作的有限理解之外)?
事情看起來關閉,我(但不知何故「似乎工作」):
- 我希望第一個塊返回「測試」,但它沒有
- 我期望這兩個塊的組合返回'什麼給?',但它返回'測試'?
- 我重寫Kernel.puts的方式對我來說似乎是一個永無止境的循環?