lib/redstream/model.rb in redstream-0.0.1 vs lib/redstream/model.rb in redstream-0.1.0
- old
+ new
@@ -1,6 +1,5 @@
-
module Redstream
# Include Redstream::Model in your model to stream the model's updates via
# redis streams.
#
# @example
@@ -13,11 +12,11 @@
# end
module Model
def self.included(base)
base.extend(ClassMethods)
- end
+ end
module ClassMethods
# Adds after_save, after_touch, after_destroy and, most importantly,
# after_commit callbacks. after_save, after_touch and after_destroy write
# a delay message to a delay stream. The delay messages are exactly like
@@ -28,15 +27,15 @@
#
# @param producer [Redstream::Producer] A Redstream::Producer that is
# responsible for writing to a redis stream
def redstream_callbacks(producer: Producer.new)
- after_save { |object| producer.delay object }
- after_touch { |object| producer.delay object }
- after_destroy { |object| producer.delay object }
- after_commit { |object| producer.queue object }
- end
+ after_save { |object| producer.delay(object) if object.saved_changes.present? }
+ after_touch { |object| producer.delay(object) }
+ after_destroy { |object| producer.delay(object) }
+ after_commit { |object| producer.queue(object) if object.saved_changes.present? }
+ end
def redstream_name
name.pluralize.underscore
end
end
@@ -50,8 +49,7 @@
# end
def redstream_payload
{ id: id }
end
- end
+ end
end
-