scorched 1.0.0.pre3 → 1.0.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: df1c61cb8ccb03b0bae14dda80b50f22e00530be
4
- data.tar.gz: 8782b7f14fcf6986d200dcb2964f30604c78be1b
2
+ SHA256:
3
+ metadata.gz: 867ade7529bcd2c1aef6c5ae9ec3898078f1aedc65e190d29fd03781f7fbaabb
4
+ data.tar.gz: 7275bd4b007d91441a06cd2a90e58fac6e49ea598fa146964fb074cc03af2f37
5
5
  SHA512:
6
- metadata.gz: b4ccefaee00f1c66b57736510051d81a6381b840b8daee5f4cb0b69f17591b13a43c29568f8cebba6b7ba179d85ca4e6bf578c3d049486b7d8f727c543b7d942
7
- data.tar.gz: '05990c3fa144a24f72557a6379aeab375a86827b7c196f5aeaa7b1dbb79f44f9d7d6c19023131443c058baab3e9cbd51593f4469246c739dda27f59eb236b0df'
6
+ metadata.gz: 0a0b3feb7e16e82571277ec4c97f8555b268013cbb8172e464a3d30fd4639e66c3ff817b9f165e5f4a2b4ef7b1470d28aaad4568dda1bad4cb56c390bf4a9cce
7
+ data.tar.gz: 9dbfa1171f29c6037c173ece4f584a828c073671896c2f6b40dcc49dd37269ac5ad096909ec4d77bfdb88b212c0d4278c39206d370a30fc37aa9a836c77a73dc
data/CHANGES.md CHANGED
@@ -1,8 +1,16 @@
1
1
  Changelog
2
2
  =========
3
3
 
4
- _Note that Scorched is yet to reach a v1.0 release. This means breaking changes may still be made. If upgrading the version of Scorched for your project, review this changelog carefully._
5
-
4
+ ### v1.0.2
5
+ * Now requiring CGI instead of URI library as per v1.0.1 deprecation fixes.
6
+ ### v1.0.1
7
+ * Fixed Ruby 2.7 deprecations
8
+ ### v1.0.0
9
+ * Updated all dependencies. Ready for 1.0.0 release.
10
+ ### v1.0.0.pre5
11
+ * Log level now defaults to :warn for every environment except development, which defaults to :debug
12
+ ### v1.0.0.pre4
13
+ * Added `dispatched` condition which performs a similar role to the recently removed `handled` condition.
6
14
  ### v1.0.0.pre3
7
15
  * APP_ENV now preferred over RACK_ENV for setting the environment.
8
16
  ### v1.0.0.pre2
@@ -18,7 +18,7 @@ module Scorched
18
18
  config << {
19
19
  :auto_pass => false, # Automatically _pass_ request back to outer controller if no route matches.
20
20
  :cache_templates => true,
21
- :logger => Logger.new(STDOUT),
21
+ :logger => nil,
22
22
  :show_exceptions => false,
23
23
  :show_http_error_pages => false, # If true, shows the default Scorched HTTP error page.
24
24
  :static_dir => false, # The directory Scorched should serve static files from. Set to false if web server or anything else is serving static files.
@@ -35,6 +35,7 @@ module Scorched
35
35
  }
36
36
 
37
37
  if ENV['APP_ENV'] == 'development'
38
+ config[:logger] = Logger.new(STDOUT)
38
39
  config[:show_exceptions] = true
39
40
  config[:static_dir] = 'public'
40
41
  config[:cache_templates] = false
@@ -51,6 +52,9 @@ module Scorched
51
52
  content_type: proc { |content_types|
52
53
  [*content_types].include? env['CONTENT_TYPE']
53
54
  },
55
+ dispatched: proc { |bool|
56
+ !!@_dispatched == bool
57
+ },
54
58
  encoding: proc { |encodings|
55
59
  [*encodings].any? { |encoding| env['rack-accept.request'].encoding? encoding }
56
60
  },
@@ -152,7 +156,7 @@ module Scorched
152
156
  else
153
157
  controller = klass
154
158
  end
155
- self << {pattern: pattern, target: controller}.merge(mapping)
159
+ self.map **{pattern: pattern, target: controller}.merge(mapping)
156
160
  controller
157
161
  end
158
162
 
@@ -176,7 +180,7 @@ module Scorched
176
180
  response
177
181
  end
178
182
  [*pattern].compact.each do |pattern|
