cuba 2.1.0 → 2.2.0.rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. data/lib/cuba.rb +21 -24
  2. data/lib/cuba/version.rb +1 -1
  3. metadata +13 -13
@@ -70,15 +70,20 @@ class Cuba
70
70
  @env = env
71
71
  @req = Rack::Request.new(env)
72
72
  @res = Rack::Response.new
73
- @matched = false
74
73
 
75
- catch(:ron_run_next_app) do
74
+ # This `catch` statement will either receive a
75
+ # rack response tuple via a `halt`, or will
76
+ # fall back to issuing a 404.
77
+ #
78
+ # When it `catch`es a throw, the return value
79
+ # of this whole `_call` method will be the
80
+ # rack response tuple, which is exactly what we want.
81
+ catch(:halt) do
76
82
  instance_eval(&@blk)
77
83
 
78
- @res.status = 404 unless @matched || !@res.empty?
79
-
80
- return @res.finish
81
- end.call(env)
84
+ res.status = 404
85
+ res.finish
86
+ end
82
87
  end
83
88
 
84
89
  # @private Used internally by #render to cache the
@@ -131,10 +136,6 @@ class Cuba
131
136
  # end
132
137
  #
133
138
  def on(*args, &block)
134
- # No use running any other matchers if we've already found a
135
- # proper matcher.
136
- return if @matched
137
-
138
139
  try do
139
140
  # For every block, we make sure to reset captures so that
140
141
  # nesting matchers won't mess with each other's captures.
@@ -151,20 +152,12 @@ class Cuba
151
152
  # on true, "signup"
152
153
  return unless args.all? { |arg| match(arg) }
153
154
 
154
- begin
155
- # The captures we yield here were generated and assembled
156
- # by evaluating each of the `arg`s above. Most of these
157
- # are carried out by #consume.
158
- yield *captures
155
+ # The captures we yield here were generated and assembled
156
+ # by evaluating each of the `arg`s above. Most of these
157
+ # are carried out by #consume.
158
+ yield *captures
159
159
 
160
- ensure
161
- # Regardless of what happens in the `yield`, we should ensure that
162
- # we successfully set `@matched` to true.
163
-
164
- # At this point, we've successfully matched with some corresponding
165
- # matcher, so we can skip all other matchers defined.
166
- @matched = true
167
- end
160
+ halt res.finish
168
161
  end
169
162
  end
170
163
 
@@ -292,7 +285,11 @@ class Cuba
292
285
  # res.write "Super secure account info."
293
286
  # end
294
287
  def run(app)
295
- throw :ron_run_next_app, app
288
+ halt app.call(req.env)
289
+ end
290
+
291
+ def halt(response)
292
+ throw :halt, response
296
293
  end
297
294
 
298
295
  # In order to prevent people from overriding the standard Cuba
@@ -1,3 +1,3 @@
1
1
  class Cuba
2
- VERSION = "2.1.0"
2
+ VERSION = "2.2.0.rc1"
3
3
  end
metadata CHANGED
@@ -1,20 +1,20 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cuba
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
5
- prerelease:
4
+ version: 2.2.0.rc1
5
+ prerelease: 6
6
6
  platform: ruby
7
7
  authors:
8
8
  - Michel Martens
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-08-23 00:00:00.000000000 -07:00
12
+ date: 2011-10-19 00:00:00.000000000 -03:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rack
17
- requirement: &2157644260 !ruby/object:Gem::Requirement
17
+ requirement: &2153812140 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: '0'
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *2157644260
25
+ version_requirements: *2153812140
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: tilt
28
- requirement: &2157643840 !ruby/object:Gem::Requirement
28
+ requirement: &2153811720 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ! '>='
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *2157643840
36
+ version_requirements: *2153811720
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: cutest
39
- requirement: &2157643420 !ruby/object:Gem::Requirement
39
+ requirement: &2153811300 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ! '>='
@@ -44,10 +44,10 @@ dependencies:
44
44
  version: '0'
45
45
  type: :development
46
46
  prerelease: false
47
- version_requirements: *2157643420
47
+ version_requirements: *2153811300
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: capybara
50
- requirement: &2157643000 !ruby/object:Gem::Requirement
50
+ requirement: &2153849280 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ! '>='
@@ -55,7 +55,7 @@ dependencies:
55
55
  version: '0'
56
56
  type: :development
57
57
  prerelease: false
58
- version_requirements: *2157643000
58
+ version_requirements: *2153849280
59
59
  description: Cuba is a microframework for web applications.
60
60
  email:
61
61
  - michel@soveran.com
@@ -104,9 +104,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
104
104
  required_rubygems_version: !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
- - - ! '>='
107
+ - - ! '>'
108
108
  - !ruby/object:Gem::Version
109
- version: '0'
109
+ version: 1.3.1
110
110
  requirements: []
111
111
  rubyforge_project:
112
112
  rubygems_version: 1.6.2