Sha256: 7d6964cec9e64584df122e0e4efc8bba6c0f8817afb24f550f76ea776c4c658b
Contents?: true
Size: 1.79 KB
Versions: 1
Compression:
Stored size: 1.79 KB
Contents
require 'jeanine/callbacks' require 'jeanine/mimes' require 'jeanine/request' require 'jeanine/rescuing' require 'jeanine/response' require 'jeanine/renderer' require 'jeanine/routing' require 'jeanine/session' module Jeanine class App include Session include Routing::Evaluation attr_reader :request, :response class << self include Callbacks include Routing::DSL include Rescuing alias :_new :new def new(*args, &block) initialize! stack.run _new(*args, &block) stack end def initialize! Mimes.load! end def stack @stack ||= Rack::Builder.new end def router Jeanine.router end def call(env) new.call env end end include Rescuing def call(env) begin @env = env @request = Jeanine::Request.new(env) @response = Jeanine::Response.new catch(:halt) { route_eval } rescue => error handler = self.class.rescue_handlers[error.class] raise error unless handler if handler.is_a?(Symbol) @response.write(send(handler, error)) else @response.write(instance_exec(error, &handler)) end @response.complete! end end private def params @params ||= if @request.format @request.params.merge({ format: @request.format }) else @request.params end end def render(*args) @response.action_variables = instance_variables_cache Renderer.new(@response).render(*args) end def instance_variables_cache instance_variables.each_with_object({}) do |var, obj| obj[var] = instance_variable_get(var) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
jeanine-0.2.0 | lib/jeanine/app.rb |