179
- self << {pattern: compile(pattern, true), priority: priority, conditions: conds, target: target}
183
+ self.map pattern: compile(pattern, true), priority: priority, conditions: conds, target: target
180
184
  end
181
185
  target
182
186
  end
@@ -462,7 +466,7 @@ module Scorched
462
466
  if value.empty?
463
467
  request.cookies[name]
464
468
  else
465
- value = Hash === value[0] ? value[0] : {value: value}
469
+ value = (Hash === value[0]) ? value[0] : {value: value[0]}
466
470
  if value[:value].nil?
467
471
  response.delete_cookie(name, value)
468
472
  else
@@ -1,4 +1,4 @@
1
- require 'uri'
1
+ require 'cgi'
2
2
 
3
3
  module Scorched
4
4
  class Request < Rack::Request
@@ -33,7 +33,7 @@ module Scorched
33
33
  # The unescaped URL, excluding the escaped forward-slash and percent. The resulting string will always be safe
34
34
  # to unescape again in situations where the forward-slash or percent are expected and valid characters.
35
35
  def unescaped_path
36
- path_info.split(/(%25|%2F)/i).each_slice(2).map { |v, m| URI.unescape(v) << (m || '') }.join('')
36
+ path_info.split(/(%25|%2F)/i).each_slice(2).map { |v, m| CGI.unescape(v) << (m || '') }.join('')
37
37
  end
38
38
 
39
39
  private
@@ -1,3 +1,3 @@
1
1
  module Scorched
2
- VERSION = '1.0.0.pre3'
2
+ VERSION = '1.0.2'
3
3
  end
@@ -10,7 +10,6 @@ Gem::Specification.new 'scorched', Scorched::VERSION do |s|
10
10
  s.license = 'MIT'
11
11
  s.files = Dir.glob(`git ls-files`.split("\n") - %w[.gitignore])
12
12
  s.test_files = Dir.glob('spec/**/*_spec.rb')
13
- s.has_rdoc = 'yard'
14
13
 
15
14
  s.required_ruby_version = '>= 2.0.0'
16
15
 
@@ -18,7 +17,7 @@ Gem::Specification.new 'scorched', Scorched::VERSION do |s|
18
17
  s.add_dependency 'rack-accept', '~> 0.4' # Used for Accept-Charset, Accept-Encoding and Accept-Language headers.
19
18
  s.add_dependency 'scorched-accept', '~> 0.1' # Used for Accept header.
20
19
  s.add_dependency 'tilt', '~> 2.0'
21
- s.add_development_dependency 'rack-test', '~> 0.6'
22
- s.add_development_dependency 'rspec', '~> 3.4'
23
- s.add_development_dependency 'rake', '~> 10.4'
20
+ s.add_development_dependency 'rack-test', '>= 1.0'
21
+ s.add_development_dependency 'rspec', '>= 3.4'
22
+ s.add_development_dependency 'rake', '>= 10.4'
24
23
  end
@@ -24,13 +24,13 @@ module Scorched
24
24
  end
25
25
 
26
26
  it "handles a root rack call correctly" do
27
- app << {pattern: '/$', target: generic_handler}
27
+ app.map pattern: '/$', target: generic_handler
28
28
  response = rt.get '/'
29
29
  response.status.should == 200
30
30
  end
31
31
 
32
32
  it "does not maintain state between requests" do
33
- app << {pattern: '/state', target: proc { |env| [200, {}, [@state = 1 + @state.to_i]] }}
33
+ app.map pattern: '/state', target: proc { |env| [200, {}, [@state = 1 + @state.to_i]] }
34
34
  response = rt.get '/state'
35
35
  response.body.should == '1'
36
36
  response = rt.get '/state'
@@ -39,54 +39,54 @@ module Scorched
39
39
 
40
40
  it "raises exception when invalid mapping hash given" do
41
41
  expect {
42
- app << {pattern: '/'}
42
+ app.map(pattern: '/')
43
43
  }.to raise_error(ArgumentError)
44
44
  expect {
45
- app << {target: generic_handler}
45
+ app.map(target: generic_handler)
46
46
  }.to raise_error(ArgumentError)
47
47
  end
48
48
  end
49
49
 
50
50
  describe "URL matching" do
51
51
  it 'always matches from the beginning of the URL' do
52
- app << {pattern: 'about', target: generic_handler}
52
+ app.map pattern: 'about', target: generic_handler
53
53
  response = rt.get '/about'
54
54
  response.status.should == 404
55
55
  end
56
56
 
57
57
  it "matches eagerly by default" do
58
58
  req = nil
