module Schaltroom
Feature
Toggle library
Attributes
calls[RW]
Public Class Methods
[](item)
click to toggle source
# File lib/schaltroom.rb, line 29 def self.[](item) handle_caller(caller, __method__, item) feature = Schaltroom.find_feature(item) raise ArgumentError, "Feature: #{item} is unknown. Please add it to your Schaltroom.config" if feature.nil? if feature[:type] == :boolean return feature[:value] else Feature.new(feature) end end
active?(name)
click to toggle source
# File lib/schaltroom.rb, line 73 def self.active?(name) handle_caller(caller, __method__, name) feature = find_feature(name) return false unless feature feature[:value] end
active_before?(name, version)
click to toggle source
# File lib/schaltroom.rb, line 95 def self.active_before?(name, version) handle_caller(caller, __method__, name) Gem::Version.new(version) > Gem::Version.new(find_feature(name)[:value]) end
active_between?(name, first_version, last_version)
click to toggle source
# File lib/schaltroom.rb, line 105 def self.active_between?(name, first_version, last_version) handle_caller(caller, __method__, name) Gem::Version.new(first_version) <= Gem::Version.new(find_feature(name)[:value]) && Gem::Version.new(last_version) >= Gem::Version.new(find_feature(name)[:value]) end
active_since?(name, version)
click to toggle source
# File lib/schaltroom.rb, line 85 def self.active_since?(name, version) handle_caller(caller, __method__, name) Gem::Version.new(version) <= Gem::Version.new(find_feature(name)[:value]) end
add_feature(name, type, value)
click to toggle source
# File lib/schaltroom.rb, line 17 def self.add_feature(name, type, value) @repository.add_feature(name, type, value) end
add_gem(gem)
click to toggle source
# File lib/schaltroom.rb, line 54 def self.add_gem(gem) @repository.add_feature(gem.to_s.to_sym, :version, gem::VERSION::STRING) end
config() { |config| ... }
click to toggle source
# File lib/schaltroom.rb, line 21 def self.config if block_given? yield @config else @config end end
delete_feature(name)
click to toggle source
# File lib/schaltroom.rb, line 64 def self.delete_feature(name) sym = name.is_a?(Symbol) ? name : name.to_s.to_sym self.repository.delete(sym) end
features()
click to toggle source
# File lib/schaltroom.rb, line 69 def self.features self.repository if block_given? end
find_feature(name)
click to toggle source
# File lib/schaltroom.rb, line 58 def self.find_feature(name) return self.repository[name] if name.is_a?(Symbol) self.repository[name.to_s.to_sym] end
gem_version()
click to toggle source
# File lib/schaltroom/version.rb, line 4 def self.gem_version Gem::Version.new VERSION::STRING end
handle_caller(caller_stack, method, feature_name)
click to toggle source
# File lib/schaltroom.rb, line 110 def self.handle_caller(caller_stack, method, feature_name) return unless @config.monitoring == :enabled @calls << { feature_name: feature_name, method: method.to_sym, caller: caller_stack[0] } @calls = @calls.uniq end
inactive?(name)
click to toggle source
# File lib/schaltroom.rb, line 80 def self.inactive?(name) handle_caller(caller, __method__, name) !active?(name) end
inactive_before?(name, version)
click to toggle source
# File lib/schaltroom.rb, line 100 def self.inactive_before?(name, version) handle_caller(caller, __method__, name) Gem::Version.new(version) <= Gem::Version.new(find_feature(name)[:value]) end
inactive_since?(name, version)
click to toggle source
# File lib/schaltroom.rb, line 90 def self.inactive_since?(name, version) handle_caller(caller, __method__, name) Gem::Version.new(version) > Gem::Version.new(find_feature(name)[:value]) end
repository() { |repository| ... }
click to toggle source
# File lib/schaltroom.rb, line 40 def self.repository if block_given? yield @repository else @repository end end
reset()
click to toggle source
# File lib/schaltroom.rb, line 48 def self.reset @config = Config.new @repository = Repository.new @calls = [] end
with_config_and_repository(config, repository) { || ... }
click to toggle source
# File lib/schaltroom.rb, line 117 def self.with_config_and_repository(config, repository) return unless block_given? current_config = @config current_repository = @repository @config = config @repository = @repository.merge(repository) yield @config = current_config @repository = current_repository end