class ThisFeature::Adapters::SplitIo
Constants
- UNDEFINED_KEY
used as treatment key when none is given, it's required by split
Attributes
client[R]
context_key_method[R]
Public Class Methods
new(client: nil, context_key_method: nil)
click to toggle source
# File lib/this_feature/adapters/split_io.rb, line 9 def initialize(client: nil, context_key_method: nil) @client = client || default_split_client @context_key_method = context_key_method @client.block_until_ready end
Public Instance Methods
control?(flag_name, context: UNDEFINED_KEY, data: {})
click to toggle source
# File lib/this_feature/adapters/split_io.rb, line 20 def control?(flag_name, context: UNDEFINED_KEY, data: {}) treatment(flag_name, context: context, data: data).include?('control') end
off?(flag_name, context: UNDEFINED_KEY, data: {})
click to toggle source
# File lib/this_feature/adapters/split_io.rb, line 28 def off?(flag_name, context: UNDEFINED_KEY, data: {}) treatment(flag_name, context: context, data: data).eql?('off') end
on?(flag_name, context: UNDEFINED_KEY, data: {})
click to toggle source
# File lib/this_feature/adapters/split_io.rb, line 24 def on?(flag_name, context: UNDEFINED_KEY, data: {}) treatment(flag_name, context: context, data: data).eql?('on') end
present?(flag_name)
click to toggle source
# File lib/this_feature/adapters/split_io.rb, line 16 def present?(flag_name) !control?(flag_name) end
Private Instance Methods
context_key(context)
click to toggle source
# File lib/this_feature/adapters/split_io.rb, line 40 def context_key(context) return UNDEFINED_KEY if context.nil? || context.eql?(UNDEFINED_KEY) return context.send(context_key_method) unless context_key_method.nil? return context.to_s if context.respond_to?(:to_s) context end
default_split_client()
click to toggle source
# File lib/this_feature/adapters/split_io.rb, line 48 def default_split_client SplitIoClient::SplitFactory.new(ENV.fetch('SPLIT_IO_AUTH_KEY')).client end
treatment(flag_name, context: UNDEFINED_KEY, data: {})
click to toggle source
# File lib/this_feature/adapters/split_io.rb, line 36 def treatment(flag_name, context: UNDEFINED_KEY, data: {}) client.get_treatment(context_key(context), flag_name, data) end