cuba 1.0.0 → 2.0.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.
@@ -1,14 +1,19 @@
1
1
  Cuba
2
2
  ====
3
3
 
4
- Rum based microframework for web development.
4
+ _n_. a microframework for web development.
5
5
 
6
6
  ![Cuba and Rum, by Jan Sochor](http://farm3.static.flickr.com/2619/4032103097_8324c6fecf.jpg)
7
7
 
8
+ Community
9
+ ---------
10
+
11
+ Meet us on IRC: [#cuba.rb](irc://chat.freenode.net/#cuba.rb) on [freenode.net](http://freenode.net/)
12
+
8
13
  Description
9
14
  -----------
10
15
 
11
- Cuba is a microframework for web development heavily inspired by [Rum][rum],
16
+ Cuba is a microframework for web development originally inspired by [Rum][rum],
12
17
  a tiny but powerful mapper for [Rack][rack] applications.
13
18
 
14
19
  It integrates many templates via [Tilt][tilt], and testing via
@@ -32,7 +37,7 @@ Here's a simple application:
32
37
 
33
38
  Cuba.define do
34
39
  on get do
35
- on path("hello") do
40
+ on "hello" do
36
41
  res.write "Hello world!"
37
42
  end
38
43
 
@@ -68,28 +73,33 @@ Here's an example showcasing how different matchers work:
68
73
 
69
74
  Cuba.define do
70
75
 
76
+ # /
77
+ on "" do
78
+ res.write "Home"
79
+ end
80
+
71
81
  # /about
72
- on path("about") do
82
+ on "about" do
73
83
  res.write "About"
74
84
  end
75
85
 
76
86
  # /styles/basic.css
77
- on path("styles"), extension("css") do |file|
87
+ on "styles", extname("css") do |file|
78
88
  res.write "Filename: #{file}" #=> "Filename: basic"
79
89
  end
80
90
 
81
91
  # /post/2011/02/16/hello
82
- on path("post"), number, number, number, segment do |y, m, d, slug|
92
+ on "post/:y/:m/:d/:slug" do |y, m, d, slug|
83
93
  res.write "#{y}-#{m}-#{d} #{slug}" #=> "2011-02-16 hello"
84
94
  end
85
95
 
86
96
  # /username/foobar
87
- on path("username"), segment do |username|
97
+ on "username/:username" do |username|
88
98
 
89
99
  user = User.find_by_username(username) # username == "foobar"
90
100
 
91
101
  # /username/foobar/posts
92
- on path("posts") do
102
+ on "posts" do
93
103
 
94
104
  # You can access `user` here, because the `on` blocks
95
105
  # are closures.
@@ -97,18 +107,18 @@ Here's an example showcasing how different matchers work:
97
107
  end
98
108
 
99
109
  # /username/foobar/following
100
- on path("following") do
110
+ on "following" do
101
111
  res.write user.following.size #=> "1301"
102
112
  end
103
113
  end
104
114
 
105
115
  # /search?q=barbaz
106
- on path("search"), param("q") do |query|
116
+ on "search", param("q") do |query|
107
117
  res.write "Searched for #{query}" #=> "Searched for barbaz"
108
118
  end
109
119
 
110
- on post
111
- on path("login")
120
+ on post do
121
+ on "login"
112
122
 
113
123
  # POST /login, user: foo, pass: baz
114
124
  on param("user"), param("pass") do |user, pass|
@@ -124,7 +134,6 @@ Here's an example showcasing how different matchers work:
124
134
  end
125
135
  end
126
136
 
127
-
128
137
  That's it, you can now run `rackup` and enjoy what you have just created.
129
138
 
130
139
  To read more about testing, check the documentation for [Cutest][cutest] and
@@ -133,4 +142,4 @@ To read more about testing, check the documentation for [Cutest][cutest] and
133
142
  Installation
134
143
  ------------
135
144
 
136
- $ gem install cuba
145
+ $ gem install cuba
@@ -1,14 +1,14 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "cuba"
3
- s.version = "1.0.0"
3
+ s.version = "2.0.0.rc1"
4
4
  s.summary = "Rum based microframework for web applications."
5
5
  s.description = "Cuba is a light wrapper for Rum, a microframework for Rack applications."
6
6
  s.authors = ["Michel Martens"]
7
7
  s.email = ["michel@soveran.com"]
8
8
  s.homepage = "http://github.com/soveran/cuba"
9
- s.files = ["LICENSE", "README.markdown", "Rakefile", "lib/cuba/ron.rb", "lib/cuba/test.rb", "lib/cuba/version.rb", "lib/cuba.rb", "cuba.gemspec", "test/accept.rb", "test/captures.rb", "test/extension.rb", "test/helper.rb", "test/integration.rb", "test/number.rb", "test/on.rb", "test/path.rb", "test/run.rb", "test/segment.rb"]
9
+ s.files = ["LICENSE", "README.markdown", "Rakefile", "lib/cuba/ron.rb", "lib/cuba/test.rb", "lib/cuba/version.rb", "lib/cuba.rb", "cuba.gemspec", "test/accept.rb", "test/captures.rb", "test/extname.rb", "test/helper.rb", "test/host.rb", "test/integration.rb", "test/match.rb", "test/number.rb", "test/on.rb", "test/path.rb", "test/run.rb", "test/segment.rb"]
10
10
  s.add_dependency "rack", "~> 1.2"
11
- s.add_dependency "tilt", "~> 1.1"
12
- s.add_development_dependency "cutest", "~> 0.1"
13
- s.add_development_dependency "capybara", "~> 0.1"
11
+ s.add_dependency "tilt", "~> 1.2"
12
+ s.add_development_dependency "cutest", "~> 1.0"
13
+ s.add_development_dependency "capybara", "~> 0.4"
14
14
  end
@@ -12,14 +12,6 @@ class Rack::Response
12
12
  end
13
13
  end
14
14
 
15
- # Based on Rum: http://github.com/chneukirchen/rum
16
- #
17
- # Summary of changes
18
- #
19
- # 1. Only relevant captures are yielded.
20
- # 2. The #extension matcher is used more like #path.
21
- # 3. Miscellaneous coding style changes.
22
- #
23
15
  module Cuba
24
16
  class Ron
25
17
  attr :env
@@ -42,7 +34,7 @@ module Cuba
42
34
  @res = Rack::Response.new
43
35
  @matched = false
44
36
 
45
- catch(:rum_run_next_app) do
37
+ catch(:ron_run_next_app) do
46
38
  instance_eval(&@blk)
47
39
 
48
40
  @res.status = 404 unless @matched || !@res.empty?
@@ -90,15 +82,15 @@ module Cuba
90
82
  # res.write "GET"
91
83
  # end
92
84
  #
93
- # on get, path("signup") do
85
+ # on get, "signup" do
94
86
  # res.write "Signup
95
87
  # end
96
88
  #
97
- # on path("user"), segment do |uid|
89
+ # on "user/:id" do |uid|
98
90
  # res.write "User: #{uid}"
99
91
  # end
100
92
  #
101
- # on path("styles"), extension("css") do |file|
93
+ # on "styles", extname("css") do |file|
102
94
  # res.write render("styles/#{file}.sass")
103
95
  # end
104
96
  #
@@ -120,14 +112,12 @@ module Cuba
120
112
  # on true, false do
121
113
  #
122
114
  # # PATH_INFO=/user
123
- # on true, path("signup")
124
- args.each do |arg|
125
- return unless arg == true || arg != false && arg.call
126
- end
115
+ # on true, "signup"
116
+ return unless args.all? { |arg| match(arg) }
127
117
 
128
118
  # The captures we yield here were generated and assembled
129
119
  # by evaluating each of the `arg`s above. Most of these
130
- # are carried out by #path.
120
+ # are carried out by #consume.
131
121
  yield *captures
132
122
 
133
123
  # At this point, we've successfully matched with some corresponding
@@ -152,35 +142,6 @@ module Cuba
152
142
  end
153
143
  private :try
154
144
 
155
- # Probably the most useful helper for writing matchers.
156
- #
157
- # @example
158
- # # matches PATH_INFO=/signup
159
- # on path("signup") do
160
- #
161
- # # matches PATH_INFO=/user123
162
- # on path("user(\\d+)") do |uid|
163
- #
164
- # # matches PATH_INFO=/user/1
165
- # on path("user"), path("(\\d+)") do |uid|
166
- #
167
- # In fact, the other matchers (#segment, #number, #extension)
168
- # ride on this method.
169
- def path(pattern)
170
- lambda { consume(pattern) }
171
- end
172
-
173
- # @private Used by #path to adjust the `PATH_INFO` and `SCRIPT_NAME`.
174
- # This is done so that nesting of matchers would work.
175
- #
176
- # @example
177
- # # PATH_INFO=/doctors/account
178
- # on path("doctors") do
179
- # # PATH_INFO = /account
180
- # on path("account") do
181
- # res.write "Settings page"
182
- # end
183
- # end
184
145
  def consume(pattern)
185
146
  return unless match = env["PATH_INFO"].match(/\A\/(#{pattern})(?:\/|\z)/)
186
147
 
@@ -193,36 +154,26 @@ module Cuba
193
154
  end
194
155
  private :consume
195
156
 
196
- # A matcher for numeric ids.
197
- #
198
- # @example
199
- # on path("user"), number do |uid|
200
- # res.write "User: #{uid}"
201
- # end
202
- def number
203
- path("(\\d+)")
204
- end
205
-
206
- # A matcher for anything without slashes. Useful for mapping to slugs.
207
- #
208
- # @example
209
- # on path("article"), segment do |slug|
210
- # Article.find_by_slug(slug)
211
- #
212
- # end
213
- def segment
214
- path("([^\\/]+)")
157
+ def match(matcher, segment = "([\\.a-zA-Z0-9\\-]+)")
158
+ case matcher
159
+ when String then consume(matcher.gsub(/:\w+/, segment))
160
+ when Regexp then consume(matcher)
161
+ when Symbol then consume(segment)
162
+ when Proc then matcher.call
163
+ else
164
+ matcher
165
+ end
215
166
  end
216
167
 
217
- # A matcher for files with a certain extension.
168
+ # A matcher for files with a certain extname.
218
169
  #
219
170
  # @example
220
171
  # # PATH_INFO=/style/app.css
221
- # on path("style"), extension("css") do |file|
172
+ # on "style", extname("css") do |file|
222
173
  # res.write file # writes app
223
174
  # end
224
- def extension(ext = "\\w+")
225
- path("([^\\/]+?)\.#{ext}\\z")
175
+ def extname(ext = "\\w+")
176
+ lambda { consume("([^\\/]+?)\.#{ext}\\z") }
226
177
  end
227
178
 
228
179
  # Used to ensure that certain request parameters are present. Acts like a
@@ -230,7 +181,7 @@ module Cuba
230
181
  #
231
182
  # @example
232
183
  # # POST with data like user[fname]=John&user[lname]=Doe
233
- # on path("signup"), param("user") do |atts|
184
+ # on "signup", param("user") do |atts|
234
185
  # User.create(atts)
235
186
  # end
236
187
  def param(key, default = nil)
@@ -244,11 +195,11 @@ module Cuba
244
195
  # Useful for matching against the request host (i.e. HTTP_HOST).
245
196
  #
246
197
  # @example
247
- # on host("account1.example.com"), path("api") do
198
+ # on host("account1.example.com"), "api" do
248
199
  # res.write "You have reached the API of account1."
249
200
  # end
250
201
  def host(hostname)
251
- req.host == hostname
202
+ hostname === req.host
252
203
  end
253
204
 
254
205
  # If you want to match against the HTTP_ACCEPT value.
@@ -279,10 +230,10 @@ module Cuba
279
230
  # Syntatic sugar for providing HTTP Verb matching.
280
231
  #
281
232
  # @example
282
- # on get, path("signup") do
233
+ # on get, "signup" do
283
234
  # end
284
235
  #
285
- # on post, path("signup") do
236
+ # on post, "signup" do
286
237
  # end
287
238
  def get ; req.get? end
288
239
  def post ; req.post? end
@@ -297,13 +248,13 @@ module Cuba
297
248
  # run Cuba::Ron.new { on(default) { res.redirect(*args) }}
298
249
  # end
299
250
  #
300
- # on path("account") do
251
+ # on "account" do
301
252
  # redirect "/login" unless session["uid"]
302
253
  #
303
254
  # res.write "Super secure account info."
304
255
  # end
305
256
  def run(app)
306
- throw :rum_run_next_app, app
257
+ throw :ron_run_next_app, app
307
258
  end
308
259
  end
309
260
  end
@@ -1,3 +1,3 @@
1
1
  module Cuba
2
- VERSION = "1.0.0"
2
+ VERSION = "2.0.0.rc1"
3
3
  end
@@ -31,7 +31,7 @@ end
31
31
 
32
32
  test "doesn't yield the path" do
33
33
  Cuba.define do
34
- on get, path("home") do |*args|
34
+ on get, "home" do |*args|
35
35
  res.write args.size
36
36
  end
37
37
  end
@@ -46,7 +46,7 @@ end
46
46
 
47
47
  test "yields the segment" do
48
48
  Cuba.define do
49
- on get, path("user"), segment do |id|
49
+ on get, "user", :id do |id|
50
50
  res.write id
51
51
  end
52
52
  end
@@ -61,7 +61,7 @@ end
61
61
 
62
62
  test "yields a number" do
63
63
  Cuba.define do
64
- on get, path("user"), number do |id|
64
+ on get, "user", :id do |id|
65
65
  res.write id
66
66
  end
67
67
  end
@@ -74,9 +74,9 @@ test "yields a number" do
74
74
  assert_equal ["101"], resp.body
75
75
  end
76
76
 
77
- test "yields an extension" do
77
+ test "yields an extname" do
78
78
  Cuba.define do
79
- on get, path("css"), extension("css") do |file|
79
+ on get, "css", extname("css") do |file|
80
80
  res.write file
81
81
  end
82
82
  end
@@ -91,7 +91,7 @@ end
91
91
 
92
92
  test "yields a param" do
93
93
  Cuba.define do
94
- on get, path("signup"), param("email") do |email|
94
+ on get, "signup", param("email") do |email|
95
95
  res.write email
96
96
  end
97
97
  end
@@ -107,9 +107,9 @@ end
107
107
 
108
108
  test "yields a segment per nested block" do
109
109
  Cuba.define do
110
- on segment do |one|
111
- on segment do |two|
112
- on segment do |three|
110
+ on :one do |one|
111
+ on :two do |two|
112
+ on :three do |three|
113
113
  res.write one
114
114
  res.write two
115
115
  res.write three
@@ -124,4 +124,19 @@ test "yields a segment per nested block" do
124
124
  _, _, resp = Cuba.call(env)
125
125
 
126
126
  assert_equal ["one", "two", "three"], resp.body
127
+ end
128
+
129
+ test "consumes a slash if needed" do
130
+ Cuba.define do
131
+ on get, "(.+\\.css)" do |file|
132
+ res.write file
133
+ end
134
+ end
135
+
136
+ env = { "REQUEST_METHOD" => "GET", "PATH_INFO" => "/foo/bar.css",
137
+ "SCRIPT_NAME" => "/" }
138
+
139
+ _, _, resp = Cuba.call(env)
140
+
141
+ assert_equal ["foo/bar.css"], resp.body
127
142
  end
@@ -2,8 +2,8 @@ require File.expand_path("helper", File.dirname(__FILE__))
2
2
 
3
3
  setup do
4
4
  Cuba.define do
5
- on path("styles") do
6
- on extension("css") do |file|
5
+ on "styles" do
6
+ on extname("css") do |file|
7
7
  res.write file
8
8
  end
9
9
  end
@@ -18,4 +18,4 @@ test "/styles/reset.css" do |env|
18
18
  _, _, resp = Cuba.call(env)
19
19
 
20
20
  assert_equal ["reset"], resp.body
21
- end
21
+ end
@@ -0,0 +1,29 @@
1
+ require File.expand_path("helper", File.dirname(__FILE__))
2
+
3
+ test "matches a host" do
4
+ Cuba.define do
5
+ on host("example.com") do
6
+ res.write "worked"
7
+ end
8
+ end
9
+
10
+ env = { "HTTP_HOST" => "example.com" }
11
+
12
+ _, _, resp = Cuba.call(env)
13
+
14
+ assert_equal ["worked"], resp.body
15
+ end
16
+
17
+ test "matches a host with a regexp" do
18
+ Cuba.define do
19
+ on host(/example/) do
20
+ res.write "worked"
21
+ end
22
+ end
23
+
24
+ env = { "HTTP_HOST" => "example.com" }
25
+
26
+ _, _, resp = Cuba.call(env)
27
+
28
+ assert_equal ["worked"], resp.body
29
+ end
@@ -29,7 +29,7 @@ test "use passes in the arguments and block" do
29
29
 
30
30
  Cuba.define do
31
31
  on get do
32
- on path("hello") do
32
+ on "hello" do
33
33
  "Default"
34
34
  end
35
35
  end
@@ -52,7 +52,7 @@ test "reset and use" do
52
52
 
53
53
  Cuba.define do
54
54
  on get do
55
- on path("hello") do
55
+ on "hello" do
56
56
  res.write "Default"
57
57
  end
58
58
  end
@@ -66,7 +66,7 @@ test "reset and use" do
66
66
 
67
67
  Cuba.define do
68
68
  on get do
69
- on path("hello") do
69
+ on "hello" do
70
70
  res.write "2nd Default"
71
71
  end
72
72
  end
@@ -0,0 +1,86 @@
1
+ require File.expand_path("helper", File.dirname(__FILE__))
2
+
3
+ setup do
4
+ { "SCRIPT_NAME" => "/", "PATH_INFO" => "/posts/123" }
5
+ end
6
+
7
+ test "text-book example" do |env|
8
+ Cuba.define do
9
+ on "posts/:id" do |id|
10
+ res.write id
11
+ end
12
+ end
13
+
14
+ _, _, resp = Cuba.call(env)
15
+
16
+ assert_equal ["123"], resp.body
17
+ end
18
+
19
+ test "multi-param" do |env|
20
+ Cuba.define do
21
+ on "u/:uid/posts/:id" do |uid, id|
22
+ res.write uid
23
+ res.write id
24
+ end
25
+ end
26
+
27
+ env["PATH_INFO"] = "/u/jdoe/posts/123"
28
+
29
+ _, _, resp = Cuba.call(env)
30
+
31
+ assert_equal ["jdoe", "123"], resp.body
32
+ end
33
+
34
+ test "regex nesting" do |env|
35
+ Cuba.define do
36
+ on /u\/(\w+)/ do |uid|
37
+ res.write uid
38
+
39
+ on /posts\/(\d+)/ do |id|
40
+ res.write id
41
+ end
42
+ end
43
+ end
44
+
45
+ env["PATH_INFO"] = "/u/jdoe/posts/123"
46
+
47
+ _, _, resp = Cuba.call(env)
48
+
49
+ assert_equal ["jdoe", "123"], resp.body
50
+ end
51
+
52
+ test "regex nesting colon param style" do |env|
53
+ Cuba.define do
54
+ on /u:(\w+)/ do |uid|
55
+ res.write uid
56
+
57
+ on /posts:(\d+)/ do |id|
58
+ res.write id
59
+ end
60
+ end
61
+ end
62
+
63
+ env["PATH_INFO"] = "/u:jdoe/posts:123"
64
+
65
+ _, _, resp = Cuba.call(env)
66
+
67
+ assert_equal ["jdoe", "123"], resp.body
68
+ end
69
+
70
+ test "symbol matching" do |env|
71
+ Cuba.define do
72
+ on "user", :id do |uid|
73
+ res.write uid
74
+
75
+ on "posts", :pid do |id|
76
+ res.write id
77
+ end
78
+ end
79
+ end
80
+
81
+ env["PATH_INFO"] = "/user/jdoe/posts/123"
82
+
83
+ _, _, resp = Cuba.call(env)
84
+
85
+ assert_equal ["jdoe", "123"], resp.body
86
+ end
@@ -6,8 +6,8 @@ end
6
6
 
7
7
  test "paths and numbers" do |env|
8
8
  Cuba.define do
9
- on path("about") do
10
- on number, number do |one, two|
9
+ on "about" do
10
+ on :one, :two do |one, two|
11
11
  res.write one
12
12
  res.write two
13
13
  end
@@ -21,8 +21,8 @@ end
21
21
 
22
22
  test "paths and decimals" do |env|
23
23
  Cuba.define do
24
- on path("about") do
25
- on number do |one|
24
+ on "about" do
25
+ on /(\d+)/ do |one|
26
26
  res.write one
27
27
  end
28
28
  end
@@ -33,4 +33,4 @@ test "paths and decimals" do |env|
33
33
  _, _, resp = Cuba.call(env)
34
34
 
35
35
  assert_equal [], resp.body
36
- end
36
+ end
data/test/on.rb CHANGED
@@ -12,6 +12,18 @@ test "executes on true" do
12
12
  assert_equal ["+1"], resp.body
13
13
  end
14
14
 
15
+ test "executes on non-false" do
16
+ Cuba.define do
17
+ on "123" do
18
+ res.write "+1"
19
+ end
20
+ end
21
+
22
+ _, _, resp = Cuba.call({ "PATH_INFO" => "/123", "SCRIPT_NAME" => "/" })
23
+
24
+ assert_equal ["+1"], resp.body
25
+ end
26
+
15
27
  test "restores SCRIPT_NAME and PATH_INFO" do
16
28
  Cuba.define do
17
29
  on true do
@@ -6,7 +6,7 @@ end
6
6
 
7
7
  test "one level path" do |env|
8
8
  Cuba.define do
9
- on path("about") do
9
+ on "about" do
10
10
  res.write "About"
11
11
  end
12
12
  end
@@ -19,12 +19,12 @@ end
19
19
 
20
20
  test "two level nested paths" do |env|
21
21
  Cuba.define do
22
- on path("about") do
23
- on path("1") do
22
+ on "about" do
23
+ on "1" do
24
24
  res.write "+1"
25
25
  end
26
26
 
27
- on path("2") do
27
+ on "2" do
28
28
  res.write "+2"
29
29
  end
30
30
  end
@@ -45,7 +45,7 @@ end
45
45
 
46
46
  test "two level inlined paths" do |env|
47
47
  Cuba.define do
48
- on path("a"), path("b") do
48
+ on "a/b" do
49
49
  res.write "a"
50
50
  res.write "b"
51
51
  end
@@ -60,7 +60,7 @@ end
60
60
 
61
61
  test "a path with some regex captures" do |env|
62
62
  Cuba.define do
63
- on path("user(\\d+)") do |uid|
63
+ on "user(\\d+)" do |uid|
64
64
  res.write uid
65
65
  end
66
66
  end
@@ -71,3 +71,17 @@ test "a path with some regex captures" do |env|
71
71
 
72
72
  assert_equal ["123"], resp.body
73
73
  end
74
+
75
+ test "matching the root" do |env|
76
+ Cuba.define do
77
+ on "" do
78
+ res.write "Home"
79
+ end
80
+ end
81
+
82
+ env["PATH_INFO"] = "/"
83
+
84
+ _, _, resp = Cuba.call(env)
85
+
86
+ assert_equal ["Home"], resp.body
87
+ end
@@ -6,7 +6,7 @@ test "redirect canonical example" do
6
6
  run Cuba::Ron.new { on(true) { res.redirect(*args) }}
7
7
  end
8
8
 
9
- on path("account") do
9
+ on "account" do
10
10
  redirect "/login", 307
11
11
 
12
12
  res.write "Super secure content"
@@ -20,4 +20,4 @@ test "redirect canonical example" do
20
20
  assert_equal "/login", resp["Location"]
21
21
  assert_equal 307, resp.status
22
22
  assert_equal [], resp.body
23
- end
23
+ end
@@ -2,8 +2,8 @@ require File.expand_path("helper", File.dirname(__FILE__))
2
2
 
3
3
  setup do
4
4
  Cuba.define do
5
- on path("post") do
6
- on segment do |id|
5
+ on "post" do
6
+ on :id do |id|
7
7
  res.write id
8
8
  end
9
9
  end
@@ -42,4 +42,4 @@ test "matches only the first segment available" do |env|
42
42
  _, _, resp = Cuba.call(env)
43
43
 
44
44
  assert_equal ["one"], resp.body
45
- end
45
+ end
metadata CHANGED
@@ -1,8 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cuba
3
3
  version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 1.0.0
4
+ prerelease: 6
5
+ version: 2.0.0.rc1
6
6
  platform: ruby
7
7
  authors:
8
8
  - Michel Martens
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-02-16 00:00:00 -03:00
13
+ date: 2011-02-25 00:00:00 -03:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -32,7 +32,7 @@ dependencies:
32
32
  requirements:
33
33
  - - ~>
34
34
  - !ruby/object:Gem::Version
35
- version: "1.1"
35
+ version: "1.2"
36
36
  type: :runtime
37
37
  version_requirements: *id002
38
38
  - !ruby/object:Gem::Dependency
@@ -43,7 +43,7 @@ dependencies:
43
43
  requirements:
44
44
  - - ~>
45
45
  - !ruby/object:Gem::Version
46
- version: "0.1"
46
+ version: "1.0"
47
47
  type: :development
48
48
  version_requirements: *id003
49
49
  - !ruby/object:Gem::Dependency
@@ -54,7 +54,7 @@ dependencies:
54
54
  requirements:
55
55
  - - ~>
56
56
  - !ruby/object:Gem::Version
57
- version: "0.1"
57
+ version: "0.4"
58
58
  type: :development
59
59
  version_requirements: *id004
60
60
  description: Cuba is a light wrapper for Rum, a microframework for Rack applications.
@@ -77,9 +77,11 @@ files:
77
77
  - cuba.gemspec
78
78
  - test/accept.rb
79
79
  - test/captures.rb
80
- - test/extension.rb
80
+ - test/extname.rb
81
81
  - test/helper.rb
82
+ - test/host.rb
82
83
  - test/integration.rb
84
+ - test/match.rb
83
85
  - test/number.rb
84
86
  - test/on.rb
85
87
  - test/path.rb
@@ -103,9 +105,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
103
105
  required_rubygems_version: !ruby/object:Gem::Requirement
104
106
  none: false
105
107
  requirements:
106
- - - ">="
108
+ - - ">"
107
109
  - !ruby/object:Gem::Version
108
- version: "0"
110
+ version: 1.3.1
109
111
  requirements: []
110
112
 
111
113
  rubyforge_project: