houdini/app/models/concerns/object_event/model_extensions.rb

29 lines
1.1 KiB
Ruby
Raw Normal View History

2021-01-14 18:36:40 +00:00
# frozen_string_literal: true
# License: AGPL-3.0-or-later WITH WTO-AP-3.0-or-later
# Full license explanation at https://github.com/houdiniproject/houdini/blob/master/LICENSE
module ObjectEvent::ModelExtensions
extend ActiveSupport::Concern
class_methods do
# Adds the to_event method to a model. Requires `to_builder` method for creating
# the Jbuilder object
def object_eventable
class_eval <<-RUBY, __FILE__, __LINE__ + 1
def to_event(event_type, *expand)
Jbuilder.new do |event|
event.id SecureRandom.uuid
event.object 'object_event'
event.type event_type
event.data do
event.object to_builder(*expand)
end
end
end
def to_builder(*expand)
raise NotImplementedError.new("to_builder must be implemented in your model")
end
RUBY
end
end
end