Включение / расширение ядра не добавляет эти методы в 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

Возможно, я делаю это неправильно, или я упускаю что-то простое, но это поведение сбивает меня с толку.

Ответы на вопрос(3)

Ваш ответ на вопрос