Class: DataProvider::Base

Inherits:
Object
  • Object
show all
Extended by:
Memoist
Defined in:
lib/data_provider/base.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#controllerObject (readonly)

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



5
6
7
# File 'lib/data_provider/base.rb', line 5

def controller
  @controller
end

Class Method Details

.new(controller, *args) ⇒ Object

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

Parameters:

  • controller (Object)
  • args (Object)

    Набор аргументов для презентора

Returns:

  • (Object)

    Экземпляр провайдера



15
16
17
18
# File 'lib/data_provider/base.rb', line 15

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

Parameters:

  • controller (Object)

Returns:

  • (Hash)


25
26
27
28
# File 'lib/data_provider/base.rb', line 25

def storage_from(controller)
  controller.instance_variable_set(:@data_providers, {}) unless controller.instance_variable_names.include?('@data_providers')
  controller.instance_variable_get(:@data_providers)
end

Instance Method Details

#data_providersHash

Получаем хранилище провайдеров

Returns:

  • (Hash)


35
36
37
# File 'lib/data_provider/base.rb', line 35

def data_providers
  @data_providers.present? ? @data_providers : self.class.storage_from(controller)
end

#inspectObject



39
40
41
# File 'lib/data_provider/base.rb', line 39

def inspect
  "#<#{self.class.name}:#{self.object_id} @controller=#<#{controller.class.name}:#{controller.object_id}>>"
end