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
Instance Attribute Summary collapse
-
#buffer ⇒ Object
readonly
Returns the value of attribute buffer.
Instance Method Summary collapse
- #buffering ⇒ Object
- #buffering? ⇒ Boolean
- #notify(*args) ⇒ Object
- #observers ⇒ Object
- #subscribe(observer) ⇒ Object
Instance Attribute Details
#buffer ⇒ Object (readonly)
Returns the value of attribute buffer.
6 7 8 |
# File 'lib/space/events.rb', line 6 def buffer @buffer end |
Instance Method Details
#buffering ⇒ Object
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
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 |
#observers ⇒ Object
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 |