Class: RubyOnAcid::MetaFactory
- Defined in:
- lib/rubyonacid/factories/meta.rb
Overview
The MetaFactory assigns factories to requested value types.
Direct Known Subclasses
Instance Attribute Summary collapse
-
#factory_pool ⇒ Object
An array of Factory objects to assign to keys.
Instance Method Summary collapse
-
#assign_factory(key, factory) ⇒ Object
Assign a factory for subsequent get_unit requests for the given key.
-
#get_unit(key) ⇒ Object
Returns the value of get_unit from the Factory assigned to the given key.
-
#initialize(factory_pool = []) ⇒ MetaFactory
constructor
A new instance of MetaFactory.
-
#reset_assignments ⇒ Object
Clear all factory assignments.
Methods inherited from Factory
#boolean, #choose, #get, #within
Constructor Details
#initialize(factory_pool = []) ⇒ MetaFactory
Returns a new instance of MetaFactory.
11 12 13 14 15 |
# File 'lib/rubyonacid/factories/meta.rb', line 11 def initialize(factory_pool = []) super @factory_pool = factory_pool @assigned_factories = {} end |
Instance Attribute Details
#factory_pool ⇒ Object
An array of Factory objects to assign to keys.
9 10 11 |
# File 'lib/rubyonacid/factories/meta.rb', line 9 def factory_pool @factory_pool end |
Instance Method Details
#assign_factory(key, factory) ⇒ Object
Assign a factory for subsequent get_unit requests for the given key.
18 19 20 |
# File 'lib/rubyonacid/factories/meta.rb', line 18 def assign_factory(key, factory) @assigned_factories[key] = factory end |
#get_unit(key) ⇒ Object
Returns the value of get_unit from the Factory assigned to the given key. When a key is needed that a Factory is not already assigned to, one will be assigned at random from the factory_pool.
24 25 26 27 |
# File 'lib/rubyonacid/factories/meta.rb', line 24 def get_unit(key) @assigned_factories[key] ||= @factory_pool[rand(@factory_pool.length)] @assigned_factories[key].get_unit(key) end |
#reset_assignments ⇒ Object
Clear all factory assignments.
30 31 32 |
# File 'lib/rubyonacid/factories/meta.rb', line 30 def reset_assignments @assigned_factories.clear end |