lennarb 0.1.1 → 0.1.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 +4 -4
- data/lib/lenna/middleware/default/error_handler.rb +38 -5
- data/lib/lenna/router/request.rb +4 -0
- data/lib/lennarb/version.rb +1 -1
- data/lib/lennarb.rb +9 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 28626110518fdb3c7d63bc8cfb08492e0918b725a7a338d4e12f1bdfe8a290e5
|
4
|
+
data.tar.gz: 30508de72bcc44f69cbc9c3046674ff66fc5c6c9dd3ae495088d62ede7caa5fa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e9fb2a91d64f58bec3a126129b72ab80fc8aecddff4663673a55336a517b3adba27fe7ed8cc97ab3050583cdae4f57bc8a1d63f3672175e8664edf3a9d874d79
|
7
|
+
data.tar.gz: 988b9af0d8222c02918d0639b3d9894d16b88f742620aff870a6ecb3ed50b00c74b75e809b53cdf5103fca6904d3a36167cc9877c95b8d8f006c6515a8bbdc95
|
@@ -24,7 +24,7 @@ module Lenna
|
|
24
24
|
env = req.env
|
25
25
|
log_error(env, e)
|
26
26
|
|
27
|
-
render_error_page(e, env, res)
|
27
|
+
render_error_page(e, env, req, res)
|
28
28
|
end
|
29
29
|
|
30
30
|
private
|
@@ -37,10 +37,43 @@ module Lenna
|
|
37
37
|
# @return [void]
|
38
38
|
#
|
39
39
|
# @api private
|
40
|
-
def render_error_page(error, env, res)
|
41
|
-
|
42
|
-
|
43
|
-
|
40
|
+
def render_error_page(error, env, req, res)
|
41
|
+
case req.headers['Content-Type']
|
42
|
+
in 'application/json' then render_json(error, env, res)
|
43
|
+
else render_html(error, env, res)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
# This method will render the JSON error page.
|
48
|
+
#
|
49
|
+
# @param error [StandardError] The error object
|
50
|
+
# @param env [Hash] The environment variables
|
51
|
+
# @param res [Rack::Response] The response object
|
52
|
+
# @return [void]
|
53
|
+
#
|
54
|
+
# @api private
|
55
|
+
def render_json(error, env, res)
|
56
|
+
case env['RACK_ENV']
|
57
|
+
in 'development' | 'test' then res.json(
|
58
|
+
data: {
|
59
|
+
error: error.message,
|
60
|
+
status: 500
|
61
|
+
}
|
62
|
+
)
|
63
|
+
else res.json(error: 'Internal Server Error', status: 500)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
# This method will render the HTML error page.
|
68
|
+
#
|
69
|
+
# @param error [StandardError] The error object
|
70
|
+
# @param env [Hash] The environment variables
|
71
|
+
# @param res [Rack::Response] The response object
|
72
|
+
# @return [void]
|
73
|
+
#
|
74
|
+
# @api private
|
75
|
+
def render_html(error, env, res)
|
76
|
+
res.html(error_page(error, env), status: 500)
|
44
77
|
end
|
45
78
|
|
46
79
|
# This method will log the error.
|
data/lib/lenna/router/request.rb
CHANGED
@@ -37,8 +37,12 @@ module Lenna
|
|
37
37
|
# Turn this:
|
38
38
|
# HTTP_FOO=bar Foo=bar
|
39
39
|
def headers
|
40
|
+
content_type = env['CONTENT_TYPE']
|
40
41
|
@headers ||= env.select { |k, _| k.start_with?('HTTP_') }
|
41
42
|
.transform_keys { |k| format_header_name(k) }
|
43
|
+
|
44
|
+
@headers['Content-Type'] = content_type if content_type
|
45
|
+
@headers
|
42
46
|
end
|
43
47
|
|
44
48
|
# This method returns the request body in a normalized way.
|
data/lib/lennarb/version.rb
CHANGED
data/lib/lennarb.rb
CHANGED
@@ -6,3 +6,12 @@ require 'lennarb/array_extensions'
|
|
6
6
|
# Base class for Lennarb
|
7
7
|
require 'lenna/base'
|
8
8
|
require 'lennarb/version'
|
9
|
+
|
10
|
+
app = Lenna::Base.new
|
11
|
+
|
12
|
+
app.get '/' do |_req, res|
|
13
|
+
raise foo
|
14
|
+
res.json(data: { error: 'Hello, world!' })
|
15
|
+
end
|
16
|
+
|
17
|
+
app.listen(8080)
|