class Columbo::Resource::Publisher
Public Class Methods
new(object)
click to toggle source
# File lib/columbo_rails_client/publisher.rb, line 5 def initialize(object) @object = object end
Public Instance Methods
publish(event_type, options = {}, &block)
click to toggle source
# File lib/columbo_rails_client/publisher.rb, line 9 def publish(event_type, options = {}, &block) begin publish_event(event_type, options, &block) rescue Exception => e Columbo.logger.warn(e.message) false end end
publish!(event_type, options = {}, &block)
click to toggle source
# File lib/columbo_rails_client/publisher.rb, line 18 def publish!(event_type, options = {}, &block) publish_event(event_type, options, &block) end
Private Instance Methods
actor()
click to toggle source
# File lib/columbo_rails_client/publisher.rb, line 58 def actor @payload.actor || @object.columbo_actor end
build_event(event_type)
click to toggle source
# File lib/columbo_rails_client/publisher.rb, line 73 def build_event(event_type) { system: system, actor: actor, resource: resource, related_resources: related_resources, timestamp: @payload.timestamp || DateTime.now.utc.to_formatted_s(:iso8601), action: @payload.action || "#{@object.class.name.underscore}.#{event_type}" } end
default_resource_label()
click to toggle source
# File lib/columbo_rails_client/publisher.rb, line 69 def default_resource_label "#{@object.class.name.underscore}##{@object.id}" end
publish_event(event_type, options, &block)
click to toggle source
# File lib/columbo_rails_client/publisher.rb, line 24 def publish_event(event_type, options, &block) @payload = OpenStruct.new(resource: {}) block.call(@payload) if block_given? if Columbo.client.is_a? Columbo::Client::AMQP options = { routing_key: "#{@object.class.name.underscore}.#{event_type}" }.merge(options) end Columbo.client.publish(build_event(event_type), options) end
resource()
click to toggle source
# File lib/columbo_rails_client/publisher.rb, line 35 def resource resource_label = @payload.resource[:label] if resource_label.nil? resource_label = @object.respond_to?(:columbo_resource_label) ? @object.columbo_resource_label : default_resource_label end resource_attributes = @payload.resource[:attributes] if resource_attributes.nil? resource_attributes = @object.respond_to?(:columbo_payload) ? @object.columbo_payload : @object.as_json end { uid: @payload.resource[:uid] || @object.id, type: @payload.resource[:type] || @object.class.name.underscore, label: resource_label, attributes: resource_attributes } end
system()
click to toggle source
# File lib/columbo_rails_client/publisher.rb, line 54 def system @payload.system || Columbo.configuration.system.to_h end