59
- app << {pattern: '/*', target: proc do |env|
59
+ app.map pattern: '/*', target: proc { |env|
60
60
  req = request; [200, {}, ['ok']]
61
- end}
61
+ }
62
62
  response = rt.get '/about'
63
63
  req.captures.should == ['about']
64
64
  end
65
65
 
66
66
  it "can be forced to match end of URL" do
67
- app << {pattern: '/about$', target: generic_handler}
67
+ app.map pattern: '/about$', target: generic_handler
68
68
  response = rt.get '/about/us'
69
69
  response.status.should == 404
70
- app << {pattern: '/about', target: generic_handler}
70
+ app.map pattern: '/about', target: generic_handler
71
71
  response = rt.get '/about/us'
72
72
  response.status.should == 200
73
73
  end
74
74
 
75
75
  it "unescapes all characters except for the forward-slash and percent sign" do
76
- app << {pattern: '/a (quite) big fish', target: generic_handler}
76
+ app.map pattern: '/a (quite) big fish', target: generic_handler
77
77
  rt.get('/a%20%28quite%29%20big%20fish').status.should == 200
78
- app << {pattern: '/article/100%25 big%2Fsmall', target: generic_handler}
78
+ app.map pattern: '/article/100%25 big%2Fsmall', target: generic_handler
79
79
  rt.get('/article/100%25%20big%2Fsmall').status.should == 200
80
- app << {pattern: '/*$', target: generic_handler}
80
+ app.map pattern: '/*$', target: generic_handler
81
81
  rt.get('/page%2Fabout').status.should == 200
82
82
  rt.get('/page/about').status.should == 404
83
83
  end
84
84
 
85
85
  it "unmatched path doesn't always begin with a forward slash" do
86
86
  gh = generic_handler
87
- app << {pattern: '/ab', target: Class.new(Scorched::Controller) do
87
+ app.map pattern: '/ab', target: Class.new(Scorched::Controller) {
88
88
  map(pattern: 'out', target: gh)
89
- end}
89
+ }
90
90
  resp = rt.get('/about')
91
91
  resp.status.should == 200
92
92
  resp.body.should == "ok"
@@ -94,119 +94,119 @@ module Scorched
94
94
 
95
95
  it "unmatched path begins with forward slash if last match was up to or included a forward slash" do
96
96
  gh = generic_handler
97
- app << {pattern: '/about/', target: Class.new(Scorched::Controller) do
97
+ app.map pattern: '/about/', target: Class.new(Scorched::Controller) {
98
98
  map(pattern: '/us', target: gh)
99
- end}
100
- app << {pattern: '/contact', target: Class.new(Scorched::Controller) do
99
+ }
100
+ app.map pattern: '/contact', target: Class.new(Scorched::Controller) {
101
101
  map(pattern: '/us', target: gh)
102
- end}
102
+ }
103
103
  rt.get('/about/us').body.should == "ok"
104
104
  rt.get('/contact/us').body.should == "ok"
105
105
  end
106
106
 
107
107
  it "can match anonymous wildcards" do
108
108
  req = nil
109
- app << {pattern: '/anon/*/**', target: proc do |env|
109
+ app.map pattern: '/anon/*/**', target: proc { |env|
110
110
  req = request; [200, {}, ['ok']]
111
- end}
111
+ }
112
112
  response = rt.get '/anon/jeff/has/crabs'
113
113
  req.captures.should == ['jeff', 'has/crabs']
114
114
  end
115
115
 
116
116
  it "can match named wildcards (ignoring anonymous captures)" do
117
117
  req = nil
118
- app << {pattern: '/anon/:name/*/::infliction', target: proc do |env|
118
+ app.map pattern: '/anon/:name/*/::infliction', target: proc { |env|
119
119
  req = request; [200, {}, ['ok']]
120
- end}
120
+ }
121
121
  response = rt.get '/anon/jeff/smith/has/crabs'
122
122
  req.captures.should == {name: 'jeff', infliction: 'has/crabs'}
123
123
  end
124
124
 
125
125
  example "wildcards match one or more characters" do
126
- app << {pattern: '/*', target: proc { |env| [200, {}, ['ok']] }}
126
+ app.map pattern: '/*', target: proc { |env| [200, {}, ['ok']] }
127
127
  rt.get('/').status.should == 404
128
128
  rt.get('/dog').status.should == 200
129
129
  app.mappings.clear
