0
0
Fork 0

replaced .create with .new on Zero::Request

This commit is contained in:
Gibheer 2012-12-12 18:38:46 +01:00
parent 34a7a04a04
commit a95f1436c4
6 changed files with 28 additions and 11 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -21,7 +21,7 @@ describe Zero::Controller, '.call' do
r = Zero::Request.new(env)
r.params['foo'] = 'bar'
subject
r = Zero::Request.create(env)
r = Zero::Request.new(env)
expect(r.params['foo']).to eq('bar')
end
end

View File

@ -1,12 +1,12 @@
require 'spec_helper'
describe Zero::Request, '.create' do
describe Zero::Request, '.new' do
subject { Zero::Request.new(env) }
context "with a fresh environment" do
let(:env) { EnvGenerator.get('/foo') }
it "creates an instance of Zero::Request" do
Zero::Request.create(env).should be_an_instance_of(Zero::Request)
Zero::Request.new(env).should be_an_instance_of(Zero::Request)
end
end
@ -15,7 +15,7 @@ describe Zero::Request, '.create' do
let(:new_env) { subject.env }
it "returns an already build request" do
Zero::Request.create(new_env).should be(subject)
Zero::Request.new(new_env).should be(subject)
end
end
end

View File

@ -45,7 +45,7 @@ describe Zero::Router, '#call' do
let(:env) { EnvGenerator.get('/foo/bar') }
let(:app) do
lambda do |env|
[200, {}, [Zero::Request.create(env).params['id']]]
[200, {}, [Zero::Request.new(env).params['id']]]
end
end
let(:result) { ['bar'] }