lib/jeanine/app.rb in jeanine-0.4.0 vs lib/jeanine/app.rb in jeanine-0.5.0

- old
+ new

@@ -1,28 +1,37 @@ -require 'jeanine/callbacks' require 'jeanine/mimes' require 'jeanine/request' -require 'jeanine/rescuing' require 'jeanine/response' -require 'jeanine/renderer' require 'jeanine/routing' -require 'jeanine/session' -require 'jeanine/view_paths' module Jeanine class App - include Session - include Rescuing include Routing::Evaluation attr_reader :request, :response + def self.plugin(name) + unless Jeanine._installed_plugins.include?(name) + unless const_defined?("Jeanine::#{name}") + require "jeanine/#{name.to_s.underscore}" + end + include Kernel.const_get("Jeanine::#{name}") + Jeanine._installed_plugins << name + end + end + + def self.installed_plugins + Jeanine._installed_plugins + end + + # plugin :Callbacks + # plugin :Rendering + # plugin :Rescuing + # plugin :Session + class << self - include Callbacks include Routing::DSL - include Rescuing - include ViewPaths alias :_new :new def new(*args, &block) initialize! stack.run _new(*args, &block) @@ -45,39 +54,23 @@ new.call env end end 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 + @env = env + @request = Jeanine::Request.new(env) + @response = Jeanine::Response.new + catch(:halt) { route_eval } 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)