Sha256: 635b3e9dd2b48cb1e2539777a9852f2e44afc6943cbe2ab7ce79e6eb42f4b627

Contents?: true

Size: 1.86 KB

Versions: 2

Compression:

Stored size: 1.86 KB

Contents

require 'fake_sqs/api'
require 'fake_sqs/catch_errors'
require 'fake_sqs/error_response'
require 'fake_sqs/message'
require 'fake_sqs/queue'
require 'fake_sqs/queue_factory'
require 'fake_sqs/queues'
require 'fake_sqs/responder'
require 'fake_sqs/server'
require 'fake_sqs/version'
require 'fake_sqs/memory_database'
require 'fake_sqs/file_database'

module FakeSQS

  def self.to_rack(options)

    require 'fake_sqs/web_interface'
    app = FakeSQS::WebInterface

    if (log = options[:log])
      $stdout.reopen(log, "w:utf-8")
      $stderr.reopen(log, "w:utf-8")
      app.enable :logging
    end

    if options[:verbose]
      require 'fake_sqs/show_output'
      app.use FakeSQS::ShowOutput
      app.enable :logging
    end

    if options[:daemonize]
      require 'fake_sqs/daemonize'
      Daemonize.new(options).call
    end

    app.set :port, options[:port] if options[:port]
    app.set :bind, options[:host] if options[:host]
    app.set :server, options[:server] if options[:server]
    server = FakeSQS.server(port: options[:port], host: options[:host])
    app.set :api, FakeSQS.api(server: server, database: options[:database])
    app
  end

  def self.server(options = {})
    Server.new(options)
  end

  def self.api(options = {})
    db = database_for(options.fetch(:database) { ":memory:" })
    API.new(
      server: options.fetch(:server),
      queues: queues(db),
      responder: responder
    )
  end

  def self.queues(database)
    Queues.new(queue_factory: queue_factory, database: database)
  end

  def self.responder
    Responder.new
  end

  def self.queue_factory
    QueueFactory.new(message_factory: message_factory, queue: queue)
  end

  def self.message_factory
    Message
  end

  def self.queue
    Queue
  end

  def self.database_for(name)
    if name == ":memory:"
      MemoryDatabase.new
    else
      FileDatabase.new(name)
    end
  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
fake_sqs-0.0.11 lib/fake_sqs.rb
fake_sqs-0.0.10 lib/fake_sqs.rb