Class: SplitIoClient::SplitManager

Inherits:
Object
  • Object
show all
Defined in:
lib/splitclient-rb/managers/split_manager.rb

Instance Method Summary collapse

Constructor Details

#initialize(api_key, adapter = nil, splits_repository = nil) ⇒ SplitIoManager

Creates a new split manager instance that connects to split.io API.

Parameters:

  • api_key (String)

    the API key for your split account



9
10
11
12
13
# File 'lib/splitclient-rb/managers/split_manager.rb', line 9

def initialize(api_key, adapter = nil, splits_repository = nil)
  @localhost_mode_features = []
  @splits_repository = splits_repository
  @adapter = adapter
end

Instance Method Details

#build_split_view(name, split) ⇒ Object



55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/splitclient-rb/managers/split_manager.rb', line 55

def build_split_view(name, split)
  return {} unless split

  begin
    treatments = split[:conditions]
      .detect { |c| c[:conditionType] == 'ROLLOUT' }[:partitions]
      .map { |partition| partition[:treatment] }
  rescue StandardError
    treatments = []
  end

    {
      name: name,
      traffic_type_name: split[:trafficTypeName],
      killed: split[:killed],
      treatments: treatments,
      change_number: split[:changeNumber]
    }
end

#split(split_name) ⇒ Object

method to get a split view



45
46
47
48
49
50
51
52
53
# File 'lib/splitclient-rb/managers/split_manager.rb', line 45

def split(split_name)
  return unless @splits_repository && SplitIoClient::Validators.valid_split_parameters(split_name)

  split = @splits_repository.get_split(split_name)

  return if split.nil? || Engine::Models::Split.archived?(split)

  build_split_view(split_name, split)
end

#split_namesObject

method to get the list of just split names. Ideal for ietrating and calling client.get_treatment



35
36
37
38
39
# File 'lib/splitclient-rb/managers/split_manager.rb', line 35

def split_names
  return if @splits_repository.nil?

  @splits_repository.split_names
end

#splitsObject

method to get the split list from the client



19
20
21
22
23
24
25
26
27
28
29
# File 'lib/splitclient-rb/managers/split_manager.rb', line 19

def splits
  return if @splits_repository.nil?

  @splits_repository.splits.each_with_object([]) do |(name, split), memo|
    split_view = build_split_view(name, split)

    next if split_view[:name] == nil

    memo << split_view unless Engine::Models::Split.archived?(split)
  end
end