class Maitredee::Publisher

Inherit from this class to easily publish messages:

class RecipePublisher < Maitredee::Publisher
  publish_defaults(
    topic_name: :default_topic,
    event_name: :optional_default_event_name,
    schema_name: :default_schema
  )

  attr_reader :recipe

  def initialize(recipe)
    @recipe = recipe
  end

  def process
    publish(
      topic_name: :my_topic_override,
      event_name: :event_name_is_optional,
      schema_name: :schema_name,
      primary_key: "optionalKey",
      body: {
        id: recipe.id,
        name: recipe.name
      }
    )
  end
end

Then in your Rails app, you can do this:

RecipePublisher.call(1, 2, 3)

Public Class Methods

call(*args) click to toggle source

call process and return publishes messages @param args [] arguments passed to initialize

# File lib/maitredee/publisher.rb, line 39
def call(*args)
  publisher = new(*args)
  publisher.process
  publisher.published_messages
end
get_publish_defaults() click to toggle source
# File lib/maitredee/publisher.rb, line 57
def get_publish_defaults
  @publish_defaults
end
publish_defaults(topic_name: nil, event_name: nil, schema_name: nil) click to toggle source

set publish defaults @param topic_name [#to_s, nil] @param event_name [#to_s, nil] @param schema_name [#to_s, nil]

# File lib/maitredee/publisher.rb, line 49
def publish_defaults(topic_name: nil, event_name: nil, schema_name: nil)
  @publish_defaults = {
    topic_name: topic_name,
    event_name: event_name,
    schema_name: schema_name
  }
end

Public Instance Methods

publish(topic_name: nil, event_name: nil, schema_name: nil, primary_key: nil, body:) click to toggle source

publish a message with defaults @param topic_name [#to_s, nil] @param event_name [#to_s, nil] @param schema_name [#to_s, nil] @param primary_key [#to_s, nil] @param body [#to_json]

# File lib/maitredee/publisher.rb, line 74
def publish(topic_name: nil, event_name: nil, schema_name: nil, primary_key: nil, body:)
  defaults = self.class.get_publish_defaults
  published_messages << Maitredee.publish(
    topic_name: topic_name || defaults[:topic_name],
    event_name: event_name || defaults[:event_name],
    schema_name: schema_name || defaults[:schema_name],
    primary_key: primary_key,
    body: body
  )
end
published_messages() click to toggle source

array of messages published in this instance @return [Array<PublisherMessage>]

# File lib/maitredee/publisher.rb, line 64
def published_messages
  @published_messages ||= []
end