From 8a1c464c8b395542b430eac567b5945f04f732ae Mon Sep 17 00:00:00 2001 From: Gibheer Date: Fri, 16 Nov 2012 09:33:25 +0100 Subject: added self.create to the request With this it is possible to reuse an already set request and therefore safe some memory and time. --- lib/zero/request.rb | 6 ++++++ spec/unit/request/create_spec.rb | 21 +++++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 spec/unit/request/create_spec.rb diff --git a/lib/zero/request.rb b/lib/zero/request.rb index 22c5a52..6b6ff01 100644 --- a/lib/zero/request.rb +++ b/lib/zero/request.rb @@ -6,9 +6,15 @@ 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) + end + # create a new request object def initialize(env) @env = env + @env['zero.request'] = self end # get the environment diff --git a/spec/unit/request/create_spec.rb b/spec/unit/request/create_spec.rb new file mode 100644 index 0000000..a3440af --- /dev/null +++ b/spec/unit/request/create_spec.rb @@ -0,0 +1,21 @@ +require 'spec_helper' + +describe Zero::Request, '.create' 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) + end + end + + context "with an already used environment" do + let(:env) { EnvGenerator.get('/foo') } + let(:new_env) { subject.env } + + it "returns an already build request" do + Zero::Request.create(new_env).should be(subject) + end + end +end -- cgit v1.2.3-70-g09d2