Class: CassandraModel::GlobalCallbacks

Inherits:
Object
  • Object
show all
Defined in:
lib/cassandra_model/global_callbacks.rb

Class Method Summary collapse

Class Method Details

.add_listener(listener) ⇒ Object



5
6
7
# File 'lib/cassandra_model/global_callbacks.rb', line 5

def add_listener(listener)
  listeners << listener
end

.call(callback, *params) ⇒ Object



9
10
11
12
13
14
# File 'lib/cassandra_model/global_callbacks.rb', line 9

def call(callback, *params)
  listeners.each do |listener|
    callback_name = callback_name(callback)
    listener.public_send(callback_name, *params) if listener.respond_to?(callback_name)
  end
end

.method_missing(method, *args, &block) ⇒ Object



16
17
18
19
20
21
22
23
24
25
# File 'lib/cassandra_model/global_callbacks.rb', line 16

def method_missing(method, *args, &block)
  if method =~ /^on_/
    listener = Object.new.tap do |callback|
      callback.define_singleton_method(method) { |*callback_args| block.call(*callback_args) }
    end
    add_listener listener
  else
    super(method, *args, &block)
  end
end