Class: SplitIoClient::SplitFactory

Inherits:
Object
  • Object
show all
Includes:
Cache::Repositories, Cache::Stores
Defined in:
lib/splitclient-rb/split_factory.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(api_key, config_hash = {}) ⇒ SplitFactory

Returns a new instance of SplitFactory.



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/splitclient-rb/split_factory.rb', line 8

def initialize(api_key, config_hash = {})
  @api_key = api_key
  SplitIoClient.configure(config_hash)
  @cache_adapter = SplitIoClient.configuration.cache_adapter

  @splits_repository = SplitsRepository.new(@cache_adapter)
  @segments_repository = SegmentsRepository.new(@cache_adapter)
  @impressions_repository = ImpressionsRepository.new(SplitIoClient.configuration.impressions_adapter)
  @metrics_repository = MetricsRepository.new(SplitIoClient.configuration.metrics_adapter)
  @events_repository = EventsRepository.new(SplitIoClient.configuration.events_adapter)

  @sdk_blocker = SDKBlocker.new(@splits_repository, @segments_repository)
  @adapter = start!

  @client = SplitClient.new(@api_key, @adapter, @splits_repository, @segments_repository, @impressions_repository, @metrics_repository, @events_repository)
  @manager = SplitManager.new(@api_key, @adapter, @splits_repository)

  @sdk_blocker.block if SplitIoClient.configuration.block_until_ready > 0
end

Instance Attribute Details

#adapterObject (readonly)

Returns the value of attribute adapter.



6
7
8
# File 'lib/splitclient-rb/split_factory.rb', line 6

def adapter
  @adapter
end

#clientObject (readonly)

Returns the value of attribute client.



6
7
8
# File 'lib/splitclient-rb/split_factory.rb', line 6

def client
  @client
end

#managerObject (readonly)

Returns the value of attribute manager.



6
7
8
# File 'lib/splitclient-rb/split_factory.rb', line 6

def manager
  @manager
end

Instance Method Details

#start!Object Also known as: resume!



28
29
30
# File 'lib/splitclient-rb/split_factory.rb', line 28

def start!
  SplitAdapter.new(@api_key, @splits_repository, @segments_repository, @impressions_repository, @metrics_repository, @events_repository, @sdk_blocker)
end

#stop!Object



32
33
34
# File 'lib/splitclient-rb/split_factory.rb', line 32

def stop!
  SplitIoClient.configuration.threads.each { |_, t| t.exit }
end