class Sqreen::Rules::BindingAccessorMetrics
Publish metrics about data taken from the binding accessor
Constants
- FAILING_CB
- POST_CB
- PRE_CB
Public Class Methods
new(klass, method, rule_hash)
click to toggle source
Calls superclass method
# File lib/sqreen/rules/binding_accessor_metrics.rb, line 21 def initialize(klass, method, rule_hash) super(klass, method, rule_hash) @expr = {} build_expressions(rule_hash[Attrs::CALLBACKS]) end
Public Instance Methods
failing(exception, inst, args, _budget = nil, &_block)
click to toggle source
# File lib/sqreen/rules/binding_accessor_metrics.rb, line 55 def failing(exception, inst, args, _budget = nil, &_block) return unless failing? add_metrics(FAILING_CB, inst, args, exception) end
failing?()
click to toggle source
# File lib/sqreen/rules/binding_accessor_metrics.rb, line 39 def failing? @expr[FAILING_CB] end
post(rv, inst, args, _budget = nil, &_block)
click to toggle source
# File lib/sqreen/rules/binding_accessor_metrics.rb, line 49 def post(rv, inst, args, _budget = nil, &_block) return unless post? add_metrics(POST_CB, inst, args, rv) end
post?()
click to toggle source
# File lib/sqreen/rules/binding_accessor_metrics.rb, line 35 def post? @expr[POST_CB] end
pre(inst, args, _budget = nil, &_block)
click to toggle source
# File lib/sqreen/rules/binding_accessor_metrics.rb, line 43 def pre(inst, args, _budget = nil, &_block) return unless pre? add_metrics(PRE_CB, inst, args) end
pre?()
click to toggle source
# File lib/sqreen/rules/binding_accessor_metrics.rb, line 31 def pre? @expr[PRE_CB] end
Protected Instance Methods
add_metrics(name, inst, args, rv = nil)
click to toggle source
# File lib/sqreen/rules/binding_accessor_metrics.rb, line 63 def add_metrics(name, inst, args, rv = nil) category, key, value, = @expr[name].map do |accessor| accessor.resolve(binding, framework, inst, args, @data, rv) end record_observation(category, key, value) advise_action(nil) end
build_expressions(callbacks)
click to toggle source
# File lib/sqreen/rules/binding_accessor_metrics.rb, line 71 def build_expressions(callbacks) raise NoExpressions, callbacks if callbacks.nil? || callbacks.empty? [PRE_CB, POST_CB, FAILING_CB].each do |c| next if callbacks[c].nil? || callbacks[c].size < 3 @expr[c] = callbacks[c].map { |req| BindingAccessor.new(req, true) } end raise NoExpressions, callbacks if @expr.empty? end