Class: MixedGauge::ReplicationMapping
- Inherits:
-
Object
- Object
- MixedGauge::ReplicationMapping
- Defined in:
- lib/mixed_gauge/replication_mapping.rb
Overview
Manages mapping of each database connection
Instance Method Summary collapse
-
#initialize(mapping) ⇒ ReplicationMapping
constructor
A new instance of ReplicationMapping.
-
#switch(from, role_name) ⇒ Class, Object
If block given then yielded result else target shard model.
Constructor Details
#initialize(mapping) ⇒ ReplicationMapping
Returns a new instance of ReplicationMapping.
4 5 6 7 |
# File 'lib/mixed_gauge/replication_mapping.rb', line 4 def initialize(mapping) @mapping = mapping @lock = Mutex.new end |
Instance Method Details
#switch(from, role_name) ⇒ Class, Object
Returns if block given then yielded result else target shard model.
13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/mixed_gauge/replication_mapping.rb', line 13 def switch(from, role_name) @lock.synchronize { constantize! unless constantized? } model = @mapping.fetch(role_name) target_shard_model = model.shard_repository.fetch_by_slots(from.assigned_slots) if block_given? target_shard_model.connection_pool.with_connection { yield target_shard_model } else target_shard_model end end |