From a95f1436c4f31b88dccde31bd2468d99afa04e2b Mon Sep 17 00:00:00 2001 From: Gibheer Date: Wed, 12 Dec 2012 18:38:46 +0100 Subject: replaced .create with .new on Zero::Request --- lib/zero/controller.rb | 14 ++++++++++++-- lib/zero/request.rb | 13 ++++++++++--- lib/zero/router.rb | 2 +- 3 files changed, 23 insertions(+), 6 deletions(-) (limited to 'lib') diff --git a/lib/zero/controller.rb b/lib/zero/controller.rb index f7c8d53..17d9b3f 100644 --- a/lib/zero/controller.rb +++ b/lib/zero/controller.rb @@ -7,7 +7,17 @@ module Zero class Controller # initialize a new instance of the controller and call response on it def self.call(env) - new(Zero::Request.create(env)).response + new(Zero::Request.new(env)).response + end + + # set the class to use for responses + def self.response=(response_class) + @@response = response_class + end + + # return the set response class + def self.response + @@response ||= Zero::Response end # set the renderer to use in the controller @@ -29,7 +39,7 @@ module Zero # @param request [Request] a request object def initialize(request) @request = request - @response = Zero::Response.new + @response = self.class.response @renderer = self.class.renderer end diff --git a/lib/zero/request.rb b/lib/zero/request.rb index 9dc9513..10862fe 100644 --- a/lib/zero/request.rb +++ b/lib/zero/request.rb @@ -6,9 +6,16 @@ require_relative 'request/server' module Zero # This class wraps around a rack environment for easier access to all data. class Request - def self.create(environment) - return environment['zero.request'] if environment.has_key?('zero.request') - new(environment) + class << self + # replace #new with a function to reuse an already defined request + alias_method :__new__, :new + + # reuse an already defined request in the environment or create a new one + # @param environment [Hash] a rack compatible request environment + def new(environment) + return environment['zero.request'] if environment.has_key?('zero.request') + __new__(environment) + end end # create a new request object diff --git a/lib/zero/router.rb b/lib/zero/router.rb index 9ec3b4b..5f77624 100644 --- a/lib/zero/router.rb +++ b/lib/zero/router.rb @@ -47,7 +47,7 @@ module Zero # @param env [Hash] a rack environment # @return [Array] a rack compatible response def call(env) - request = Zero::Request.create(env) + request = Zero::Request.new(env) @routes.each do |route, target| match = route.match(request.path) if match -- cgit v1.2.3-70-g09d2