130
- app << {pattern: '/**', target: proc { |env| [200, {}, ['ok']] }}
130
+ app.map pattern: '/**', target: proc { |env| [200, {}, ['ok']] }
131
131
  rt.get('/').status.should == 404
132
132
  rt.get('/dog/cat').status.should == 200
133
133
  app.mappings.clear
134
- app << {pattern: '/:page', target: proc { |env| [200, {}, ['ok']] }}
134
+ app.map pattern: '/:page', target: proc { |env| [200, {}, ['ok']] }
135
135
  rt.get('/').status.should == 404
136
136
  rt.get('/dog').status.should == 200
137
137
  app.mappings.clear
138
- app << {pattern: '/::page', target: proc { |env| [200, {}, ['ok']] }}
138
+ app.map pattern: '/::page', target: proc { |env| [200, {}, ['ok']] }
139
139
  rt.get('/').status.should == 404
140
140
  rt.get('/dog/cat').status.should == 200
141
141
  end
142
142
 
143
143
  example "wildcards can optionally match zero or more characters" do
144
- app << {pattern: '/*?', target: proc { |env| [200, {}, ['ok']] }}
144
+ app.map pattern: '/*?', target: proc { |env| [200, {}, ['ok']] }
145
145
  rt.get('/').status.should == 200
146
146
  rt.get('/dog').status.should == 200
147
147
  app.mappings.clear
148
- app << {pattern: '/**?', target: proc { |env| [200, {}, ['ok']] }}
148
+ app.map pattern: '/**?', target: proc { |env| [200, {}, ['ok']] }
149
149
  rt.get('/').status.should == 200
150
150
  rt.get('/dog/cat').status.should == 200
151
151
  app.mappings.clear
152
- app << {pattern: '/:page?', target: proc { |env| [200, {}, ['ok']] }}
152
+ app.map pattern: '/:page?', target: proc { |env| [200, {}, ['ok']] }
153
153
  rt.get('/').status.should == 200
154
154
  rt.get('/dog').status.should == 200
155
155
  app.mappings.clear
156
- app << {pattern: '/::page?', target: proc { |env| [200, {}, ['ok']] }}
156
+ app.map pattern: '/::page?', target: proc { |env| [200, {}, ['ok']] }
157
157
  rt.get('/').status.should == 200
158
158
  rt.get('/dog/cat').status.should == 200
159
159
  end
160
160
 
161
161
  it "can match regex and preserve anonymous captures" do
162
162
  req = nil
163
- app << {pattern: %r{/anon/([^/]+)/(.+)}, target: proc do |env|
163
+ app.map pattern: %r{/anon/([^/]+)/(.+)}, target: proc { |env|
164
164
  req = request; [200, {}, ['ok']]
165
- end}
165
+ }
166
166
  response = rt.get '/anon/jeff/has/crabs'
167
167
  req.captures.should == ['jeff', 'has/crabs']
168
168
  end
169
169
 
170
170
  it "can match regex and preserve named captures (ignoring anonymous captures)" do
171
171
  req = nil
172
- app << {pattern: %r{/anon/(?<name>[^/]+)/([^/]+)/(?<infliction>.+)}, target: proc do |env|
172
+ app.map pattern: %r{/anon/(?<name>[^/]+)/([^/]+)/(?<infliction>.+)}, target: proc { |env|
173
173
  req = request; [200, {}, ['ok']]
174
- end}
174
+ }
175
175
  response = rt.get '/anon/jeff/smith/has/crabs'
176
176
  req.captures.should == {name: 'jeff', infliction: 'has/crabs'}
177
177
  end
178
178
 
179
179
  it "can use symbol matchers" do
180
- app << {pattern: '/:numeric', target: proc { |env| [200, {}, ['ok']] }}
180
+ app.map pattern: '/:numeric', target: proc { |env| [200, {}, ['ok']] }
181
181
  rt.get('/45').status.should == 200
182
182
  rt.get('/dog45').status.should == 404
183
183
  req = nil
184
- app << {pattern: '/:alpha_numeric', target: proc { |env| req = request; [200, {}, ['ok']] }}
184
+ app.map pattern: '/:alpha_numeric', target: proc { |env| req = request; [200, {}, ['ok']] }
185
185
  rt.get('/dog45').status.should == 200
186
186
  req.captures[:alpha_numeric].should == 'dog45'
187
187
  rt.get('/_dog45').status.should == 404
188
188
  end
189
189
 
190
190
  it "can coerce symbol-matched values" do
