Class: ActiveModelListener

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

Class Method Summary collapse

Class Method Details

.dispatch(object, action) ⇒ Object



12
13
14
15
16
17
18
19
20
# File 'lib/active_model_listener/active_model_listener.rb', line 12

def dispatch(object, action)
  method_name = "after_#{action}"
  self.listeners.each do |listener|
    without_listeners do
      listener_object = listener.to_s.classify.constantize
      listener_object.send method_name, object if listener_object.respond_to?(method_name)
    end
  end
end

.listenersObject



4
5
6
# File 'lib/active_model_listener/active_model_listener.rb', line 4

def listeners
  @listeners ||= []
end

.listeners=(listeners) ⇒ Object



8
9
10
# File 'lib/active_model_listener/active_model_listener.rb', line 8

def listeners=(listeners)
  @listeners = listeners
end

.with_listeners(*listeners) ⇒ Object



28
29
30
31
32
33
34
# File 'lib/active_model_listener/active_model_listener.rb', line 28

def with_listeners(*listeners)
  original_listeners = self.listeners
  self.listeners = listeners.flatten
  yield
ensure
  self.listeners = original_listeners
end

.without_listenersObject



22
23
24
25
26
# File 'lib/active_model_listener/active_model_listener.rb', line 22

def without_listeners
  with_listeners([]) do
    yield
  end
end