Module: Space::Events

Included in:
Models::Project, Models::Project::Bundler, Models::Repo, Models::Repo::Bundle, Models::Repo::Git, Models::Repos
Defined in:
lib/space/events.rb,
lib/space/events/event.rb,
lib/space/events/buffer.rb

Defined Under Namespace

Classes: Buffer, Event

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#bufferObject (readonly)

Returns the value of attribute buffer.



6
7
8
# File 'lib/space/events.rb', line 6

def buffer
  @buffer
end

Instance Method Details

#bufferingObject



8
9
10
11
12
13
14
# File 'lib/space/events.rb', line 8

def buffering
  @buffer = Buffer.new
  yield.tap do
    buffer, @buffer = @buffer, nil
    buffer.flush
  end
end

#buffering?Boolean

Returns:

  • (Boolean)


16
17
18
# File 'lib/space/events.rb', line 16

def buffering?
  !!@buffer
end

#notify(*args) ⇒ Object



28
29
30
31
32
# File 'lib/space/events.rb', line 28

def notify(*args)
  event = args.first.is_a?(Event) ? args.first : Event.new(self, *args)
  App.logger.debug "Event on #{self.class.name.split('::').last}: #{event.source.class.name.split('::').last} #{event.event.inspect}"
  buffering? ? buffer.push(event) : observers.each { |observer| observer.notify(event) }
end

#observersObject



20
21
22
# File 'lib/space/events.rb', line 20

def observers
  @observers ||= []
end

#subscribe(observer) ⇒ Object



24
25
26
# File 'lib/space/events.rb', line 24

def subscribe(observer)
  observers << observer
end