Class: SplitIoClient::SplitManager
- Inherits:
-
Object
- Object
- SplitIoClient::SplitManager
- Defined in:
- lib/splitclient-rb/managers/split_manager.rb
Instance Method Summary collapse
- #block_until_ready(time = nil) ⇒ Object
-
#initialize(splits_repository = nil, status_manager, config) ⇒ SplitIoManager
constructor
Creates a new split manager instance that connects to split.io API.
-
#split(feature_flag_name) ⇒ Object
method to get a split view.
-
#split_names ⇒ Object
method to get the list of just split names.
-
#splits ⇒ Object
method to get the split list from the client.
Constructor Details
#initialize(splits_repository = nil, status_manager, config) ⇒ SplitIoManager
Creates a new split manager instance that connects to split.io API.
7 8 9 10 11 |
# File 'lib/splitclient-rb/managers/split_manager.rb', line 7 def initialize(splits_repository = nil, status_manager, config) @splits_repository = splits_repository @status_manager = status_manager @config = config end |
Instance Method Details
#block_until_ready(time = nil) ⇒ Object
80 81 82 |
# File 'lib/splitclient-rb/managers/split_manager.rb', line 80 def block_until_ready(time = nil) @status_manager.wait_until_ready(time) if @status_manager end |
#split(feature_flag_name) ⇒ Object
method to get a split view
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/splitclient-rb/managers/split_manager.rb', line 53 def split(feature_flag_name) return unless @config.valid_mode && @splits_repository && @config.split_validator.valid_split_parameters(feature_flag_name) if !ready? @config.logger.error("split: the SDK is not ready, the operation cannot be executed") return end sanitized_feature_flag_name = feature_flag_name.to_s.strip if feature_flag_name.to_s != sanitized_feature_flag_name @config.logger.warn("split: feature_flag_name #{feature_flag_name} has extra whitespace, trimming") feature_flag_name = sanitized_feature_flag_name end split = @splits_repository.get_split(feature_flag_name) if ready? && split.nil? @config.logger.warn("split: you passed #{feature_flag_name} " \ 'that does not exist in this environment, please double check what feature flags exist in the Split user interface') end return if split.nil? || Engine::Models::Split.archived?(split) build_split_view(feature_flag_name, split) end |
#split_names ⇒ Object
method to get the list of just split names. Ideal for ietrating and calling client.get_treatment
38 39 40 41 42 43 44 45 46 47 |
# File 'lib/splitclient-rb/managers/split_manager.rb', line 38 def split_names return [] if !@config.valid_mode || @splits_repository.nil? if !ready? @config.logger.error("split_names: the SDK is not ready, the operation cannot be executed") return [] end @splits_repository.split_names end |
#splits ⇒ Object
method to get the split list from the client
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/splitclient-rb/managers/split_manager.rb', line 17 def splits return [] if !@config.valid_mode || @splits_repository.nil? if !ready? @config.logger.error("splits: the SDK is not ready, the operation cannot be executed") return [] end @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 |