egoholic/quasar — pull request #26 by egoholic (2012-03-24 23:54:13+00:00)
Title: Collections

Documents::Extender
Используется для реализации расширения функционала документов плагинами. Примером таких плагинов являются категории. Для того, чтобы работа с категориями была более удобна, документы должны быть расширены набором определенных методов. Любой плагин может использовать Documents::Extender для снабжения документов необходимыми для работы плагина методами, свойствами и т.д.

Пример:

module SuperExt
extend Documents::Extender::Extension

def super_method
puts "I'm super!"
end
end

Documents::Extender.extend_all SuperExt
#=> ["Collection", "Article"]

Article.super_method
# I'm super!

Article.extended_with
#=> [SuperExt]

Каждое расширение должно находиться в директории config/initializers/document_extensions и быть обернутым в модули Document и ExtensionsHub, то есть так:

module Documents
module ExtensionsHub
module Collections
extend Documents::Extender::Extension
Documents::Extender.extend_all self
end
end
end