Method: Gracefully::CircuitBreaker#execute

Defined in:
lib/gracefully/circuit_breaker.rb

#execute(&block) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/gracefully/circuit_breaker.rb', line 16

def execute(&block)
  if open? && (@try_close_after.nil? || try_close_period_passed?.!)
    raise CurrentlyOpenError, "Opened at #{opened_date}"
  end

  clear_opened_date!

  begin
    v = block.call
    mark_success
    v
  rescue => e
    mark_failure
    raise e
  end
end