Module: FakeSQS

Defined in:
lib/fake_sqs.rb,
lib/fake_sqs/api.rb,
lib/fake_sqs/queue.rb,
lib/fake_sqs/queues.rb,
lib/fake_sqs/server.rb,
lib/fake_sqs/message.rb,
lib/fake_sqs/version.rb,
lib/fake_sqs/daemonize.rb,
lib/fake_sqs/responder.rb,
lib/fake_sqs/show_output.rb,
lib/fake_sqs/catch_errors.rb,
lib/fake_sqs/file_database.rb,
lib/fake_sqs/queue_factory.rb,
lib/fake_sqs/web_interface.rb,
lib/fake_sqs/error_response.rb,
lib/fake_sqs/collection_view.rb,
lib/fake_sqs/memory_database.rb,
lib/fake_sqs/test_integration.rb,
lib/fake_sqs/actions/list_queues.rb,
lib/fake_sqs/actions/create_queue.rb,
lib/fake_sqs/actions/delete_queue.rb,
lib/fake_sqs/actions/send_message.rb,
lib/fake_sqs/actions/get_queue_url.rb,
lib/fake_sqs/actions/delete_message.rb,
lib/fake_sqs/actions/receive_message.rb,
lib/fake_sqs/actions/send_message_batch.rb,
lib/fake_sqs/actions/delete_message_batch.rb,
lib/fake_sqs/actions/get_queue_attributes.rb,
lib/fake_sqs/actions/set_queue_attributes.rb,
lib/fake_sqs/actions/change_message_visibility.rb

Defined Under Namespace

Modules: Actions Classes: API, CatchErrors, CollectionView, Daemonize, ErrorResponse, FileDatabase, MemoryDatabase, Message, Queue, QueueFactory, Queues, Responder, Server, ShowOutput, TestIntegration, WebInterface

Constant Summary collapse

InvalidAction =
Class.new(ArgumentError)
MessageNotInflight =
Class.new(RuntimeError)
ReadCountOutOfRange =
Class.new(RuntimeError)
ReceiptHandleIsInvalid =
Class.new(RuntimeError)
QueueNameExists =
Class.new(RuntimeError)
NonExistentQueue =
Class.new(RuntimeError)
VERSION =
"0.1.0"

Class Method Summary collapse

Class Method Details

.api(options = {}) ⇒ Object



51
52
53
54
55
56
57
58
# File 'lib/fake_sqs.rb', line 51

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

.database_for(name) ⇒ Object



80
81
82
83
84
85
86
# File 'lib/fake_sqs.rb', line 80

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

.message_factoryObject



72
73
74
# File 'lib/fake_sqs.rb', line 72

def self.message_factory
  Message
end

.queueObject



76
77
78
# File 'lib/fake_sqs.rb', line 76

def self.queue
  Queue
end

.queue_factoryObject



68
69
70
# File 'lib/fake_sqs.rb', line 68

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

.queues(database) ⇒ Object



60
61
62
# File 'lib/fake_sqs.rb', line 60

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

.responderObject



64
65
66
# File 'lib/fake_sqs.rb', line 64

def self.responder
  Responder.new
end

.server(options = {}) ⇒ Object



47
48
49
# File 'lib/fake_sqs.rb', line 47

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

.to_rack(options) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/fake_sqs.rb', line 17

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