191
- app << {pattern: '/:numeric', target: proc { |env| [200, {}, [request.captures[:numeric].class.name]] }}
191
+ app.map pattern: '/:numeric', target: proc { |env| [200, {}, [request.captures[:numeric].class.name]] }
192
192
  rt.get('/45').body.should == 'Integer'
193
193
  end
194
194
 
195
195
  it "matches routes based on priority, otherwise giving precedence to those defined first" do
196
196
  order = []
197
- app << {pattern: '/', priority: -1, target: proc { |env| order << 'four'; [200, {}, ['ok']] }}
198
- app << {pattern: '/', target: proc { |env| order << 'two'; throw :pass }}
199
- app << {pattern: '/', target: proc { |env| order << 'three'; throw :pass }}
200
- app << {pattern: '/', priority: 2, target: proc { |env| order << 'one'; throw :pass }}
197
+ app.map pattern: '/', priority: -1, target: proc { |env| order << 'four'; [200, {}, ['ok']] }
198
+ app.map pattern: '/', target: proc { |env| order << 'two'; throw :pass }
199
+ app.map pattern: '/', target: proc { |env| order << 'three'; throw :pass }
200
+ app.map pattern: '/', priority: 2, target: proc { |env| order << 'one'; throw :pass }
201
201
  rt.get('/').body.should == 'ok'
202
202
  order.should == %w{one two three four}
203
203
  end
204
204
 
205
205
  it "finds the best match for the media type whilst respecting priority and definition order" do
206
- app << {pattern: '/', target: proc { |env| [200, {}, ['anything']] }}
207
- app << {pattern: '/', conditions: {media_type: 'application/json'}, target: proc { |env| [200, {}, ['application/json']] }}
208
- app << {pattern: '/', conditions: {media_type: 'text/html'}, target: proc { |env| [200, {}, ['text/html']] }}
209
- app << {pattern: '/', priority: 1, target: proc { |env| [200, {}, ['anything_high_priority']] }}
206
+ app.map pattern: '/', target: proc { |env| [200, {}, ['anything']] }
207
+ app.map pattern: '/', conditions: {media_type: 'application/json'}, target: proc { |env| [200, {}, ['application/json']] }
208
+ app.map pattern: '/', conditions: {media_type: 'text/html'}, target: proc { |env| [200, {}, ['text/html']] }
209
+ app.map pattern: '/', priority: 1, target: proc { |env| [200, {}, ['anything_high_priority']] }
210
210
  rt.get('/', {}, 'HTTP_ACCEPT' => 'application/json, */*;q=0.5').body.should == 'anything_high_priority'
211
211
  app.mappings.pop
212
212
  rt.get('/', {}, 'HTTP_ACCEPT' => 'application/json;q=0.5, text/html').body.should == 'text/html'
@@ -224,14 +224,14 @@ module Scorched
224
224
  end
225
225
 
226
226
  it "executes route only if all conditions return true" do
227
- app << {pattern: '/$', conditions: {method: 'POST'}, target: generic_handler}
227
+ app.map pattern: '/$', conditions: {method: 'POST'}, target: generic_handler
228
228
  response = rt.get "/"
229
229
  response.status.should be_between(400, 499)
230
230
  response = rt.post "/"
231
231
  response.status.should == 200
232
232
 
233
233
  app.conditions[:has_name] = proc { |name| request.GET['name'] }
234
- app << {pattern: '/about', conditions: {method: ['GET', 'POST'], has_name: 'Ronald'}, target: generic_handler}
234
+ app.map pattern: '/about', conditions: {method: ['GET', 'POST'], has_name: 'Ronald'}, target: generic_handler
235
235
  response = rt.get "/about"
236
236
  response.status.should be_between(400, 499)
237
237
  response = rt.get "/about", name: 'Ronald'
@@ -239,21 +239,21 @@ module Scorched
239
239
  end
240
240
 
241
241
  it "raises exception when condition doesn't exist or is invalid" do
242
- app << {pattern: '/', conditions: {surprise_christmas_turkey: true}, target: generic_handler}
242
+ app.map pattern: '/', conditions: {surprise_christmas_turkey: true}, target: generic_handler
243
243
  expect {
244
244
  rt.get "/"
245
245
  }.to raise_error(Scorched::Error)
246
246
  end
247
247
 
248
248
  it "falls through to next route when conditions are not met" do
