kawaii-core 0.1.1 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +35 -4
- data/lib/kawaii/base.rb +14 -4
- data/lib/kawaii/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 34266b059482427cf4b508d369a3a82eee1c13b9
|
4
|
+
data.tar.gz: a44b19872324040f54441b625dd107452e7e88af
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f608c27a33e224eee46f7a3f6d9adb3b9e5cda66c1d98847077ec80b6667b5aba4fbdcf953f685a879f1fdf33db9cdc195485fe541dfa24c4d1a18fc232ae3f8
|
7
|
+
data.tar.gz: 62f772e16fd0b43d6d7adfc3a038eb247a3c3100dc1999d1f6fc8abafc15be4bb714e2c8f6286c2d4c3b613493901291b76960a3bfe16fd4e1166e9ecfbbe64d
|
data/README.md
CHANGED
@@ -348,6 +348,37 @@ end
|
|
348
348
|
|
349
349
|
Just like with `not_found`, you need to return a well-formed Rack response Array.
|
350
350
|
|
351
|
+
## Middleware
|
352
|
+
|
353
|
+
To use Rack middleware, you have two options. You can either use a rackup file or use the `use` method in a
|
354
|
+
class deriving from `Kawaii::Base`. For the former, there's plenty of information on the Internet
|
355
|
+
including this [more advanced tutorial](https://blog.engineyard.com/2015/understanding-rack-apps-and-middleware).
|
356
|
+
|
357
|
+
To use middleware in `Kawaii::Base`-derived class, use the `use` method (no pun intended). Example:
|
358
|
+
|
359
|
+
```ruby
|
360
|
+
class AppendWorld
|
361
|
+
def initialize(app)
|
362
|
+
@app = app
|
363
|
+
end
|
364
|
+
def call(env)
|
365
|
+
status, headers, response = @app.call(env)
|
366
|
+
response[0] += 'world!' # Quick & dirty.
|
367
|
+
[status, headers, response]
|
368
|
+
end
|
369
|
+
end
|
370
|
+
|
371
|
+
class MyApp < Kawaii::Base
|
372
|
+
get '/' do
|
373
|
+
'Hello, '
|
374
|
+
end
|
375
|
+
|
376
|
+
use AppendWorld
|
377
|
+
end
|
378
|
+
```
|
379
|
+
|
380
|
+
Visiting the `/` path will render 'Hello, world!'.
|
381
|
+
|
351
382
|
## Resources
|
352
383
|
|
353
384
|
1. [API reference](http://bilus.github.io/kawaii/Kawaii.html).
|
@@ -422,13 +453,13 @@ X Custom error handling (intercept exceptions, 404 what else?).
|
|
422
453
|
|
423
454
|
X Rubocop-compliant.
|
424
455
|
|
425
|
-
|
456
|
+
X Update and push.
|
426
457
|
|
427
|
-
|
458
|
+
X Code review
|
428
459
|
|
429
|
-
|
460
|
+
X Rack/custom global middleware.
|
430
461
|
|
431
|
-
|
462
|
+
X Route-specific middleware.
|
432
463
|
|
433
464
|
## Known issues
|
434
465
|
|
data/lib/kawaii/base.rb
CHANGED
@@ -20,8 +20,8 @@ module Kawaii
|
|
20
20
|
|
21
21
|
# Instances of classes derived from [Kawaii::Base] are Rack applications.
|
22
22
|
def call(env)
|
23
|
-
|
24
|
-
|
23
|
+
h = self.class.build(env)
|
24
|
+
h.call(env)
|
25
25
|
rescue => e
|
26
26
|
self.class.handle_error(e)
|
27
27
|
end
|
@@ -41,8 +41,10 @@ module Kawaii
|
|
41
41
|
@error_handler = block
|
42
42
|
end
|
43
43
|
|
44
|
-
def
|
45
|
-
|
44
|
+
def build(env)
|
45
|
+
h = match(env) || not_found_handler
|
46
|
+
builder.run h
|
47
|
+
builder.to_app
|
46
48
|
end
|
47
49
|
|
48
50
|
# Make it runnable via `run MyApp`.
|
@@ -56,6 +58,14 @@ module Kawaii
|
|
56
58
|
handler.call(e)
|
57
59
|
end
|
58
60
|
|
61
|
+
def use(middleware, *args, &block)
|
62
|
+
builder.use(middleware, *args, &block)
|
63
|
+
end
|
64
|
+
|
65
|
+
def builder
|
66
|
+
@builder ||= Rack::Builder.new
|
67
|
+
end
|
68
|
+
|
59
69
|
protected
|
60
70
|
|
61
71
|
def not_found_handler
|
data/lib/kawaii/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kawaii-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marcin Bilski
|
@@ -199,7 +199,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
199
199
|
version: '0'
|
200
200
|
requirements: []
|
201
201
|
rubyforge_project:
|
202
|
-
rubygems_version: 2.
|
202
|
+
rubygems_version: 2.2.2
|
203
203
|
signing_key:
|
204
204
|
specification_version: 4
|
205
205
|
summary: A simple web framework based on Rack
|