merb-core 1.1.0.pre → 1.1.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.
- data/Rakefile +1 -1
- data/lib/merb-core/dispatch/cookies.rb +1 -1
- data/lib/merb-core/dispatch/router/route.rb +2 -0
- data/lib/merb-core/rack/stream_wrapper.rb +2 -0
- data/lib/merb-core/version.rb +1 -1
- data/spec/public/controller/cookies_spec.rb +11 -9
- data/spec/public/controller/url_spec.rb +29 -19
- data/spec/public/request/multipart_spec.rb +0 -2
- data/spec/public/session/cookie_session_spec.rb +2 -1
- data/spec/public/session/session_shared.rb +4 -3
- data/spec/public/test/controllers/spec_helper_controller.rb +2 -1
- data/spec/public/test/request_helper_spec.rb +56 -56
- data/spec/spec_helper.rb +9 -0
- metadata +80 -41
data/Rakefile
CHANGED
data/lib/merb-core/version.rb
CHANGED
@@ -24,42 +24,43 @@ describe Merb::Controller, "._default_cookie_domain" do
|
|
24
24
|
end
|
25
25
|
|
26
26
|
describe Merb::Controller, "#cookies creating" do
|
27
|
+
include Merb::Test::CookiesHelper
|
27
28
|
|
28
29
|
it "should set all the cookies for a request" do
|
29
30
|
controller = dispatch_to(Merb::Test::Fixtures::Controllers::CookiesController, :store_cookies)
|
30
|
-
controller.headers
|
31
|
+
extract_cookies(controller.headers).length.should == 5
|
31
32
|
end
|
32
33
|
|
33
34
|
it "should set a simple cookie" do
|
34
35
|
controller = dispatch_to(Merb::Test::Fixtures::Controllers::CookiesController, :store_cookies)
|
35
|
-
cookie = controller.headers
|
36
|
+
cookie = extract_cookies(controller.headers).sort[1]
|
36
37
|
cookie.should match(/foo=bar;/)
|
37
38
|
cookie.should match(/domain=specs.merbivore.com;/)
|
38
39
|
end
|
39
40
|
|
40
41
|
it "should set the cookie domain correctly when it is specified" do
|
41
42
|
controller = dispatch_to(Merb::Test::Fixtures::Controllers::CookiesController, :store_cookies)
|
42
|
-
cookie = controller.headers
|
43
|
+
cookie = extract_cookies(controller.headers).sort[0]
|
43
44
|
cookie.should match(/awesome=super-cookie;/)
|
44
45
|
cookie.should match(/domain=blog.merbivore.com;/)
|
45
46
|
end
|
46
47
|
|
47
48
|
it "should format the expires time to the correct format" do
|
48
49
|
controller = dispatch_to(Merb::Test::Fixtures::Controllers::CookiesController, :store_cookies)
|
49
|
-
cookie = controller.headers
|
50
|
+
cookie = extract_cookies(controller.headers).sort[2]
|
50
51
|
cookie.should include("oldcookie=this+is+really+old;")
|
51
52
|
cookie.should include("expires=Wed, 01-Jan-2020 00:00:00 GMT;")
|
52
53
|
end
|
53
54
|
|
54
55
|
it "should append secure to the end of the cookie header when marked as such" do
|
55
56
|
controller = dispatch_to(Merb::Test::Fixtures::Controllers::CookiesController, :store_cookies)
|
56
|
-
cookie = controller.headers
|
57
|
+
cookie = extract_cookies(controller.headers).sort[3]
|
57
58
|
cookie.should match(/secure;$/)
|
58
59
|
end
|
59
60
|
|
60
61
|
it "should append HttpOnly to the end of the cookie header when marked as such" do
|
61
62
|
controller = dispatch_to(Merb::Test::Fixtures::Controllers::CookiesController, :store_cookies)
|
62
|
-
cookie = controller.headers
|
63
|
+
cookie = extract_cookies(controller.headers).sort[4]
|
63
64
|
cookie.should match(/HttpOnly;$/)
|
64
65
|
end
|
65
66
|
|
@@ -67,7 +68,7 @@ describe Merb::Controller, "#cookies creating" do
|
|
67
68
|
controller_klass = Merb::Test::Fixtures::Controllers::EmptyDefaultCookieDomain
|
68
69
|
with_cookies(controller_klass) do |cookie_jar|
|
69
70
|
controller = dispatch_to(controller_klass, :store_cookies)
|
70
|
-
cookies = controller.headers
|
71
|
+
cookies = extract_cookies(controller.headers).sort
|
71
72
|
cookies[1].should == "foo=bar; path=/;"
|
72
73
|
end
|
73
74
|
end
|
@@ -86,15 +87,16 @@ describe Merb::Controller, "#cookies creating" do
|
|
86
87
|
end
|
87
88
|
|
88
89
|
describe Merb::Controller, "#cookies destroying" do
|
90
|
+
include Merb::Test::CookiesHelper
|
89
91
|
|
90
92
|
it "should send a cookie when deleting a cookie" do
|
91
93
|
controller = dispatch_to(Merb::Test::Fixtures::Controllers::CookiesController, :destroy_cookies)
|
92
|
-
controller.headers
|
94
|
+
extract_cookies(controller.headers).length.should == 1
|
93
95
|
end
|
94
96
|
|
95
97
|
it "should set the expiration time of the cookie being destroyed to the past" do
|
96
98
|
controller = dispatch_to(Merb::Test::Fixtures::Controllers::CookiesController, :destroy_cookies)
|
97
|
-
cookie = controller.headers
|
99
|
+
cookie = extract_cookies(controller.headers).sort[0]
|
98
100
|
cookie.should include("expires=Thu, 01-Jan-1970 00:00:00 GMT;")
|
99
101
|
end
|
100
102
|
|
@@ -243,55 +243,65 @@ describe Merb::Controller, "#url(:this, *args)" do
|
|
243
243
|
end
|
244
244
|
|
245
245
|
it "should use the current route" do
|
246
|
-
|
246
|
+
visit("/simple").body.to_s.should == "/simple"
|
247
247
|
end
|
248
248
|
|
249
249
|
it "should be able to generate a route with optional segments" do
|
250
|
-
|
250
|
+
visit("/no_optionals").body.to_s.should == "/no_optionals"
|
251
251
|
end
|
252
252
|
|
253
253
|
it "should drop the optional request params if they are not specified when generating the route" do
|
254
|
-
|
254
|
+
visit("/no_optionals/one/two").body.to_s.should == "/no_optionals"
|
255
255
|
end
|
256
256
|
|
257
257
|
it "should generate the optional segments as specified" do
|
258
|
-
|
259
|
-
|
258
|
+
visit("/one_optionals/one/two").body.to_s.should == "/one_optionals/one"
|
259
|
+
visit("/two_optionals/one/two").body.to_s.should == "/two_optionals/one/two"
|
260
260
|
end
|
261
261
|
|
262
262
|
it "should generate the route even if it is not a GET request" do
|
263
|
-
|
263
|
+
visit("/postage", :post).body.to_s.should == "/postage"
|
264
264
|
end
|
265
265
|
|
266
266
|
it "should be able to tag on extra query string paramters" do
|
267
|
-
|
267
|
+
visit('/action/this_route_with_page').body.to_s.should == "/action/this_route_with_page?page=2"
|
268
268
|
end
|
269
269
|
|
270
270
|
it "should work with deferred block routes" do
|
271
|
-
|
271
|
+
visit("/defer").body.to_s.should == "/defer"
|
272
272
|
end
|
273
273
|
|
274
274
|
it "should not work with routes that do not have a path" do
|
275
|
-
|
275
|
+
begin
|
276
|
+
visit("/foo/bar")
|
277
|
+
fail "Should raise Webrat::PageLoadError"
|
278
|
+
rescue Webrat::PageLoadError => e
|
279
|
+
e.message.should have_xpath("//h1[contains(.,'Generation Error')]")
|
280
|
+
end
|
276
281
|
end
|
277
282
|
|
278
283
|
it "should raise an error when trying to generate a regexp route" do
|
279
|
-
|
284
|
+
begin
|
285
|
+
visit("/regex")
|
286
|
+
fail "Should raise Webrat::PageLoadError"
|
287
|
+
rescue Webrat::PageLoadError => e
|
288
|
+
e.message.should have_xpath("//h1[contains(.,'Generation Error')]")
|
289
|
+
end
|
280
290
|
end
|
281
291
|
|
282
292
|
it "should work with resource routes" do
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
293
|
+
visit("/users").body.to_s.should == "/users"
|
294
|
+
visit("/users/10").body.to_s.should == "/users/10"
|
295
|
+
visit("/users/new").body.to_s.should == "/users/new"
|
296
|
+
visit("/users/10/edit").body.to_s.should == "/users/10/edit"
|
297
|
+
visit("/profile").body.to_s.should == "/profile"
|
288
298
|
end
|
289
299
|
|
290
300
|
it "should work with nested resource routes" do
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
301
|
+
visit("/users/10/comments").body.to_s.should == "/users/10/comments"
|
302
|
+
visit("/users/10/comments/9").body.to_s.should == "/users/10/comments/9"
|
303
|
+
visit("/users/10/comments/new").body.to_s.should == "/users/10/comments/new"
|
304
|
+
visit("/users/10/comments/9/edit").body.to_s.should == "/users/10/comments/9/edit"
|
295
305
|
end
|
296
306
|
end
|
297
307
|
|
@@ -20,6 +20,7 @@ describe Merb::CookieSession do
|
|
20
20
|
end
|
21
21
|
|
22
22
|
describe Merb::CookieSession, "mixed into Merb::Controller" do
|
23
|
+
include Merb::Test::CookiesHelper
|
23
24
|
|
24
25
|
before(:all) { @controller_klass = Merb::Test::Fixtures::Controllers::SessionsController }
|
25
26
|
|
@@ -72,7 +73,7 @@ describe Merb::CookieSession, "mixed into Merb::Controller" do
|
|
72
73
|
|
73
74
|
it "should set cookie domain to default_cookie_domain if set" do
|
74
75
|
controller = dispatch_to(@controller_klass, :index, :foo => "cookie")
|
75
|
-
cookie = controller.headers
|
76
|
+
cookie = extract_cookies(controller.headers).sort[0]
|
76
77
|
cookie.should match(/_session_id=/)
|
77
78
|
cookie.should match(/domain=.localhost.com/)
|
78
79
|
end
|
@@ -33,6 +33,7 @@ describe "All session-store backends", :shared => true do
|
|
33
33
|
end
|
34
34
|
|
35
35
|
describe "All session-stores mixed into Merb::Controller", :shared => true do
|
36
|
+
include Merb::Test::CookiesHelper
|
36
37
|
|
37
38
|
before(:all) { @controller_klass = Merb::Test::Fixtures::Controllers::SessionsController }
|
38
39
|
|
@@ -48,7 +49,7 @@ describe "All session-stores mixed into Merb::Controller", :shared => true do
|
|
48
49
|
with_cookies(@controller_klass) do
|
49
50
|
controller = dispatch_to(@controller_klass, :index, :foo => session_store_type)
|
50
51
|
controller.request.session[:foo].should == session_store_type
|
51
|
-
cookie_header = controller.headers
|
52
|
+
cookie_header = extract_cookies(controller.headers).first
|
52
53
|
cookie_header.should_not match(/expires/) # sessions expire when browser quits
|
53
54
|
end
|
54
55
|
end
|
@@ -81,7 +82,7 @@ describe "All session-stores mixed into Merb::Controller", :shared => true do
|
|
81
82
|
|
82
83
|
controller = dispatch_to(@controller_klass, :destroy)
|
83
84
|
controller.request.session.should be_empty
|
84
|
-
cookie_header = controller.headers
|
85
|
+
cookie_header = extract_cookies(controller.headers).first
|
85
86
|
cookie_header.should match(/_session_id=;/)
|
86
87
|
cookie_header.should match(/01-Jan-1970/)
|
87
88
|
end
|
@@ -105,4 +106,4 @@ describe "All session-stores mixed into Merb::Controller", :shared => true do
|
|
105
106
|
end
|
106
107
|
end
|
107
108
|
|
108
|
-
end
|
109
|
+
end
|
@@ -18,7 +18,7 @@ describe Merb::Test::RequestHelper do
|
|
18
18
|
include WithPathPrefixHelper
|
19
19
|
|
20
20
|
before(:each) do
|
21
|
-
Merb::Controller._default_cookie_domain = "example.
|
21
|
+
Merb::Controller._default_cookie_domain = "example.com"
|
22
22
|
|
23
23
|
Merb::Router.prepare do
|
24
24
|
with(:controller => "merb/test/request_controller") do
|
@@ -30,123 +30,123 @@ describe Merb::Test::RequestHelper do
|
|
30
30
|
|
31
31
|
it "should remove the path_prefix configuration option" do
|
32
32
|
with_path_prefix '/foo' do
|
33
|
-
|
33
|
+
visit("/foo/path").should have_body('1')
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
37
37
|
it "should dispatch a request using GET by defalt" do
|
38
|
-
|
38
|
+
visit("/request_method").should have_body("Method - GET")
|
39
39
|
end
|
40
40
|
|
41
41
|
it "should work with have_selector" do
|
42
|
-
|
42
|
+
visit("/document").should have_selector("div div")
|
43
43
|
end
|
44
44
|
|
45
45
|
it "should work with have_xpath" do
|
46
|
-
|
46
|
+
visit("/document").should have_xpath("//div/div")
|
47
47
|
end
|
48
48
|
|
49
49
|
it "should work with have_content" do
|
50
|
-
|
50
|
+
visit("/request_method").should contain("Method")
|
51
51
|
end
|
52
52
|
|
53
53
|
it "should persist cookies across sequential cookie setting requests" do
|
54
|
-
|
55
|
-
|
54
|
+
visit("/counter").should have_body("1")
|
55
|
+
visit("/counter").should have_body("2")
|
56
56
|
end
|
57
57
|
|
58
58
|
it "should persist cookies across requests that don't return any cookie headers" do
|
59
|
-
|
60
|
-
|
61
|
-
|
59
|
+
visit("/counter").should have_body("1")
|
60
|
+
visit("/void").should have_body("Void")
|
61
|
+
visit('/counter').should have_body("2")
|
62
62
|
end
|
63
63
|
|
64
64
|
it "should delete cookies from the jar" do
|
65
|
-
|
66
|
-
|
67
|
-
|
65
|
+
visit("/counter").should have_body("1")
|
66
|
+
visit("/delete").should have_body("Delete")
|
67
|
+
visit("/counter").should have_body("1")
|
68
68
|
end
|
69
69
|
|
70
70
|
it "should be able to disable the cookie jar" do
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
71
|
+
visit("/counter", :get, :jar => nil).should have_body("1")
|
72
|
+
visit("/counter", :get, :jar => nil).should have_body("1")
|
73
|
+
visit("/counter").should have_body("1")
|
74
|
+
visit("/counter").should have_body("2")
|
75
75
|
end
|
76
76
|
|
77
77
|
it "should be able to specify separate jars" do
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
78
|
+
visit("/counter", :get, :jar => :one).should have_body("1")
|
79
|
+
visit("/counter", :get, :jar => :two).should have_body("1")
|
80
|
+
visit("/counter", :get, :jar => :one).should have_body("2")
|
81
|
+
visit("/counter", :get, :jar => :two).should have_body("2")
|
82
82
|
end
|
83
83
|
|
84
84
|
it 'should allow a cookie to be set' do
|
85
|
-
cookie =
|
86
|
-
|
87
|
-
|
85
|
+
cookie = visit("/counter").headers['Set-Cookie']
|
86
|
+
visit("/delete")
|
87
|
+
visit("/counter", :get, :cookie => cookie).should have_body("2")
|
88
88
|
end
|
89
89
|
|
90
90
|
it "should respect cookie domains when no domain is explicitly set" do
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
91
|
+
visit("http://example.com/counter").should have_body("1")
|
92
|
+
visit("http://www.example.com/counter").should have_body("2")
|
93
|
+
visit("http://example.com/counter").should have_body("3")
|
94
|
+
visit("http://www.example.com/counter").should have_body("4")
|
95
95
|
end
|
96
96
|
|
97
97
|
it "should respect the domain set in the cookie" do
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
98
|
+
visit("http://example.org/domain").should have_body("1")
|
99
|
+
visit("http://foo.example.org/domain").should have_body("1")
|
100
|
+
visit("http://example.org/domain").should have_body("1")
|
101
|
+
visit("http://foo.example.org/domain").should have_body("2")
|
102
102
|
end
|
103
103
|
|
104
104
|
it "should respect the path set in the cookie" do
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
105
|
+
visit("/path").should have_body("1")
|
106
|
+
visit("/path/zomg").should have_body("1")
|
107
|
+
visit("/path").should have_body("1")
|
108
|
+
visit("/path/zomg").should have_body("2")
|
109
109
|
end
|
110
110
|
|
111
111
|
it "should use the most specific path cookie" do
|
112
|
-
|
113
|
-
|
114
|
-
|
112
|
+
visit("/set/short")
|
113
|
+
visit("/set/short/long")
|
114
|
+
visit("/set/short/long/read").should have_body("/set/short/long")
|
115
115
|
end
|
116
116
|
|
117
117
|
it "should use the most specific path cookie even if it was defined first" do
|
118
|
-
|
119
|
-
|
120
|
-
|
118
|
+
visit("/set/short/long")
|
119
|
+
visit("/set/short")
|
120
|
+
visit("/set/short/long/read").should have_body("/set/short/long")
|
121
121
|
end
|
122
122
|
|
123
123
|
it "should leave the least specific cookie intact when specifying a more specific path" do
|
124
|
-
|
125
|
-
|
126
|
-
|
124
|
+
visit("/set/short")
|
125
|
+
visit("/set/short/long/zomg/what/hi")
|
126
|
+
visit("/set/short/long/read").should have_body("/set/short")
|
127
127
|
end
|
128
128
|
|
129
129
|
it "should use the most specific domain cookie" do
|
130
|
-
|
131
|
-
|
132
|
-
|
130
|
+
visit("http://test.com/domain_set")
|
131
|
+
visit("http://one.test.com/domain_set")
|
132
|
+
visit("http://one.test.com/domain_get").should have_body("one.test.com")
|
133
133
|
end
|
134
134
|
|
135
135
|
it "should keep the less specific domain cookie" do
|
136
|
-
|
137
|
-
|
138
|
-
|
136
|
+
visit("http://test.com/domain_set").should be_successful
|
137
|
+
visit("http://one.test.com/domain_set").should be_successful
|
138
|
+
visit("http://test.com/domain_get").should have_body("test.com")
|
139
139
|
end
|
140
140
|
|
141
141
|
it "should be able to handle multiple cookies" do
|
142
|
-
|
143
|
-
|
142
|
+
visit("/multiple").should have_body("1 - 1")
|
143
|
+
visit("/multiple").should have_body("2 - 2")
|
144
144
|
end
|
145
145
|
|
146
146
|
it "should respect the expiration" do
|
147
|
-
|
147
|
+
visit("/expires").should have_body("1")
|
148
148
|
sleep(1)
|
149
|
-
|
149
|
+
visit("/expires").should have_body("1")
|
150
150
|
end
|
151
151
|
|
152
152
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -97,6 +97,15 @@ module Merb
|
|
97
97
|
end
|
98
98
|
end
|
99
99
|
|
100
|
+
# Helper to extract cookies from headers
|
101
|
+
#
|
102
|
+
# This is needed in some specs for sessions and cookies
|
103
|
+
module Merb::Test::CookiesHelper
|
104
|
+
def extract_cookies(header)
|
105
|
+
header['Set-Cookie'] ? header['Set-Cookie'].split(Merb::Const::NEWLINE) : []
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
100
109
|
Spec::Runner.configure do |config|
|
101
110
|
config.include Merb::Test::Helper
|
102
111
|
config.include Merb::Test::RspecMatchers
|
metadata
CHANGED
@@ -1,7 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: merb-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
prerelease: true
|
5
|
+
segments:
|
6
|
+
- 1
|
7
|
+
- 1
|
8
|
+
- 0
|
9
|
+
- rc1
|
10
|
+
version: 1.1.0.rc1
|
5
11
|
platform: ruby
|
6
12
|
authors:
|
7
13
|
- Ezra Zygmuntowicz
|
@@ -9,99 +15,128 @@ autorequire:
|
|
9
15
|
bindir: bin
|
10
16
|
cert_chain: []
|
11
17
|
|
12
|
-
date: 2010-
|
18
|
+
date: 2010-03-14 00:00:00 +00:00
|
13
19
|
default_executable: merb
|
14
20
|
dependencies:
|
15
21
|
- !ruby/object:Gem::Dependency
|
16
22
|
name: bundler
|
17
|
-
|
18
|
-
|
19
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
20
25
|
requirements:
|
21
26
|
- - ">="
|
22
27
|
- !ruby/object:Gem::Version
|
28
|
+
segments:
|
29
|
+
- 0
|
30
|
+
- 9
|
31
|
+
- 3
|
23
32
|
version: 0.9.3
|
24
|
-
|
33
|
+
type: :runtime
|
34
|
+
version_requirements: *id001
|
25
35
|
- !ruby/object:Gem::Dependency
|
26
36
|
name: extlib
|
27
|
-
|
28
|
-
|
29
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
prerelease: false
|
38
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
30
39
|
requirements:
|
31
40
|
- - ">="
|
32
41
|
- !ruby/object:Gem::Version
|
42
|
+
segments:
|
43
|
+
- 0
|
44
|
+
- 9
|
45
|
+
- 13
|
33
46
|
version: 0.9.13
|
34
|
-
|
47
|
+
type: :runtime
|
48
|
+
version_requirements: *id002
|
35
49
|
- !ruby/object:Gem::Dependency
|
36
50
|
name: erubis
|
37
|
-
|
38
|
-
|
39
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
prerelease: false
|
52
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
40
53
|
requirements:
|
41
54
|
- - ">="
|
42
55
|
- !ruby/object:Gem::Version
|
56
|
+
segments:
|
57
|
+
- 2
|
58
|
+
- 6
|
59
|
+
- 2
|
43
60
|
version: 2.6.2
|
44
|
-
|
61
|
+
type: :runtime
|
62
|
+
version_requirements: *id003
|
45
63
|
- !ruby/object:Gem::Dependency
|
46
64
|
name: rake
|
47
|
-
|
48
|
-
|
49
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
prerelease: false
|
66
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
50
67
|
requirements:
|
51
68
|
- - ">="
|
52
69
|
- !ruby/object:Gem::Version
|
70
|
+
segments:
|
71
|
+
- 0
|
53
72
|
version: "0"
|
54
|
-
|
73
|
+
type: :runtime
|
74
|
+
version_requirements: *id004
|
55
75
|
- !ruby/object:Gem::Dependency
|
56
76
|
name: rspec
|
57
|
-
|
58
|
-
|
59
|
-
version_requirements: !ruby/object:Gem::Requirement
|
77
|
+
prerelease: false
|
78
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
60
79
|
requirements:
|
61
80
|
- - ">="
|
62
81
|
- !ruby/object:Gem::Version
|
82
|
+
segments:
|
83
|
+
- 0
|
63
84
|
version: "0"
|
64
|
-
|
85
|
+
type: :runtime
|
86
|
+
version_requirements: *id005
|
65
87
|
- !ruby/object:Gem::Dependency
|
66
88
|
name: rack
|
67
|
-
|
68
|
-
|
69
|
-
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
prerelease: false
|
90
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
70
91
|
requirements:
|
71
92
|
- - ">="
|
72
93
|
- !ruby/object:Gem::Version
|
94
|
+
segments:
|
95
|
+
- 0
|
73
96
|
version: "0"
|
74
|
-
|
97
|
+
type: :runtime
|
98
|
+
version_requirements: *id006
|
75
99
|
- !ruby/object:Gem::Dependency
|
76
100
|
name: mime-types
|
77
|
-
|
78
|
-
|
79
|
-
version_requirements: !ruby/object:Gem::Requirement
|
101
|
+
prerelease: false
|
102
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
80
103
|
requirements:
|
81
104
|
- - ">="
|
82
105
|
- !ruby/object:Gem::Version
|
106
|
+
segments:
|
107
|
+
- 1
|
108
|
+
- 16
|
83
109
|
version: "1.16"
|
84
|
-
|
110
|
+
type: :runtime
|
111
|
+
version_requirements: *id007
|
85
112
|
- !ruby/object:Gem::Dependency
|
86
113
|
name: rspec
|
87
|
-
|
88
|
-
|
89
|
-
version_requirements: !ruby/object:Gem::Requirement
|
114
|
+
prerelease: false
|
115
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
90
116
|
requirements:
|
91
117
|
- - ">="
|
92
118
|
- !ruby/object:Gem::Version
|
119
|
+
segments:
|
120
|
+
- 1
|
121
|
+
- 2
|
122
|
+
- 9
|
93
123
|
version: 1.2.9
|
94
|
-
|
124
|
+
type: :development
|
125
|
+
version_requirements: *id008
|
95
126
|
- !ruby/object:Gem::Dependency
|
96
127
|
name: webrat
|
97
|
-
|
98
|
-
|
99
|
-
version_requirements: !ruby/object:Gem::Requirement
|
128
|
+
prerelease: false
|
129
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
100
130
|
requirements:
|
101
131
|
- - ">="
|
102
132
|
- !ruby/object:Gem::Version
|
133
|
+
segments:
|
134
|
+
- 0
|
135
|
+
- 3
|
136
|
+
- 1
|
103
137
|
version: 0.3.1
|
104
|
-
|
138
|
+
type: :development
|
139
|
+
version_requirements: *id009
|
105
140
|
description: Merb. Pocket rocket web framework.
|
106
141
|
email: ez@engineyard.com
|
107
142
|
executables:
|
@@ -2360,18 +2395,22 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
2360
2395
|
requirements:
|
2361
2396
|
- - ">="
|
2362
2397
|
- !ruby/object:Gem::Version
|
2398
|
+
segments:
|
2399
|
+
- 0
|
2363
2400
|
version: "0"
|
2364
|
-
version:
|
2365
2401
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
2366
2402
|
requirements:
|
2367
2403
|
- - ">"
|
2368
2404
|
- !ruby/object:Gem::Version
|
2405
|
+
segments:
|
2406
|
+
- 1
|
2407
|
+
- 3
|
2408
|
+
- 1
|
2369
2409
|
version: 1.3.1
|
2370
|
-
version:
|
2371
2410
|
requirements: []
|
2372
2411
|
|
2373
2412
|
rubyforge_project:
|
2374
|
-
rubygems_version: 1.3.
|
2413
|
+
rubygems_version: 1.3.6
|
2375
2414
|
signing_key:
|
2376
2415
|
specification_version: 3
|
2377
2416
|
summary: Merb plugin that provides caching (page, action, fragment, object)
|