kirei 0.4.0 → 0.4.1
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/cli/commands/new_app/files/rakefile.rb +3 -0
- data/lib/kirei/routing/base.rb +12 -3
- data/lib/kirei/services/runner.rb +11 -4
- data/lib/kirei/version.rb +1 -1
- data/lib/tasks/routes.rake +26 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 86e3ce57ba0d801b5279632d302837a42195565c3daa66a2b5fbd6adb31f0176
|
4
|
+
data.tar.gz: a3ba957501c2603cc8cfba22282ab0c281ccf8227f99fedad78af0c980f3edd3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '078c2a848f346f8e25c0b9fcacc72d0d2e3b8f82620df2cffe4fee683e9d44aba43d3de635dd918449369617aa97362d2f66adba26d52c625565ff614eafe5d9'
|
7
|
+
data.tar.gz: a57e28a79ff8fe6bf47060550d11521b14112f22e15088a365bf7965ef0caa1a9f56a80e55571477cea8807c63775513fdd04eb63bda355f677ce5aba95d032d
|
data/lib/kirei/routing/base.rb
CHANGED
@@ -8,6 +8,8 @@ module Kirei
|
|
8
8
|
class Base
|
9
9
|
extend T::Sig
|
10
10
|
|
11
|
+
NOT_FOUND = T.let([404, {}, ["Not Found"]], RackResponseType) # rubocop:disable Style/MutableConstant
|
12
|
+
|
11
13
|
sig { params(params: T::Hash[String, T.untyped]).void }
|
12
14
|
def initialize(params: {})
|
13
15
|
@router = T.let(Router.instance, Router)
|
@@ -23,6 +25,7 @@ module Kirei
|
|
23
25
|
sig { params(env: RackEnvType).returns(RackResponseType) }
|
24
26
|
def call(env)
|
25
27
|
start = Process.clock_gettime(Process::CLOCK_MONOTONIC, :float_millisecond)
|
28
|
+
status = 500 # we use it in the "ensure" block, so we need to define early (Sorbet doesn't like `status ||= 418`)
|
26
29
|
|
27
30
|
http_verb = Verb.deserialize(env.fetch("REQUEST_METHOD"))
|
28
31
|
req_path = T.cast(env.fetch("REQUEST_PATH"), String)
|
@@ -33,7 +36,7 @@ module Kirei
|
|
33
36
|
#
|
34
37
|
|
35
38
|
route = router.get(http_verb, req_path)
|
36
|
-
return
|
39
|
+
return NOT_FOUND if route.nil?
|
37
40
|
|
38
41
|
params = case route.verb
|
39
42
|
when Verb::GET
|
@@ -66,7 +69,13 @@ module Kirei
|
|
66
69
|
Kirei::Logging::Logger.call(
|
67
70
|
level: Kirei::Logging::Level::INFO,
|
68
71
|
label: "Request Started",
|
69
|
-
meta:
|
72
|
+
meta: {
|
73
|
+
"http.method" => route.verb.serialize,
|
74
|
+
"http.route" => route.path,
|
75
|
+
"http.host" => env.fetch("HTTP_HOST"),
|
76
|
+
"http.request_params" => params,
|
77
|
+
"http.client_ip" => env.fetch("CF-Connecting-IP", env.fetch("REMOTE_ADDR")),
|
78
|
+
},
|
70
79
|
)
|
71
80
|
|
72
81
|
statsd_timing_tags = {
|
@@ -101,7 +110,7 @@ module Kirei
|
|
101
110
|
::StatsD.measure("request", latency_in_ms, tags: statsd_timing_tags)
|
102
111
|
|
103
112
|
Kirei::Logging::Logger.call(
|
104
|
-
level: Kirei::Logging::Level::INFO,
|
113
|
+
level: status >= 500 ? Kirei::Logging::Level::ERROR : Kirei::Logging::Level::INFO,
|
105
114
|
label: "Request Finished",
|
106
115
|
meta: { "response.body" => response_body, "response.latency_in_ms" => latency_in_ms },
|
107
116
|
)
|
@@ -10,12 +10,12 @@ module Kirei
|
|
10
10
|
sig do
|
11
11
|
type_parameters(:T)
|
12
12
|
.params(
|
13
|
-
class_name:
|
13
|
+
class_name: T.untyped,
|
14
14
|
log_tags: T::Hash[String, T.untyped],
|
15
|
-
|
15
|
+
block: T.proc.returns(T.type_parameter(:T)),
|
16
16
|
).returns(T.type_parameter(:T))
|
17
17
|
end
|
18
|
-
def self.call(class_name, log_tags: {}, &
|
18
|
+
def self.call(class_name, log_tags: {}, &block)
|
19
19
|
start = Process.clock_gettime(Process::CLOCK_MONOTONIC, :float_millisecond)
|
20
20
|
service = yield
|
21
21
|
|
@@ -35,13 +35,20 @@ module Kirei
|
|
35
35
|
::StatsD.measure(class_name, latency_in_ms, tags: metric_tags)
|
36
36
|
|
37
37
|
logtags = {
|
38
|
-
"service.name" => class_name,
|
38
|
+
"service.name" => class_name.to_s,
|
39
39
|
"service.latency_in_ms" => latency_in_ms,
|
40
40
|
"service.result" => result,
|
41
|
+
"service.source_location" => source_location(block),
|
41
42
|
}
|
42
43
|
logtags.merge!(log_tags)
|
44
|
+
|
43
45
|
Logging::Logger.call(level: Logging::Level::INFO, label: "Service Finished", meta: logtags)
|
44
46
|
end
|
47
|
+
|
48
|
+
sig { params(proc: T.proc.returns(T.untyped)).returns(String) }
|
49
|
+
private_class_method def self.source_location(proc)
|
50
|
+
proc.source_location.join(":").gsub(App.root.to_s, "")
|
51
|
+
end
|
45
52
|
end
|
46
53
|
end
|
47
54
|
end
|
data/lib/kirei/version.rb
CHANGED
@@ -0,0 +1,26 @@
|
|
1
|
+
# typed: false
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
require_relative("../kirei")
|
5
|
+
|
6
|
+
namespace :kirei do
|
7
|
+
desc "Prints all available routes"
|
8
|
+
task :routes do
|
9
|
+
router = Kirei::Routing::Router.instance
|
10
|
+
|
11
|
+
longest_path = router.routes.keys.map(&:length).max
|
12
|
+
|
13
|
+
routes_by_controller = router.routes.values.group_by(&:controller)
|
14
|
+
|
15
|
+
puts "\n"
|
16
|
+
|
17
|
+
routes_by_controller.each do |controller, routes|
|
18
|
+
puts "#{controller}:"
|
19
|
+
routes.each do |route|
|
20
|
+
verb = route.verb.serialize.upcase.ljust(7 + 3) # 7 is the length of the longest verb
|
21
|
+
puts "#{verb} #{route.path.ljust(longest_path + 1)} => ##{route.action}"
|
22
|
+
end
|
23
|
+
puts "\n"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kirei
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ludwig Reinmiedl
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-06-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: oj
|
@@ -203,6 +203,7 @@ files:
|
|
203
203
|
- lib/kirei/services/result.rb
|
204
204
|
- lib/kirei/services/runner.rb
|
205
205
|
- lib/kirei/version.rb
|
206
|
+
- lib/tasks/routes.rake
|
206
207
|
- sorbet/rbi/shims/base_model.rbi
|
207
208
|
- sorbet/rbi/shims/ruby.rbi
|
208
209
|
homepage: https://github.com/swiknaba/kirei
|