Class: Capsula::Base
- Inherits:
-
Object
- Object
- Capsula::Base
- Defined in:
- lib/capsula/base.rb
Class Method Summary collapse
-
.merged_plans_declarations ⇒ Object
declarations from current class and from all parents, if such present.
-
.plan_for(relation_key, **opt) ⇒ Object
DSL method.
Instance Method Summary collapse
- #encapsulate ⇒ Object
-
#initialize(items) ⇒ Base
constructor
Base class for inheritence when creating new Encapsulators.
- #plans(*keys) ⇒ Object
Constructor Details
#initialize(items) ⇒ Base
Base class for inheritence when creating new Encapsulators
8 9 10 |
# File 'lib/capsula/base.rb', line 8 def initialize items @items = items end |
Class Method Details
.merged_plans_declarations ⇒ Object
declarations from current class and from all parents, if such present
33 34 35 36 37 38 39 40 41 42 |
# File 'lib/capsula/base.rb', line 33 def merged_plans_declarations return @merged_plans_declarations if defined?(@merged_plans_declarations) @merged_plans_declarations = plans_declarations || {} sc = self while (sc = sc.superclass).respond_to?(:plans_declarations) @merged_plans_declarations.merge!(sc.plans_declarations) end @merged_plans_declarations end |
.plan_for(relation_key, **opt) ⇒ Object
DSL method
28 29 30 |
# File 'lib/capsula/base.rb', line 28 def plan_for relation_key, **opt add_to_plans_declaration relation_key: relation_key, **opt end |
Instance Method Details
#encapsulate ⇒ Object
17 18 19 20 21 22 23 |
# File 'lib/capsula/base.rb', line 17 def encapsulate Encapsulator.new( items: @items, declarations: self.class.merged_plans_declarations, keys: @keys ).preload_and_encapsulate end |
#plans(*keys) ⇒ Object
12 13 14 15 |
# File 'lib/capsula/base.rb', line 12 def plans *keys @keys = keys.flatten.compact.uniq self end |