class Rack::WebProfiler::Collectors
Container of Collector objects.
Public Class Methods
new()
click to toggle source
Initialize.
# File lib/rack/web_profiler/collectors.rb, line 13 def initialize reset! end
Public Instance Methods
add_collector(collector_class)
click to toggle source
Add a collector.
@param collector_class [Array, Class]
@raise [ArgumentError] if `collector_class' is not a Class or is not an instance of Rack::WebProfiler::Collector::DSL
or a collector with this identifier is already registrered.
# File lib/rack/web_profiler/collectors.rb, line 40 def add_collector(collector_class) return collector_class.each { |c| add_collector(c) } if collector_class.is_a? Array raise ArgumentError, "`collector_class' must be a class" unless collector_class.is_a? Class unless collector_class.included_modules.include?(Rack::WebProfiler::Collector::DSL) raise ArgumentError, "#{collector_class.class.name} must be an instance of \"Rack::WebProfiler::Collector::DSL\"" end definition = collector_class.definition if definition_by_identifier(definition.identifier) raise ArgumentError, "A collector with identifier \“#{definition.identifier}\" already exists" end return false unless definition.is_enabled? @collectors[collector_class] = definition sort_collectors! end
all()
click to toggle source
Returns all collectors definition.
@return [Hash<Symbol, Rack::WebProfiler::Collector::DSL::Definition>]
# File lib/rack/web_profiler/collectors.rb, line 30 def all @sorted_collectors end
definition_by_identifier(identifier)
click to toggle source
Get a collector definition by his identifier.
@param identifier [String]
@return [Rack::WebProfiler::Collector::DSL::Definition, nil]
# File lib/rack/web_profiler/collectors.rb, line 22 def definition_by_identifier(identifier) identifier = identifier.to_sym @sorted_collectors[identifier] unless @sorted_collectors[identifier].nil? end
remove_collector(collector_class)
click to toggle source
Remove a collector.
@param collector_class [Array, Class]
@raise [ArgumentError] if `collector_class' is not a Class or if this collector is not registered.
# File lib/rack/web_profiler/collectors.rb, line 68 def remove_collector(collector_class) return collector_class.each { |c| remove_collector(c) } if collector_class.is_a? Array raise ArgumentError, "`collector_class' must be a class" unless collector_class.is_a? Class raise ArgumentError, "No collector found with class \“#{collector_class}\"" unless @collectors[collector_class] @collectors.delete(collector_class) sort_collectors! end
reset!()
click to toggle source
Reset collecotrs.
# File lib/rack/web_profiler/collectors.rb, line 80 def reset! @collectors = {} @sorted_collectors = {} end
Private Instance Methods
sort_collectors!()
click to toggle source
Sort collectors by definition identifier.
# File lib/rack/web_profiler/collectors.rb, line 88 def sort_collectors! @sorted_collectors = {} tmp = @collectors.sort_by { |_klass, definition| definition.position } tmp.each { |_k, v| @sorted_collectors[v.identifier.to_sym] = v } end