syro 3.1.1 → 3.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/syro.rb +18 -7
- data/syro.gemspec +1 -1
- data/test/all.rb +15 -0
- metadata +3 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7c431564114919bd3cb431153267795d9a959a621d0cdafc20949a6b1fc23810
|
4
|
+
data.tar.gz: 3b8d7e682fec564707d320a351eb3d76f7a044e23619a4d15962cb45ac1cb2db
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aafde14a3978fa175bee9e566d2d7157e62c498dbb78bc704ee022791650eab39f22edf9b49a71de7658741e531e0d975a3738a68eb59c36d37fd2c6dd7da4a3
|
7
|
+
data.tar.gz: 16f2d0621fee223a20f1b669d61c9596577c5e23b00e50b93ed9bc5dd69fed7646bab7127ee49453a8fd6301c5475108447f7cc14d5b4a0e58836ec4a1a35095
|
data/lib/syro.rb
CHANGED
@@ -209,11 +209,23 @@ class Syro
|
|
209
209
|
end
|
210
210
|
|
211
211
|
class Deck
|
212
|
-
|
213
|
-
|
214
|
-
|
212
|
+
|
213
|
+
# Attaches the supplied block to a subclass of Deck as #dispatch!
|
214
|
+
# Returns the subclassed Deck.
|
215
|
+
def self.implement(&code)
|
216
|
+
Class.new(self) do
|
217
|
+
define_method(:dispatch!, code)
|
218
|
+
private :dispatch!
|
219
|
+
|
220
|
+
# Instead of calling inspect on this anonymous class,
|
221
|
+
# defer to the superclass which is likely Syro::Deck.
|
222
|
+
define_method(:inspect) do
|
223
|
+
self.class.superclass.inspect
|
224
|
+
end
|
215
225
|
end
|
226
|
+
end
|
216
227
|
|
228
|
+
module API
|
217
229
|
def env
|
218
230
|
@syro_env
|
219
231
|
end
|
@@ -268,7 +280,7 @@ class Syro
|
|
268
280
|
@syro_inbox = inbox
|
269
281
|
|
270
282
|
catch(:halt) do
|
271
|
-
|
283
|
+
dispatch!
|
272
284
|
finish!
|
273
285
|
end
|
274
286
|
end
|
@@ -420,11 +432,10 @@ class Syro
|
|
420
432
|
end
|
421
433
|
|
422
434
|
def initialize(deck = Deck, &code)
|
423
|
-
@deck = deck
|
424
|
-
@code = code
|
435
|
+
@deck = deck.implement(&code)
|
425
436
|
end
|
426
437
|
|
427
438
|
def call(env, inbox = env.fetch(Syro::INBOX, {}))
|
428
|
-
@deck.new
|
439
|
+
@deck.new.call(env, inbox)
|
429
440
|
end
|
430
441
|
end
|
data/syro.gemspec
CHANGED
data/test/all.rb
CHANGED
@@ -117,6 +117,10 @@ script_name = Syro.new do
|
|
117
117
|
end
|
118
118
|
end
|
119
119
|
|
120
|
+
exception = Syro.new do
|
121
|
+
get { res.text(this_method_does_not_exist) }
|
122
|
+
end
|
123
|
+
|
120
124
|
app = Syro.new do
|
121
125
|
get do
|
122
126
|
res.write "GET /"
|
@@ -260,6 +264,10 @@ app = Syro.new do
|
|
260
264
|
on "script" do
|
261
265
|
run(script_name)
|
262
266
|
end
|
267
|
+
|
268
|
+
on "exception" do
|
269
|
+
run(exception)
|
270
|
+
end
|
263
271
|
end
|
264
272
|
|
265
273
|
setup do
|
@@ -443,3 +451,10 @@ test "script name and path info" do |f|
|
|
443
451
|
assert_equal 200, f.last_response.status
|
444
452
|
assert_equal "/script/path", f.last_response.body
|
445
453
|
end
|
454
|
+
|
455
|
+
test "deck exceptions reference a named class" do |f|
|
456
|
+
f.get("/exception")
|
457
|
+
rescue NameError => exception
|
458
|
+
ensure
|
459
|
+
assert exception.to_s.include?("Syro::Deck")
|
460
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: syro
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michel Martens
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-02-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: seg
|
@@ -102,8 +102,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
102
102
|
- !ruby/object:Gem::Version
|
103
103
|
version: '0'
|
104
104
|
requirements: []
|
105
|
-
|
106
|
-
rubygems_version: 2.7.6
|
105
|
+
rubygems_version: 3.0.2
|
107
106
|
signing_key:
|
108
107
|
specification_version: 4
|
109
108
|
summary: Simple router
|