Sha256: 29e87249e94958e07d802b87c463e2e9e3c1b41297f122e326ff832108c0d1fc
Contents?: true
Size: 914 Bytes
Versions: 2
Compression:
Stored size: 914 Bytes
Contents
require 'speed_gun' class SpeedGun::Hook def self.hooks @hooks ||= [] end def self.install! hooks.each do |hook| hook.available? && hook.install! end end attr_reader :name def initialize(name, &block) @name = name @installed = false @available_checker = -> { true } @execute = -> { true } self.class.hooks.push(self) instance_eval(&block) end def depends(&block) @available_checker = block end def execute(&block) @execute = block end def available? @available_checker.is_a?(Proc) && @available_checker.call end def install! return if @installed @execute.is_a?(Proc) && @execute.call @installed = true end end module SpeedGun def self.hook(name, &block) SpeedGun::Hook.new(name, &block) end end Dir[File.expand_path('../hook/**/*.rb', __FILE__)].each do |hook| require hook if File.file?(hook) end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
speed_gun-2.0.1 | lib/speed_gun/hook.rb |
speed_gun-2.0.0 | lib/speed_gun/hook.rb |