class Doofenshmirtz::SelfDestruct

Constants

Mechanism

Public Class Methods

on(time, reason = nil) click to toggle source
# File lib/doofenshmirtz/self_destruct.rb, line 8
def self.on(time, reason = nil)
  add(time.to_time, caller_locations.first, reason)

  mechanisms.each { |m| destruct(m) if Time.now > m.time }
end
report(reporter = DefaultReporter) click to toggle source
# File lib/doofenshmirtz/self_destruct.rb, line 30
def self.report(reporter = DefaultReporter)
  reporter.new(mechanisms).report
end

Private Class Methods

add(time, location, reason) click to toggle source
# File lib/doofenshmirtz/self_destruct.rb, line 14
def self.add(time, location, reason)
  @mechanisms.add(Mechanism.new(time, location.to_s, reason))
end
destruct(mechanism) click to toggle source
# File lib/doofenshmirtz/self_destruct.rb, line 22
def self.destruct(mechanism)
  return unless enforce?

  message = "Self destructed on #{mechanism.time}"
  message += " because: #{mechanism.reason}" unless mechanism.reason.blank?
  fail(SelfDestructError, message)
end
enforce?() click to toggle source
# File lib/doofenshmirtz/self_destruct.rb, line 34
def self.enforce?
  Rails.env.test? && ENV["DISABLE_DOOFENSHMIRTZ"] != "true"
end
mechanisms() click to toggle source
# File lib/doofenshmirtz/self_destruct.rb, line 18
def self.mechanisms
  @mechanisms
end