Class: UberPresenter::Base
- Inherits:
-
Object
- Object
- UberPresenter::Base
- Extended by:
- Memoist
- Defined in:
- lib/uber_presenter/base.rb
Overview
class UberPresenter::PresenterFactory
Instance Attribute Summary collapse
-
#controller ⇒ Object
readonly
Доступ к объекту контроллера.
Class Method Summary collapse
-
.new(controller, *args) ⇒ Object
Создаем экземпляр презенера, уникальный для объекта controller.
-
.storage_from(controller) ⇒ Hash
Получаем хранилище презенторов из контроллера controller.
Instance Method Summary collapse
- #inspect ⇒ Object
-
#presenters ⇒ Hash
Получаем хранилище презенторов.
Instance Attribute Details
#controller ⇒ Object (readonly)
Доступ к объекту контроллера
6 7 8 |
# File 'lib/uber_presenter/base.rb', line 6 def controller @controller end |
Class Method Details
.new(controller, *args) ⇒ Object
Создаем экземпляр презенера, уникальный для объекта controller
16 17 18 19 |
# File 'lib/uber_presenter/base.rb', line 16 def new(controller, *args) storage = storage_from(controller) (instance = storage[self.name]).present? ? instance : (storage[self.name] = super(*args)).tap { |inst| inst.instance_variable_set(:@controller, controller) } end |
.storage_from(controller) ⇒ Hash
Получаем хранилище презенторов из контроллера controller
26 27 28 29 |
# File 'lib/uber_presenter/base.rb', line 26 def storage_from(controller) controller.instance_variable_set(:@presenters, {}) unless controller.instance_variable_names.include?('@presenters') controller.instance_variable_get(:@presenters) end |
Instance Method Details
#inspect ⇒ Object
40 41 42 |
# File 'lib/uber_presenter/base.rb', line 40 def inspect "#<#{self.class.name}:#{self.object_id} @controller=#<#{controller.class.name}:#{controller.object_id}>>" end |
#presenters ⇒ Hash
Получаем хранилище презенторов
36 37 38 |
# File 'lib/uber_presenter/base.rb', line 36 def presenters @presenters.present? ? @presenters : self.class.storage_from(controller) end |