Sha256: 553a3d4c2c25061796623ed5b46c8dc4ec7c7ec87fec747b1d4d6638445f929f

Contents?: true

Size: 683 Bytes

Versions: 1

Compression:

Stored size: 683 Bytes

Contents

# frozen_string_literal: true

class Beholder

  def self.inherited(subclass)
    super
    subclass.disabled = subclass.superclass.disabled?
  end

  def self.disable!
    @disabled = true
  end

  def self.enable!
    @disabled = false
  end

  def self.disabled?
    @disabled
  end

  def self.disabled=(value)
    @disabled = value
  end

  def self.self_and_descendants
    [self] + descendants
  end

  def self.enable_all!
    self_and_descendants.each(&:enable!)
  end

  def self.disable_all!
    self_and_descendants.each(&:disable!)
  end

  def self.trigger(action, model)
    return if disabled?
    new.public_send(action, model) if method_defined? action
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
beholders-1.0.0 lib/beholders/beholder.rb