prefab-cloud-ruby 0.17.0 → 0.18.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/VERSION +1 -1
- data/lib/prefab/logger_client.rb +7 -6
- data/prefab-cloud-ruby.gemspec +3 -3
- data/test/test_logger.rb +49 -9
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d9225ebaadf8be997d152b66cb58ff342d126bc5cfbe489511af4791d89dd5f7
|
4
|
+
data.tar.gz: cbaf511c7aeaf0ef743b33c2ad00c40bd4d6c8ddba0a17ddff541afeb8e055d9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f00e343e6f3f7a7f11351409708979c4e02420eae8bf8d9520cdc58de464b682158b863bcab88b4583c469709c621f066bd8995e482963386b931c877bfd2b1f
|
7
|
+
data.tar.gz: 5e51d64d2d5adc738e5f8438cd222ae3e4d9fc1f183a789d25486da7197b25c3263fff9a0fac9b33a9acffc169e035630e7a8cb8b3d3770e9e8b669d34b96f68
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.18.0
|
data/lib/prefab/logger_client.rb
CHANGED
@@ -4,7 +4,7 @@ module Prefab
|
|
4
4
|
|
5
5
|
SEP = "."
|
6
6
|
BASE_KEY = "log-level"
|
7
|
-
|
7
|
+
UNKNOWN_PATH = "unknown."
|
8
8
|
|
9
9
|
LOG_LEVEL_LOOKUPS = {
|
10
10
|
Prefab::LogLevel::NOT_SET_LOG_LEVEL => Logger::DEBUG,
|
@@ -36,7 +36,7 @@ module Prefab
|
|
36
36
|
def log_internal(message, path, progname, severity, &block)
|
37
37
|
level = level_of(path)
|
38
38
|
progname = "#{path}: #{progname}"
|
39
|
-
severity ||= UNKNOWN
|
39
|
+
severity ||= Logger::UNKNOWN
|
40
40
|
if @logdev.nil? || severity < level || @silences[local_log_id]
|
41
41
|
return true
|
42
42
|
end
|
@@ -119,7 +119,7 @@ module Prefab
|
|
119
119
|
|
120
120
|
# Find the closest match to 'log_level.path' in config
|
121
121
|
def level_of(path)
|
122
|
-
closest_log_level_match = @config_client.get(BASE_KEY,
|
122
|
+
closest_log_level_match = @config_client.get(BASE_KEY, :WARN)
|
123
123
|
path.split(SEP).inject([BASE_KEY]) do |memo, n|
|
124
124
|
memo << n
|
125
125
|
val = @config_client.get(memo.join(SEP), nil)
|
@@ -128,7 +128,8 @@ module Prefab
|
|
128
128
|
end
|
129
129
|
memo
|
130
130
|
end
|
131
|
-
|
131
|
+
closest_log_level_match_int = Prefab::LogLevel.resolve(closest_log_level_match)
|
132
|
+
LOG_LEVEL_LOOKUPS[closest_log_level_match_int]
|
132
133
|
end
|
133
134
|
|
134
135
|
def get_loc_path(loc)
|
@@ -139,7 +140,7 @@ module Prefab
|
|
139
140
|
# sanitize & clean the path of the caller so the key
|
140
141
|
# looks like log_level.app.models.user
|
141
142
|
def get_path(absolute_path, base_label)
|
142
|
-
path = (absolute_path ||
|
143
|
+
path = (absolute_path || UNKNOWN_PATH).dup
|
143
144
|
path.slice! Dir.pwd
|
144
145
|
path.gsub!(/(.*)?(?=\/lib)/im, "") # replace everything before first lib
|
145
146
|
|
@@ -154,7 +155,7 @@ module Prefab
|
|
154
155
|
# since it may log
|
155
156
|
class BootstrappingConfigClient
|
156
157
|
def get(key, default = nil)
|
157
|
-
ENV["PREFAB_LOG_CLIENT_BOOTSTRAP_LOG_LEVEL"] ?
|
158
|
+
ENV["PREFAB_LOG_CLIENT_BOOTSTRAP_LOG_LEVEL"] ? ENV["PREFAB_LOG_CLIENT_BOOTSTRAP_LOG_LEVEL"].upcase.to_sym : default
|
158
159
|
end
|
159
160
|
end
|
160
161
|
end
|
data/prefab-cloud-ruby.gemspec
CHANGED
@@ -2,16 +2,16 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Juwelier::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: prefab-cloud-ruby 0.
|
5
|
+
# stub: prefab-cloud-ruby 0.18.0 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "prefab-cloud-ruby".freeze
|
9
|
-
s.version = "0.
|
9
|
+
s.version = "0.18.0"
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
12
12
|
s.require_paths = ["lib".freeze]
|
13
13
|
s.authors = ["Jeff Dwyer".freeze]
|
14
|
-
s.date = "2022-10-
|
14
|
+
s.date = "2022-10-14"
|
15
15
|
s.description = "RateLimits & Config as a service".freeze
|
16
16
|
s.email = "jdwyer@prefab.cloud".freeze
|
17
17
|
s.extra_rdoc_files = [
|
data/test/test_logger.rb
CHANGED
@@ -20,6 +20,9 @@ class TestCLogger < Minitest::Test
|
|
20
20
|
assert_equal "active_support.log_subscriber.info",
|
21
21
|
@logger.get_path("/Users/jeffdwyer/.asdf/installs/ruby/3.1.2/lib/ruby/gems/3.1.0/gems/activesupport-7.0.2.4/lib/active_support/log_subscriber.rb:130:in `info'",
|
22
22
|
"info")
|
23
|
+
assert_equal "unknown.info",
|
24
|
+
@logger.get_path(nil,
|
25
|
+
"info")
|
23
26
|
end
|
24
27
|
|
25
28
|
def test_loc_resolution
|
@@ -44,24 +47,61 @@ class TestCLogger < Minitest::Test
|
|
44
47
|
with_env("PREFAB_LOG_CLIENT_BOOTSTRAP_LOG_LEVEL", "info") do
|
45
48
|
# env var overrides the default level
|
46
49
|
assert_equal Logger::INFO,
|
47
|
-
|
50
|
+
@logger.level_of("app.models.user"), "PREFAB_LOG_CLIENT_BOOTSTRAP_LOG_LEVEL is info"
|
48
51
|
|
49
52
|
@logger.set_config_client(MockConfigClient.new({}))
|
50
53
|
assert_equal Logger::WARN,
|
51
|
-
|
54
|
+
@logger.level_of("app.models.user"), "default is warn"
|
52
55
|
|
53
|
-
@logger.set_config_client(MockConfigClient.new("log-level.app" =>
|
56
|
+
@logger.set_config_client(MockConfigClient.new("log-level.app" => :INFO))
|
54
57
|
assert_equal Logger::INFO,
|
55
|
-
|
58
|
+
@logger.level_of("app.models.user")
|
56
59
|
|
57
|
-
@logger.set_config_client(MockConfigClient.new("log-level.app" =>
|
60
|
+
@logger.set_config_client(MockConfigClient.new("log-level.app" => :DEBUG))
|
58
61
|
assert_equal Logger::DEBUG,
|
59
|
-
|
62
|
+
@logger.level_of("app.models.user")
|
60
63
|
|
61
|
-
@logger.set_config_client(MockConfigClient.new("log-level.app" =>
|
62
|
-
|
64
|
+
@logger.set_config_client(MockConfigClient.new("log-level.app" => :DEBUG,
|
65
|
+
"log-level.app.models" => :ERROR))
|
63
66
|
assert_equal Logger::ERROR,
|
64
|
-
|
67
|
+
@logger.level_of("app.models.user"), "test leveling"
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
def test_log_internal
|
72
|
+
logger, mock_logdev = mock_logger_expecting /W, \[.*\] WARN -- test.path: : test message/
|
73
|
+
logger.log_internal("test message", "test.path", "", Logger::WARN)
|
74
|
+
mock_logdev.verify
|
75
|
+
end
|
76
|
+
|
77
|
+
def test_log_internal_unknown
|
78
|
+
logger, mock_logdev = mock_logger_expecting /A, \[.*\] ANY -- test.path: : test message/
|
79
|
+
logger.log_internal("test message", "test.path", "", Logger::UNKNOWN)
|
80
|
+
mock_logdev.verify
|
81
|
+
end
|
82
|
+
|
83
|
+
def test_log_internal_silencing
|
84
|
+
logger, mock_logdev = mock_logger_expecting /W, \[.*\] WARN -- test.path: : should log/, calls: 2
|
85
|
+
logger.silence do
|
86
|
+
logger.log_internal("should not log", "test.path", "", Logger::WARN)
|
87
|
+
end
|
88
|
+
logger.log_internal("should log", "test.path", "", Logger::WARN)
|
89
|
+
mock_logdev.verify
|
90
|
+
end
|
91
|
+
|
92
|
+
def mock_logger_expecting pattern, configs = {}, calls: 1
|
93
|
+
mock_logdev = Minitest::Mock.new
|
94
|
+
mock_logdev.expect :write, nil do |arg|
|
95
|
+
pattern.match(arg)
|
65
96
|
end
|
97
|
+
|
98
|
+
calls.times.each do
|
99
|
+
mock_logdev.expect(:nil?, false)
|
100
|
+
end
|
101
|
+
|
102
|
+
logger = Prefab::LoggerClient.new($stdout)
|
103
|
+
logger.instance_variable_set('@logdev', mock_logdev)
|
104
|
+
logger.set_config_client(MockConfigClient.new(configs))
|
105
|
+
[logger, mock_logdev]
|
66
106
|
end
|
67
107
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: prefab-cloud-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.18.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeff Dwyer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-10-
|
11
|
+
date: 2022-10-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: concurrent-ruby
|