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_disabled(feature, context = nil, default_value = true) {|blk| ... } ⇒ Object
execute a code block (passed as a parameter), if is_disabled? is true.
-
#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
rubocop:disable Metrics/AbcSize.
- #is_disabled?(feature, context = nil, default_value_param = true, &fallback_blk) ⇒ Boolean (also: #disabled?)
-
#is_enabled?(feature, context = nil, default_value_param = false, &fallback_blk) ⇒ Boolean
(also: #enabled?)
rubocop:enable Metrics/AbcSize.
-
#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
rubocop:disable Metrics/AbcSize
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/unleash/client.rb', line 15 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.engine = YggdrasilEngine.new Unleash.engine.register_custom_strategies(Unleash.configuration.strategies.custom_strategies) Unleash.toggle_fetcher = Unleash::ToggleFetcher.new Unleash.engine if Unleash.configuration.disable_client Unleash.logger.warn "Unleash::Client is disabled! Will only return default (or bootstrapped if available) results!" Unleash.logger.warn "Unleash::Client is disabled! Metrics and MetricsReporter are also disabled!" Unleash.configuration.disable_metrics = true 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
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
# File 'lib/unleash/client.rb', line 78 def get_variant(feature, context = Unleash::Context.new, fallback_variant = disabled_variant) variant = Unleash.engine.get_variant(feature, context) if variant.nil? Unleash.logger.debug "Unleash::Client.get_variant variants for feature: #{feature} not found" Unleash.engine.count_toggle(feature, false) return fallback_variant end variant = Variant.new(variant) Unleash.engine.count_variant(feature, variant.name) Unleash.engine.count_toggle(feature, variant.feature_enabled) # TODO: Add to README: name, payload, enabled (bool) variant end |
#if_disabled(feature, context = nil, default_value = true) {|blk| ... } ⇒ Object
execute a code block (passed as a parameter), if is_disabled? is true.
74 75 76 |
# File 'lib/unleash/client.rb', line 74 def if_disabled(feature, context = nil, default_value = true, &blk) yield(blk) if is_disabled?(feature, context, default_value) end |
#if_enabled(feature, context = nil, default_value = false) {|blk| ... } ⇒ Object
execute a code block (passed as a parameter), if is_enabled? is true.
69 70 71 |
# File 'lib/unleash/client.rb', line 69 def if_enabled(feature, context = nil, default_value = false, &blk) yield(blk) if is_enabled?(feature, context, default_value) end |
#is_disabled?(feature, context = nil, default_value_param = true, &fallback_blk) ⇒ Boolean Also known as: disabled?
59 60 61 |
# File 'lib/unleash/client.rb', line 59 def is_disabled?(feature, context = nil, default_value_param = true, &fallback_blk) !is_enabled?(feature, context, !default_value_param, &fallback_blk) end |
#is_enabled?(feature, context = nil, default_value_param = false, &fallback_blk) ⇒ Boolean Also known as: enabled?
rubocop:enable Metrics/AbcSize
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/unleash/client.rb', line 38 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_enabled = Unleash.engine.enabled?(feature, context) if toggle_enabled.nil? Unleash.logger.debug "Unleash::Client.is_enabled? feature: #{feature} not found" Unleash.engine.count_toggle(feature, false) return default_value end Unleash.engine.count_toggle(feature, toggle_enabled) toggle_enabled end |
#shutdown ⇒ Object
safe shutdown: also flush metrics to server and toggles to disk
98 99 100 101 102 103 |
# File 'lib/unleash/client.rb', line 98 def shutdown unless Unleash.configuration.disable_client Unleash.reporter.post unless Unleash.configuration.disable_metrics shutdown! end end |
#shutdown! ⇒ Object
quick shutdown: just kill running threads
106 107 108 109 110 111 |
# File 'lib/unleash/client.rb', line 106 def shutdown! unless Unleash.configuration.disable_client self.fetcher_scheduled_executor.exit self.metrics_scheduled_executor.exit unless Unleash.configuration.disable_metrics end end |