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'] } | 
