require
загрузит файл. Если этот файл содержит определения классов / модулей, ваш другой код теперь сможет их использовать. Если файл просто содержит код, которого нет ни в одном модуле, он будет запущен так, как если бы он находился в том же месте, что и ваш вызов require (например, PHP include)
include
относится к модулям.
Он берет все методы в модуле и добавляет их в ваш класс. Как это:
class Orig
end
Orig.new.first_method # no such method
module MyModule
def first_method
end
end
class Orig
include MyModule
end
Orig.new.first_method # will now run first_method as it's been added.
Существует также extend
, который работает как include, но вместо добавления методов как instance методов добавляет их как class методы, например:
Обратите внимание, что когда я хотел получить доступ к first_method, я создал новый объект класса Orig
. Вот что я имею в виду под методом экземпляра.
class SecondClass
extend MyModule
end
SecondClass.first_method # will call first_method
Обратите внимание, что в этом примере я не создаю никаких новых объектов, просто вызываю метод непосредственно в классе, как если бы он был определен как self.first_method
все время.
Итак, поехали: -)