Sha256: e1b13d8a37723480fec64339df83ac5a87be44136374ce8dd0ab529d5516830e
Contents?: true
Size: 1.08 KB
Versions: 4
Compression:
Stored size: 1.08 KB
Contents
module Isolate # A simple way to watch and extend the Isolate lifecycle. # # Isolate::Events.watch Isolate::Sandbox, :initialized do |sandbox| # puts "A sandbox just got initialized: #{sandbox}" # end # # Read the source for Isolate::Sandbox and Isolate::Entry to see # what sort of events are fired. module Events # Watch for an event called +name+ from an instance of # +klass+. +block+ will be called when the event occurs. Block # args vary by event, but usually an instance of the relevant # class is passed. def self.watch klass, name, &block watchers[[klass, name]] << block end def self.fire klass, name, *args #:nodoc: watchers[[klass, name]].each do |block| block[*args] end end def self.watchers #:nodoc: @watchers ||= Hash.new { |h, k| h[k] = [] } end def fire name, after = nil, *args, &block #:nodoc: Isolate::Events.fire self.class, name, *args if after && block_given? yield self Isolate::Events.fire self.class, after, *args end end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
isolate-2.0.2 | lib/isolate/events.rb |
isolate-2.0.1 | lib/isolate/events.rb |
isolate-2.0.0 | lib/isolate/events.rb |
isolate-2.0.0.pre.3 | lib/isolate/events.rb |