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)