kawaii-core 0.1.1 → 0.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/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
|