Sha256: 4b2c5197d761e9fa82b9e3f62231acfb5924756f80c1e8de11e178e5b0781780
Contents?: true
Size: 1.53 KB
Versions: 3
Compression:
Stored size: 1.53 KB
Contents
require 'active_support/per_thread_registry' require 'influxer/metrics/scoping/default' require 'influxer/metrics/scoping/named' module Influxer # Clone of ActiveRecord::Relation scoping module Scoping # :nodoc: extend ActiveSupport::Concern class Error < StandardError; end included do include Default include Named end module ClassMethods # :nodoc: def current_scope ScopeRegistry.value_for(:current_scope, name) end def current_scope=(scope) ScopeRegistry.set_value_for(:current_scope, name, scope) end end class ScopeRegistry # :nodoc: extend ActiveSupport::PerThreadRegistry VALID_SCOPE_TYPES = [:current_scope] def initialize @registry = Hash.new { |hash, key| hash[key] = {} } end # Obtains the value for a given +scope_name+ and +variable_name+. def value_for(scope_type, variable_name) raise_invalid_scope_type!(scope_type) @registry[scope_type][variable_name] end # Sets the +value+ for a given +scope_type+ and +variable_name+. def set_value_for(scope_type, variable_name, value) raise_invalid_scope_type!(scope_type) @registry[scope_type][variable_name] = value end private def raise_invalid_scope_type!(scope_type) return if VALID_SCOPE_TYPES.include?(scope_type) fail ArgumentError, "Invalid scope type '#{scope_type}' sent to the registry. \ Scope types must be included in VALID_SCOPE_TYPES" end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
influxer-0.5.0 | lib/influxer/metrics/scoping.rb |
influxer-0.4.0 | lib/influxer/metrics/scoping.rb |
influxer-0.3.1 | lib/influxer/metrics/scoping.rb |