Class: Chronos::Application::IgnorePolicy
- Inherits:
-
Object
- Object
- Chronos::Application::IgnorePolicy
- Defined in:
- lib/chronos/application/ignore_policy.rb
Overview
Stores and evaluates bounded application-owned exception ignore rules.
Instance Method Summary collapse
- #add(rule = nil, &block) ⇒ Object
- #ignored?(notice) ⇒ Boolean
-
#initialize(rules, limit, logger) ⇒ IgnorePolicy
constructor
A new instance of IgnorePolicy.
Constructor Details
#initialize(rules, limit, logger) ⇒ IgnorePolicy
Returns a new instance of IgnorePolicy.
16 17 18 19 20 21 |
# File 'lib/chronos/application/ignore_policy.rb', line 16 def initialize(rules, limit, logger) @rules = Array(rules).dup @limit = limit @logger = logger @mutex = Mutex.new end |
Instance Method Details
#add(rule = nil, &block) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/chronos/application/ignore_policy.rb', line 23 def add(rule = nil, &block) candidate = rule || block return false unless candidate.respond_to?(:call) @mutex.synchronize do return false if @rules.length >= @limit @rules << candidate end true rescue StandardError false end |
#ignored?(notice) ⇒ Boolean
37 38 39 40 41 42 |
# File 'lib/chronos/application/ignore_policy.rb', line 37 def ignored?(notice) rules = @mutex.synchronize { @rules.dup } rules.any? { |rule| safely_matches?(rule, notice) } rescue StandardError false end |