module Stance::Eventable
Public Instance Methods
ensure_event!(name)
click to toggle source
Raise EventNotFound
if the class event has not been defined.
# File lib/stance/eventable.rb, line 27 def ensure_event!(name) return if events_class.events.one? { |event, options| name == event && options[:class] } raise Stance::EventNotFound, "Class event `#{name}` not found" end
event_class(name)
click to toggle source
# File lib/stance/eventable.rb, line 41 def event_class(name) name.constantize rescue NameError Stance::Event end
events_class()
click to toggle source
# File lib/stance/eventable.rb, line 33 def events_class @events_class ||= events_class_name.constantize end
events_class_name()
click to toggle source
# File lib/stance/eventable.rb, line 37 def events_class_name @events_class_name ||= "#{model_name.name}Events" end
publish_event(name, metadata = {})
click to toggle source
# File lib/stance/eventable.rb, line 12 def publish_event(name, metadata = {}) name = name.to_s ensure_event! name # Find the Event class - if any - and call it. Falls back to Stance::Event. ev = event_class(name).new(name, model_name.name, metadata, events_class.events[name]) return ev if Stance.disabled_events.include?(ev.full_name) events_class.new(ev).run_callbacks(:create) { ev.create } end