class CottonTail::App
App
is the main class for a CottonTail
server
Attributes
env[R]
Public Class Methods
new(queue_strategy: Queue::Bunny, env: {}, connection: Bunny.new)
click to toggle source
# File lib/cotton_tail/app.rb, line 8 def initialize(queue_strategy: Queue::Bunny, env: {}, connection: Bunny.new) @dependencies = { queue_strategy: queue_strategy, connection: connection } @env = env @connection = connection.start end
Public Instance Methods
config()
click to toggle source
# File lib/cotton_tail/app.rb, line 14 def config @config ||= Configuration.new(middleware: Middleware.default_stack(self)) end
queues()
click to toggle source
# File lib/cotton_tail/app.rb, line 18 def queues routes.queues end
routes()
click to toggle source
# File lib/cotton_tail/app.rb, line 34 def routes @routes ||= DSL::Routes.new(**@dependencies) end
run()
click to toggle source
Start the app, process all pending messages, and then shutdown
# File lib/cotton_tail/app.rb, line 23 def run supervisors.map(&:run).each(&:join) end
start()
click to toggle source
# File lib/cotton_tail/app.rb, line 27 def start supervisors.map(&:start) puts 'Waiting for messages ...' sleep 0.01 while running? end
Private Instance Methods
running?()
click to toggle source
# File lib/cotton_tail/app.rb, line 46 def running? supervisors.any?(&:running?) end
supervisors()
click to toggle source
# File lib/cotton_tail/app.rb, line 40 def supervisors @supervisors ||= queues.map do |queue| Queue::Supervisor.new(queue, app: self) end end