class SpeedGun::Hook

Attributes

name[R]

Public Class Methods

hooks() click to toggle source
# File lib/speed_gun/hook.rb, line 4
def self.hooks
  @hooks ||= []
end
install!() click to toggle source
# File lib/speed_gun/hook.rb, line 8
def self.install!
  hooks.each do |hook|
    hook.available? && hook.install!
  end
end
new(name, &block) click to toggle source
# File lib/speed_gun/hook.rb, line 16
def initialize(name, &block)
  @name = name
  @installed = false
  @available_checker = -> { true }
  @execute = -> { true }
  self.class.hooks.push(self)
  instance_eval(&block)
end

Public Instance Methods

available?() click to toggle source
# File lib/speed_gun/hook.rb, line 33
def available?
  @available_checker.is_a?(Proc) && @available_checker.call
end
depends(&block) click to toggle source
# File lib/speed_gun/hook.rb, line 25
def depends(&block)
  @available_checker = block
end
execute(&block) click to toggle source
# File lib/speed_gun/hook.rb, line 29
def execute(&block)
  @execute = block
end
install!() click to toggle source
# File lib/speed_gun/hook.rb, line 37
def install!
  return if @installed
  @execute.is_a?(Proc) && @execute.call
  @installed = true
end