Class: SplitIoClient::Engine::Common::ImpressionManager

Inherits:
Object
  • Object
show all
Defined in:
lib/splitclient-rb/engine/common/impressions_manager.rb

Instance Method Summary collapse

Constructor Details

#initialize(config, impressions_repository, impression_counter) ⇒ ImpressionManager

Returns a new instance of ImpressionManager.



7
8
9
10
11
12
# File 'lib/splitclient-rb/engine/common/impressions_manager.rb', line 7

def initialize(config, impressions_repository, impression_counter)
  @config = config
  @impressions_repository = impressions_repository
  @impression_counter = impression_counter
  @impression_observer = SplitIoClient::Observers::ImpressionObserver.new
end

Instance Method Details

#build_impression(matching_key, bucketing_key, split_name, treatment, params = {}) ⇒ Object

added param time for test



15
16
17
18
19
20
21
22
23
24
25
# File 'lib/splitclient-rb/engine/common/impressions_manager.rb', line 15

def build_impression(matching_key, bucketing_key, split_name, treatment, params = {})
  impression_data = impression_data(matching_key, bucketing_key, split_name, treatment, params[:time])

  impression_data[:pt] = @impression_observer.test_and_set(impression_data) unless redis?

  @impression_counter.inc(split_name, impression_data[:m]) if optimized? && !redis?

  impression(impression_data, params[:attributes])
rescue StandardError => error
  @config.log_found_exception(__method__.to_s, error)
end

#track(impressions) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/splitclient-rb/engine/common/impressions_manager.rb', line 27

def track(impressions)
  return if impressions.empty?

  impression_router.add_bulk(impressions)

  if optimized? && !redis?
    optimized_impressions = impressions.select { |imp| should_queue_impression?(imp[:i]) }
    @impressions_repository.add_bulk(optimized_impressions)
  else
    @impressions_repository.add_bulk(impressions)
  end
rescue StandardError => error
  @config.log_found_exception(__method__.to_s, error)
end