module Toggleable::Base::ClassMethods
it will generate these methods into included class.
Public Instance Methods
activate!(actor: nil)
click to toggle source
# File lib/toggleable/base.rb, line 28 def activate!(actor: nil) toggle_key(true, actor) end
active?()
click to toggle source
# File lib/toggleable/base.rb, line 20 def active? return to_bool(toggle_active.to_s) unless toggle_active.nil? # Lazily register the key Toggleable.configuration.storage.set_if_not_exist(key, DEFAULT_VALUE, namespace: Toggleable.configuration.namespace) DEFAULT_VALUE end
deactivate!(actor: nil)
click to toggle source
# File lib/toggleable/base.rb, line 32 def deactivate!(actor: nil) toggle_key(false, actor) end
description()
click to toggle source
# File lib/toggleable/base.rb, line 40 def description name end
key()
click to toggle source
# File lib/toggleable/base.rb, line 36 def key @key ||= name.underscore end
process() { || ... }
click to toggle source
should we encourage proxy classes
# File lib/toggleable/base.rb, line 45 def process yield if active? end
Private Instance Methods
read_expired?()
click to toggle source
# File lib/toggleable/base.rb, line 62 def read_expired? @_last_read_at < Time.now.localtime - Toggleable.configuration.expiration_time end
to_bool(value)
click to toggle source
# File lib/toggleable/base.rb, line 66 def to_bool(value) return true if value =~ /^(true|t|yes|y|1)$/i return false if value.empty? || value =~ /^(false|f|no|n|0)$/i raise ArgumentError, "invalid value for Boolean: \"#{value}\"" end
toggle_active()
click to toggle source
# File lib/toggleable/base.rb, line 56 def toggle_active return @_toggle_active if defined?(@_toggle_active) && !read_expired? && Toggleable.configuration.use_memoization @_last_read_at = Time.now.localtime @_toggle_active = Toggleable.configuration.storage.get(key, namespace: Toggleable.configuration.namespace) end
toggle_key(value, actor)
click to toggle source
# File lib/toggleable/base.rb, line 51 def toggle_key(value, actor) Toggleable.configuration.logger&.log(key: key, value: value, actor: actor) Toggleable.configuration.storage.set(key, value, namespace: Toggleable.configuration.namespace) end