class SXS::Publisher

Public Class Methods

new(queue_url, provider:) click to toggle source
# File lib/sxs/publisher.rb, line 5
def initialize(queue_url, provider:)
  @provider  = provider
  @queue_url = queue_url
end

Public Instance Methods

publish(body) click to toggle source
# File lib/sxs/publisher.rb, line 10
def publish(body)
  publisher.publish(body)
end

Private Instance Methods

environment() click to toggle source
# File lib/sxs/publisher.rb, line 16
def environment
  ENV['RAILS_ENV']
end
memory() click to toggle source
# File lib/sxs/publisher.rb, line 20
def memory
  SXS::Publishers::Memory
end
provider() click to toggle source
# File lib/sxs/publisher.rb, line 24
def provider
  return provider_select(ENV['SXS_PROVIDER']) unless ENV['SXS_PROVIDER'].nil?

  return provider_select(@provider) if environment == 'production'

  { 'development' => redis, 'test' => memory }[environment]
end
provider_select(name) click to toggle source
# File lib/sxs/publisher.rb, line 32
def provider_select(name)
  value = { memory: memory, redis: redis, sqs: sqs }[name&.to_sym]

  if value.nil?
    raise ArgumentError, 'Missing provider! Availables: :memory, :redis, :sns or :sqs'
  end

  value
end
publisher() click to toggle source
# File lib/sxs/publisher.rb, line 42
def publisher
  @publisher ||= provider.new(@queue_url)
end
redis() click to toggle source
# File lib/sxs/publisher.rb, line 46
def redis
  SXS::Publishers::Redis
end
sqs() click to toggle source
# File lib/sxs/publisher.rb, line 50
def sqs
  SXS::Publishers::SQS
end