Ответ 1
Класс Base
обычно используется для идентификации абстрактного класса, который должен быть расширен и реализован разработчиком в конкретном классе.
Например, ActiveRecord::Base
является абстрактным классом для любой модели Active Record в проекте Rails. Модель выглядит как
class User < ActiveRecord::Base
end
Аналогично, Observer
определяет свой собственный Observer::Base
, а Action Controller определяет ActionController::Base
, который в проекте Rails сразу реализуется ApplicationController::Base
.
Ruby не предоставляет ключевое слово или синтаксис на уровне языка для определения абстрактных классов. Технически говоря, ActiveRecord::Base
это не настоящий абстрактный класс, но это своего рода соглашение использовать Base
для этого шаблона.