Class: DataProvider::Base
- Inherits:
-
Object
- Object
- DataProvider::Base
- Extended by:
- Memoist
- Defined in:
- lib/data_provider/base.rb
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
-
#data_providers ⇒ Hash
Получаем хранилище провайдеров.
- #inspect ⇒ Object
Instance Attribute Details
#controller ⇒ Object (readonly)
Доступ к объекту контроллера
5 6 7 |
# File 'lib/data_provider/base.rb', line 5 def controller @controller end |
Class Method Details
.new(controller, *args) ⇒ Object
Создаем экземпляр презенера, уникальный для объекта controller
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
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_providers ⇒ 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 |
#inspect ⇒ Object
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 |