Class: Unleash::Client
- Inherits:
-
Object
- Object
- Unleash::Client
- Defined in:
- lib/unleash/client.rb
Instance Attribute Summary collapse
-
#fetcher_scheduled_executor ⇒ Object
Returns the value of attribute fetcher_scheduled_executor.
-
#metrics_scheduled_executor ⇒ Object
Returns the value of attribute metrics_scheduled_executor.
Instance Method Summary collapse
- #get_variant(feature, context = Unleash::Context.new, fallback_variant = disabled_variant) ⇒ Object
-
#if_enabled(feature, context = nil, default_value = false) {|blk| ... } ⇒ Object
execute a code block (passed as a parameter), if is_enabled? is true.
-
#initialize(*opts) ⇒ Client
constructor
A new instance of Client.
- #is_enabled?(feature, context = nil, default_value_param = false, &fallback_blk) ⇒ Boolean (also: #enabled?)
-
#shutdown ⇒ Object
safe shutdown: also flush metrics to server and toggles to disk.
-
#shutdown! ⇒ Object
quick shutdown: just kill running threads.
Constructor Details
#initialize(*opts) ⇒ Client
Returns a new instance of Client.
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/unleash/client.rb', line 14 def initialize(*opts) Unleash.configuration = Unleash::Configuration.new(*opts) unless opts.empty? Unleash.configuration.validate! Unleash.logger = Unleash.configuration.logger.clone Unleash.logger.level = Unleash.configuration.log_level Unleash.toggle_fetcher = Unleash::ToggleFetcher.new if Unleash.configuration.disable_client Unleash.logger.warn "Unleash::Client is disabled! Will only return default (or bootstrapped if available) results!" return end register start_toggle_fetcher start_metrics unless Unleash.configuration.disable_metrics end |
Instance Attribute Details
#fetcher_scheduled_executor ⇒ Object
Returns the value of attribute fetcher_scheduled_executor.
12 13 14 |
# File 'lib/unleash/client.rb', line 12 def fetcher_scheduled_executor @fetcher_scheduled_executor end |
#metrics_scheduled_executor ⇒ Object
Returns the value of attribute metrics_scheduled_executor.
12 13 14 |
# File 'lib/unleash/client.rb', line 12 def metrics_scheduled_executor @metrics_scheduled_executor end |
Instance Method Details
#get_variant(feature, context = Unleash::Context.new, fallback_variant = disabled_variant) ⇒ Object
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/unleash/client.rb', line 61 def get_variant(feature, context = Unleash::Context.new, fallback_variant = disabled_variant) Unleash.logger.debug "Unleash::Client.get_variant for feature: #{feature} with context #{context}" if Unleash.configuration.disable_client Unleash.logger.debug "unleash_client is disabled! Always returning #{fallback_variant} for feature #{feature}!" return fallback_variant end toggle_as_hash = Unleash&.toggles&.select{ |toggle| toggle['name'] == feature }&.first if toggle_as_hash.nil? Unleash.logger.debug "Unleash::Client.get_variant feature: #{feature} not found" return fallback_variant end toggle = Unleash::FeatureToggle.new(toggle_as_hash) variant = toggle.get_variant(context, fallback_variant) if variant.nil? Unleash.logger.debug "Unleash::Client.get_variant variants for feature: #{feature} not found" return fallback_variant end # TODO: Add to README: name, payload, enabled (bool) variant end |
#if_enabled(feature, context = nil, default_value = false) {|blk| ... } ⇒ Object
execute a code block (passed as a parameter), if is_enabled? is true.
57 58 59 |
# File 'lib/unleash/client.rb', line 57 def if_enabled(feature, context = nil, default_value = false, &blk) yield(blk) if is_enabled?(feature, context, default_value) end |
#is_enabled?(feature, context = nil, default_value_param = false, &fallback_blk) ⇒ Boolean Also known as: enabled?
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/unleash/client.rb', line 32 def is_enabled?(feature, context = nil, default_value_param = false, &fallback_blk) Unleash.logger.debug "Unleash::Client.is_enabled? feature: #{feature} with context #{context}" default_value = if block_given? default_value_param || !!fallback_blk.call(feature, context) else default_value_param end toggle_as_hash = Unleash&.toggles&.select{ |toggle| toggle['name'] == feature }&.first if toggle_as_hash.nil? Unleash.logger.debug "Unleash::Client.is_enabled? feature: #{feature} not found" return default_value end toggle = Unleash::FeatureToggle.new(toggle_as_hash, Unleash&.segment_cache) toggle.is_enabled?(context) end |
#shutdown ⇒ Object
safe shutdown: also flush metrics to server and toggles to disk
90 91 92 93 94 95 96 |
# File 'lib/unleash/client.rb', line 90 def shutdown unless Unleash.configuration.disable_client Unleash.toggle_fetcher.save! Unleash.reporter.post unless Unleash.configuration.disable_metrics shutdown! end end |
#shutdown! ⇒ Object
quick shutdown: just kill running threads
99 100 101 102 103 104 |
# File 'lib/unleash/client.rb', line 99 def shutdown! unless Unleash.configuration.disable_client self.fetcher_scheduled_executor.exit self.metrics_scheduled_executor.exit unless Unleash.configuration.disable_metrics end end |