class Metybur::Collection
Public Class Methods
new(collection_name, websocket)
click to toggle source
# File lib/metybur/collection.rb, line 2 def initialize(collection_name, websocket) @collection_name = collection_name @callbacks = {} self.websocket = websocket end
Public Instance Methods
on(event, &block)
click to toggle source
# File lib/metybur/collection.rb, line 18 def on(event, &block) callbacks_for(event) << block self end
websocket=(websocket)
click to toggle source
# File lib/metybur/collection.rb, line 8 def websocket=(websocket) return if websocket == @websocket @websocket = websocket websocket.on(:message) do |event| attributes = JSON.parse(event.data, symbolize_names: true) handle_message(attributes) if attributes[:collection] == @collection_name end end
Private Instance Methods
callbacks_for(event)
click to toggle source
# File lib/metybur/collection.rb, line 31 def callbacks_for(event) @callbacks[event] ||= [] end
handle_message(attributes)
click to toggle source
# File lib/metybur/collection.rb, line 25 def handle_message(attributes) event = attributes[:msg].to_sym arguments = attributes.slice(:id, :fields, :cleared).values callbacks_for(event).each { |callback| callback.call(*arguments) } end