class Kaffe::Base
Attributes
env[R]
params[R]
request[R]
response[R]
Public Class Methods
call(env)
click to toggle source
# File lib/kaffe/base.rb, line 71 def call(env); instance.call(env) end
instance()
click to toggle source
# File lib/kaffe/base.rb, line 72 def instance; @instance ||= new end
middleware()
click to toggle source
# File lib/kaffe/base.rb, line 73 def middleware; @middleware ||= [] end
new(app=nil)
click to toggle source
# File lib/kaffe/base.rb, line 16 def initialize(app=nil) @app = app @templates = {} end
new(*args)
click to toggle source
Calls superclass method
# File lib/kaffe/base.rb, line 64 def new(*args) builder = Rack::Builder.new middleware.each {|m, args, block| builder.use(m,*args,&block) } builder.run super builder.to_app end
use(m, *args, &block)
click to toggle source
# File lib/kaffe/base.rb, line 75 def use(m, *args, &block) middleware << [m, args, block] end
Public Instance Methods
call(env)
click to toggle source
# File lib/kaffe/base.rb, line 21 def call(env) @env = env @request = Rack::Request.new(env) @response = Rack::Response.new run! { # handle if errors were sent from route env['kaffe.error'] = catch(:error) { route! action! } error! } if @app @app.call(@response.finish) else @response.finish end end
run!(&block)
click to toggle source
# File lib/kaffe/base.rb, line 41 def run! &block begin res = catch(:success) { block.call } case res when String @response.body = [res] when Array @response.status = res[0] res[1].each {|h, v| @response.headers[h] = v } @response.body = res[2] else puts "Should not be here" @response.status = 500 end rescue # Something gone wrong and havent been handeled. puts "WARN: Define your error handlers!!!" @response.status = env['kaffe.error'].first @response.body = [env['kaffe.error'].last] end end