Включение / расширение ядра не добавляет эти методы в main: Object
Я пытаюсь добавить метод вKernel
модуль, но вместо открытияKernel
и непосредственно определяя метод экземпляра, я пишу модуль, и я хочуKernel
вextend/include
этот модуль.
module Talk
def hello
puts "hello there"
end
end
module Kernel
extend Talk
end
Когда я запускаю это в IRB:
$ hello
NameError: undefined local variable or method `hello' for main:Object
from (irb):12
from /Users/JackC/.rvm/rubies/ruby-1.9.2-p290/bin/irb:16:in `<main>
Если я проверюinstance_methods
наKernel
Я вижу, #hello был добавлен вKernel
, но не вmain Object
.
Я также пытался использоватьinclude
, но происходит то же самое:
module Kernel
include Talk
end
Однако, если я определю это напрямую:
module Kernel
def hello
puts "hello there"
end
end
Тогда это будет включено вmain Object
.
$ hello
hello there
=> nil
В том числеTalk
модуль вObject
тоже работает:
class Object
include Talk
end
Возможно, я делаю это неправильно, или я упускаю что-то простое, но это поведение сбивает меня с толку.