class Chickadee::Application
Public Class Methods
new(request: Rack::Request, response: Rack::Response, builder: Rack::Builder, container: Container)
click to toggle source
# File lib/chickadee/application.rb, line 9 def initialize(request: Rack::Request, response: Rack::Response, builder: Rack::Builder, container: Container) @request_class = request @response_class = response @container_class = container @builder_class = builder @use_cache = [] @register_cache = [] end
Public Instance Methods
register(*args, &block)
click to toggle source
# File lib/chickadee/application.rb, line 18 def register(*args, &block) @register_cache << [args, block] end
service(name)
click to toggle source
# File lib/chickadee/application.rb, line 26 def service(name) builder = @builder_class.new @use_cache.each { |use| builder.use(*use[0], &use[1]) } builder.run(service_app(name)) builder end
use(*args, &block)
click to toggle source
# File lib/chickadee/application.rb, line 22 def use(*args, &block) @use_cache << [args, block] end
Private Instance Methods
service_app(name)
click to toggle source
# File lib/chickadee/application.rb, line 35 def service_app(name) Proc.new do |env| request = @request_class.new(env) response = @response_class.new container = @container_class.new @register_cache.each{ |r| container.register(*r[0], &r[1]) } container.resolve(name).call(request, response) end end