module Sinatra::API::Callbacks
An event pub/sub interface.
Attributes
callbacks[RW]
Public Class Methods
extended(base)
click to toggle source
# File lib/sinatra/api/callbacks.rb, line 28 def self.extended(base) base.callbacks = {} end
Public Instance Methods
on(event, &callback)
click to toggle source
Add a callback to a given event.
@example Listening to :resource_located events
Sinatra::API.on :resource_located do |resource, name| if resource.is_a?(Monkey) resource.eat_banana end end
@example A callback with an instance method
class Monkey def initialize # This means that the monkey will eat a banana everytime a resource # is located. Sinatra::API.on :resource_located, &method(:eat_banana) end def eat_banana(*args) end end
# File lib/sinatra/api/callbacks.rb, line 54 def on(event, &callback) (self.callbacks[event.to_sym] ||= []) << callback end
trigger(event, *args)
click to toggle source
Broadcast an event to subscribed callbacks.
@example Triggering an event with an argument
Sinatra::API.trigger :special_event, 'Special Argument'
# File lib/sinatra/api/callbacks.rb, line 64 def trigger(event, *args) callbacks = self.callbacks[event.to_sym] || [] callbacks.each do |callback| callback.call(*args) end end