Module: Isolate::Events

Included in:
Entry, Sandbox
Defined in:
lib/isolate/events.rb

Overview

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.

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.fire(klass, name, *args) ⇒ Object

:nodoc:



23
24
25
26
27
# File 'lib/isolate/events.rb', line 23

def self.fire klass, name, *args #:nodoc:
  watchers[[klass, name]].each do |block|
    block[*args]
  end
end

.watch(klass, name, &block) ⇒ Object

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.



19
20
21
# File 'lib/isolate/events.rb', line 19

def self.watch klass, name, &block
  watchers[[klass, name]] << block
end

.watchersObject

:nodoc:



29
30
31
# File 'lib/isolate/events.rb', line 29

def self.watchers #:nodoc:
  @watchers ||= Hash.new { |h, k| h[k] = [] }
end

Instance Method Details

#fire(name, after = nil, *args, &block) ⇒ Object

:nodoc:



33
34
35
36
37
38
39
40
# File 'lib/isolate/events.rb', line 33

def fire name, after = nil, *args, &block #:nodoc:
  Isolate::Events.fire self.class, name, self, *args

  if after && block_given?
    yield self
    Isolate::Events.fire self.class, after, *args
  end
end