syro 3.1.1 → 3.2.0
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 +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
|