249
- app << {pattern: '/', conditions: {method: 'POST'}, target: proc { |env| [200, {}, ['post']] }}
250
- app << {pattern: '/', conditions: {method: 'GET'}, target: proc { |env| [200, {}, ['get']] }}
249
+ app.map pattern: '/', conditions: {method: 'POST'}, target: proc { |env| [200, {}, ['post']] }
250
+ app.map pattern: '/', conditions: {method: 'GET'}, target: proc { |env| [200, {}, ['get']] }
251
251
  rt.get("/").body.should == 'get'
252
252
  rt.post("/").body.should == 'post'
253
253
  end
254
254
 
255
255
  it "inverts the conditions if it's referenced with a trailing exclamation mark" do
256
- app << {pattern: '/', conditions: {method!: 'GET'}, target: proc { |env| [200, {}, ['ok']] }}
256
+ app.map pattern: '/', conditions: {method!: 'GET'}, target: proc { |env| [200, {}, ['ok']] }
257
257
  rt.get("/").status.should == 405
258
258
  rt.post("/").status.should == 200
259
259
  end
@@ -272,7 +272,7 @@ module Scorched
272
272
  wrapped_block = app.route(&block)
273
273
  app.mappings.length.should == 0
274
274
  block.should_not == wrapped_block
275
- app << {pattern: '/*', target: wrapped_block}
275
+ app.map pattern: '/*', target: wrapped_block
276
276
  rt.get('/turkey').body.should == 'turkey'
277
277
  end
278
278
 
@@ -319,9 +319,9 @@ module Scorched
319
319
 
320
320
  describe "sub-controllers" do
321
321
  it "should ignore the already matched portions of the path" do
322
- app << {pattern: '/article', target: Class.new(Scorched::Controller) do
322
+ app.map pattern: '/article', target: Class.new(Scorched::Controller) {
323
323
  get('/*') { |title| title }
324
- end}
324
+ }
325
325
  rt.get('/article/hello-world').body.should == 'hello-world'
326
326
  end
327
327
 
@@ -916,7 +916,7 @@ module Scorched
916
916
  get('/hello') { 'hello' }
917
917
  after { response.status = 600 }
918
918
  end
919
- app << {pattern: '/', target: sub}
919
+ app.map pattern: '/', target: sub
920
920
  app.get('/') { 'ok' }
921
921
  rt.get('/').body.should == 'ok'
922
922
  rt.get('/').status.should == 200
@@ -1096,7 +1096,7 @@ module Scorched
1096
1096
  render(:'main.erb').should == "3 for me"
1097
1097
  end
1098
1098
  app.get('/full_path') do
1099
- render(:'views/main.erb', {layout: :'views/layout.erb', dir: nil}).should == "(3 for me)"
1099
+ render(:'views/main.erb', **{layout: :'views/layout.erb', dir: nil}).should == "(3 for me)"
1100
1100
  end
1101
1101
  app.render_defaults[:dir] = 'views'
1102
1102
  rt.get('/')
@@ -44,4 +44,7 @@ RSpec.configure do |c|
44
44
  c.alias_example_to :they
45
45
  # c.backtrace_clean_patterns = []
46
46
  c.include GlobalConfig
47
+ c.expect_with :rspec do |expectations|
48
+ expectations.syntax = [:should, :expect]
49
+ end
47
50
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: scorched
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.pre3
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tom Wardrop
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-07-04 00:00:00.000000000 Z
11
+ date: 2021-01-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack
@@ -70,42 +70,42 @@ dependencies:
70
70
  name: rack-test
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - "~>"
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
- version: '0.6'
75
+ version: '1.0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - "~>"
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
- version: '0.6'
82
+ version: '1.0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rspec
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - "~>"
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
89
  version: '3.4'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - "~>"
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '3.4'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: rake
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - "~>"
101
+ - - ">="
102
102
  - !ruby/object:Gem::Version
103
103
  version: '10.4'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - "~>"
108
+ - - ">="
109
109
  - !ruby/object:Gem::Version
110
110
  version: '10.4'
111
111
  description: A light-weight Sinatra-inspired web framework for web sites and applications
@@ -186,12 +186,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
186
186
  version: 2.0.0
187
187
  required_rubygems_version: !ruby/object:Gem::Requirement
188
188
  requirements:
189
- - - ">"
189
+ - - ">="
190
190
  - !ruby/object:Gem::Version
191
- version: 1.3.1
191
+ version: '0'
192
192
  requirements: []
193
- rubyforge_project:
194
- rubygems_version: 2.6.12
193
+ rubygems_version: 3.1.2
195
194
  signing_key:
196
195
  specification_version: 4
197
196
  summary: Light-weight, DRY as a desert, web framework for Ruby