Class: MixedGauge::ShardRepository
- Inherits:
-
Object
- Object
- MixedGauge::ShardRepository
- Defined in:
- lib/mixed_gauge/shard_repository.rb
Overview
Manages generated AR models
Instance Attribute Summary collapse
-
#base_class ⇒ Object
readonly
Returns the value of attribute base_class.
Instance Method Summary collapse
- #all ⇒ Array<Class>
-
#fetch(connection_name) ⇒ Class
A model class for this shard.
-
#fetch_by_slots(assigned_slots) ⇒ Class?
A AR model class.
-
#initialize(cluster_config, base_class) ⇒ ShardRepository
constructor
A new instance of ShardRepository.
Constructor Details
#initialize(cluster_config, base_class) ⇒ ShardRepository
Returns a new instance of ShardRepository.
8 9 10 11 12 13 14 15 |
# File 'lib/mixed_gauge/shard_repository.rb', line 8 def initialize(cluster_config, base_class) @base_class = base_class shards = cluster_config.connection_registry.map do |slot_range, connection_name| [connection_name, generate_model_for_shard(connection_name, slot_range)] end @shards = Hash[shards] end |
Instance Attribute Details
#base_class ⇒ Object (readonly)
Returns the value of attribute base_class.
4 5 6 |
# File 'lib/mixed_gauge/shard_repository.rb', line 4 def base_class @base_class end |
Instance Method Details
#all ⇒ Array<Class>
30 31 32 |
# File 'lib/mixed_gauge/shard_repository.rb', line 30 def all @shards.values end |
#fetch(connection_name) ⇒ Class
Returns A model class for this shard.
19 20 21 |
# File 'lib/mixed_gauge/shard_repository.rb', line 19 def fetch(connection_name) @shards.fetch(connection_name) end |
#fetch_by_slots(assigned_slots) ⇒ Class?
Returns A AR model class.
25 26 27 |
# File 'lib/mixed_gauge/shard_repository.rb', line 25 def fetch_by_slots(assigned_slots) @shards.find { |_, model| model.assigned_slots == assigned_slots }[1] end |