usher 0.6.1 → 0.6.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/VERSION.yml +1 -1
  2. data/lib/usher/interface/rack.rb +32 -8
  3. metadata +2 -2
data/VERSION.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  ---
2
2
  :build:
3
- :patch: 1
3
+ :patch: 2
4
4
  :major: 0
5
5
  :minor: 6
@@ -4,6 +4,24 @@ require File.join(File.dirname(__FILE__), 'rack', 'route')
4
4
  class Usher
5
5
  module Interface
6
6
  class Rack
7
+
8
+ ENV_KEY_RESPONSE = 'usher.response'
9
+ ENV_KEY_PARAMS = 'usher.params'
10
+
11
+ class Middleware
12
+
13
+ def initialize(app, router)
14
+ @app = app
15
+ @router = router
16
+ end
17
+
18
+ def call(env)
19
+ @router.call(env)
20
+ @app.call(env)
21
+ end
22
+
23
+ end
24
+
7
25
  class Builder < ::Rack::Builder
8
26
  def initialize(&block)
9
27
  @usher = Usher::Interface::Rack.new
@@ -37,12 +55,17 @@ class Usher
37
55
 
38
56
  attr_reader :router
39
57
 
40
- def initialize(app = nil, &blk)
58
+ def initialize(app = nil, options = nil, &blk)
41
59
  @_app = app || lambda { |env| ::Rack::Response.new("No route found", 404).finish }
42
60
  @router = Usher.new(:request_methods => [:request_method, :host, :port, :scheme], :generator => Usher::Util::Generators::URL.new)
61
+ @use_destinations = options && options.key?(:use_destinations) ? options[:use_destinations] : true
43
62
  instance_eval(&blk) if blk
44
63
  end
45
64
 
65
+ def use_destinations?
66
+ @use_destinations
67
+ end
68
+
46
69
  def dup
47
70
  new_one = super
48
71
  original = self
@@ -114,13 +137,14 @@ class Usher
114
137
  #
115
138
  # @api plugin
116
139
  def after_match(request, response)
117
- params = response.path.route.default_values ?
118
- response.path.route.default_values.merge(Hash[*response.params.flatten]) :
119
- Hash[*response.params.flatten]
140
+ params = response.path.route.default_values ? response.path.route.default_values.merge(response.params_as_hash) : response.params_as_hash
120
141
 
121
- request.env['usher.params'] ?
122
- request.env['usher.params'].merge!(params) :
123
- (request.env['usher.params'] = params)
142
+ request.env[ENV_KEY_RESPONSE] ||= []
143
+ request.env[ENV_KEY_RESPONSE] << response
144
+
145
+ request.env[ENV_KEY_PARAMS] ?
146
+ request.env[ENV_KEY_PARAMS].merge!(params) :
147
+ (request.env[ENV_KEY_PARAMS] = params)
124
148
 
125
149
  # consume the path_info to the script_name
126
150
  # response.remaining_path
@@ -135,7 +159,7 @@ class Usher
135
159
  #
136
160
  # @api private
137
161
  def determine_respondant(response)
138
- response && response.destination || _app
162
+ use_destinations? && response && response.destination || _app
139
163
  end
140
164
 
141
165
  # Consume the path from path_info to script_name
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: usher
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.6.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Neighman
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-01-04 00:00:00 -05:00
17
+ date: 2010-01-05 00:00:00 -05:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency