Если у меня следующая структура проекта
project/
lib/
subproject/
a.rb
b.rb
lib.rb
где lib.rb выглядит так: -
module Subproject
def foo
do_some_stuff
end
end
и a.rb и b.rb оба должны смешивать некоторые методы в lib.rb и оба находятся в пространстве имен внутри модуля следующим образом: -
require 'subproject/lib'
module Subproject
class A
include Subproject
def initialize()
foo()
end
end
end
Что делает ruby, когда встречает оператор include? Откуда он знает, что я хочу включить только миксин из lib.rb, а не весь модуль, который включает в себя как класс A, так и класс B, основано ли это исключительно на требованиях подпроекта / lib или я ошибаюсь, и это включая весь модуль, включая определения классов A и B внутри себя?