Class: SplitIoClient::Cache::Repositories::Impressions::MemoryRepository
- Inherits:
-
Object
- Object
- SplitIoClient::Cache::Repositories::Impressions::MemoryRepository
- Defined in:
- lib/splitclient-rb/cache/repositories/impressions/memory_repository.rb
Instance Method Summary collapse
-
#add(split_name, data) ⇒ Object
Store impression data in the selected adapter.
- #add_bulk(key, bucketing_key, treatments, time) ⇒ Object
- #get_batch ⇒ Object
-
#initialize(adapter) ⇒ MemoryRepository
constructor
A new instance of MemoryRepository.
Constructor Details
#initialize(adapter) ⇒ MemoryRepository
Returns a new instance of MemoryRepository.
7 8 9 |
# File 'lib/splitclient-rb/cache/repositories/impressions/memory_repository.rb', line 7 def initialize(adapter) @adapter = adapter end |
Instance Method Details
#add(split_name, data) ⇒ Object
Store impression data in the selected adapter
12 13 14 15 16 17 18 19 |
# File 'lib/splitclient-rb/cache/repositories/impressions/memory_repository.rb', line 12 def add(split_name, data) @adapter.add_to_queue(feature: split_name, impressions: data) rescue ThreadError # queue is full if random_sampler.rand(1..1000) <= 2 # log only 0.2 % of the time SplitIoClient.configuration.logger.warn("Dropping impressions. Current size is #{SplitIoClient.configuration.impressions_queue_size}. " \ "Consider increasing impressions_queue_size") end end |
#add_bulk(key, bucketing_key, treatments, time) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/splitclient-rb/cache/repositories/impressions/memory_repository.rb', line 21 def add_bulk(key, bucketing_key, treatments, time) treatments.each do |split_name, treatment| add( split_name, 'keyName' => key, 'bucketingKey' => bucketing_key, 'treatment' => treatment[:treatment], 'label' => SplitIoClient.configuration.labels_enabled ? treatment[:label] : nil, 'changeNumber' => treatment[:change_number], 'time' => time ) end end |
#get_batch ⇒ Object
35 36 37 38 39 40 |
# File 'lib/splitclient-rb/cache/repositories/impressions/memory_repository.rb', line 35 def get_batch return [] if SplitIoClient.configuration.impressions_bulk_size == 0 @adapter.get_batch(SplitIoClient.configuration.impressions_bulk_size).map do |impression| impression.update(ip: SplitIoClient.configuration.machine_ip) end end |