diff options
author | Gibheer <gibheer@gmail.com> | 2012-12-12 18:38:46 +0100 |
---|---|---|
committer | Gibheer <gibheer@gmail.com> | 2012-12-12 18:38:46 +0100 |
commit | a95f1436c4f31b88dccde31bd2468d99afa04e2b (patch) | |
tree | 01b2451f9d1d0049f51d311c75e57ef6747be1c0 | |
parent | 34a7a04a040fccae6dc731c0cd6cc33f23b063a4 (diff) |
replaced .create with .new on Zero::Request
-rw-r--r-- | lib/zero/controller.rb | 14 | ||||
-rw-r--r-- | lib/zero/request.rb | 13 | ||||
-rw-r--r-- | lib/zero/router.rb | 2 | ||||
-rw-r--r-- | spec/unit/controller/call_spec.rb | 2 | ||||
-rw-r--r-- | spec/unit/request/new_spec.rb (renamed from spec/unit/request/create_spec.rb) | 6 | ||||
-rw-r--r-- | spec/unit/router/call_spec.rb | 2 |
6 files changed, 28 insertions, 11 deletions
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 diff --git a/spec/unit/controller/call_spec.rb b/spec/unit/controller/call_spec.rb index 9d2317e..7ff6c40 100644 --- a/spec/unit/controller/call_spec.rb +++ b/spec/unit/controller/call_spec.rb @@ -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 diff --git a/spec/unit/request/create_spec.rb b/spec/unit/request/new_spec.rb index a3440af..d057800 100644 --- a/spec/unit/request/create_spec.rb +++ b/spec/unit/request/new_spec.rb @@ -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 diff --git a/spec/unit/router/call_spec.rb b/spec/unit/router/call_spec.rb index b7cf315..6f5c78c 100644 --- a/spec/unit/router/call_spec.rb +++ b/spec/unit/router/call_spec.rb @@ -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'] } |