class UberPresenter::Base

class UberPresenter::PresenterFactory

Attributes

controller[R]

Доступ к объекту контроллера

Public Class Methods

new(controller, *args) click to toggle source

Создаем экземпляр презенера, уникальный для объекта controller

@param [Object] controller @param [Object] args Набор аргументов для презентора @return [Object] Экземпляр презентера

Calls superclass method
# 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) click to toggle source

Получаем хранилище презенторов из контроллера controller

@param [Object] controller @return [Hash]

# 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

Public Instance Methods

inspect() click to toggle source
# 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() click to toggle source

Получаем хранилище презенторов

@return [Hash]

# File lib/uber_presenter/base.rb, line 36
def presenters
  @presenters.present? ? @presenters : self.class.storage_from(controller)
end