added options to controller
This avoids hardcoding the options into the controller and therefore should it make possible to use Rack::Request or Sinatra apps as requests. (That sounds so weird.)
This commit is contained in:
parent
38bde320ac
commit
7bda0ec7e5
|
@ -7,7 +7,7 @@ module Zero
|
|||
class Controller
|
||||
# initialize a new instance of the controller and call response on it
|
||||
def self.call(env)
|
||||
new(Zero::Request.new(env)).response
|
||||
new(env).response
|
||||
end
|
||||
|
||||
# set the class to use for responses
|
||||
|
@ -20,6 +20,16 @@ module Zero
|
|||
@@response ||= Zero::Response
|
||||
end
|
||||
|
||||
# set a class to use for requests
|
||||
def self.request=(request_class)
|
||||
@@request = request_class
|
||||
end
|
||||
|
||||
# return the set request class
|
||||
def self.request
|
||||
@@request ||= Zero::Request
|
||||
end
|
||||
|
||||
# set the renderer to use in the controller
|
||||
def self.renderer=(renderer)
|
||||
@@renderer = renderer
|
||||
|
@ -35,10 +45,11 @@ module Zero
|
|||
|
||||
# initialize the controller
|
||||
#
|
||||
# At initialization `@request`, `@response` and `@renderer` are set.
|
||||
# @param request [Request] a request object
|
||||
def initialize(request)
|
||||
@request = request
|
||||
# This creates a new controller instance using the defined classes of
|
||||
# renderer, request and response.
|
||||
# @param env [Hash] a rack compatible environment
|
||||
def initialize(env)
|
||||
@request = self.class.request.new(env)
|
||||
@response = self.class.response
|
||||
@renderer = self.class.renderer
|
||||
end
|
||||
|
|
|
@ -3,9 +3,9 @@ require 'spec_helper'
|
|||
describe Zero::Controller, '#renderer' do
|
||||
subject { Zero::Controller }
|
||||
let(:renderer) { Object.new }
|
||||
|
||||
|
||||
it 'returns the set renderer' do
|
||||
subject.renderer = renderer
|
||||
expect(subject.new(Object.new).renderer).to be(renderer)
|
||||
expect(subject.new({}).renderer).to be(renderer)
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue