traceable 1.4.0 → 1.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/traceable/args.rb +19 -10
- data/lib/traceable/config.rb +17 -0
- data/lib/traceable/version.rb +1 -1
- data/spec/traceable_args_spec.rb +16 -2
- 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: 13c55b0d6931dd2f0f4184feeef4cd406888e010
|
4
|
+
data.tar.gz: 04e77dd75e7e855fd2cd7a1c9960fac5dfed38cd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 505830cf85e00c1a10191174f19fee91c60a0ee87bb2f08aec2b955b09076559854f785c07bd33ec3963e4cb2566838d2f98ad8c7aeae26623d99acd346dfd64
|
7
|
+
data.tar.gz: 9b257ae1d93c01b3f284f5bbcb4b5655f2beeba3340b0608497e953861ee15005c3d6f3839d46cfcd6bda153fa89c0f6d86e57c3894164dcf0b70203a0dd0756
|
data/lib/traceable/args.rb
CHANGED
@@ -24,37 +24,46 @@ module Traceable
|
|
24
24
|
end
|
25
25
|
|
26
26
|
MAX_STRING_LENGTH = 5000
|
27
|
-
|
27
|
+
MAX_ARRAY_VALUES = 30
|
28
|
+
MAX_HASH_KEYS = 30
|
29
|
+
|
30
|
+
@max_string_length = MAX_STRING_LENGTH
|
31
|
+
@trunc_string_length = @max_string_length - 3
|
32
|
+
@max_array_values = MAX_ARRAY_VALUES
|
33
|
+
@max_hash_keys = MAX_HASH_KEYS
|
34
|
+
|
35
|
+
def self.set_config_limits(max_string_length:, max_array_values:, max_hash_keys:)
|
36
|
+
@max_string_length = max_string_length.nil? ? MAX_STRING_LENGTH : max_string_length
|
37
|
+
@trunc_string_length = [@max_string_length, 4].max - 3
|
38
|
+
@max_array_values = max_array_values.nil? ? MAX_ARRAY_VALUES : max_array_values
|
39
|
+
@max_hash_keys = max_hash_keys.nil? ? MAX_HASH_KEYS : max_array_values
|
40
|
+
end
|
28
41
|
|
29
42
|
def self.format_string(val)
|
30
|
-
return val[0
|
43
|
+
return val[0..@trunc_string_length] + '...' if val.size > @max_string_length
|
31
44
|
val
|
32
45
|
end
|
33
46
|
|
34
|
-
MAX_ARRAY_VALUES = 10
|
35
|
-
|
36
47
|
def self.format_array_of_values(val_array)
|
37
48
|
return format_array_of_values(truncated_array(val_array)) \
|
38
|
-
if val_array.size >
|
49
|
+
if val_array.size > @max_array_values
|
39
50
|
val_array.map { |v| format_value(v) }
|
40
51
|
end
|
41
52
|
|
42
53
|
def self.truncated_array(val_array)
|
43
|
-
subset = val_array[0
|
54
|
+
subset = val_array[0..@max_array_values - 2]
|
44
55
|
subset << "...(#{val_array.size - subset.size})"
|
45
56
|
subset
|
46
57
|
end
|
47
58
|
|
48
|
-
MAX_HASH_KEYS = 10
|
49
|
-
|
50
59
|
def self.format_hash_of_values(val_hash)
|
51
60
|
return format_hash_of_values(truncated_hash(val_hash)) \
|
52
|
-
if val_hash.size >
|
61
|
+
if val_hash.size > @max_hash_keys
|
53
62
|
Hash[val_hash.map { |k, v| [k, format_value(v)] }]
|
54
63
|
end
|
55
64
|
|
56
65
|
def self.truncated_hash(val_hash)
|
57
|
-
first_keys = val_hash.keys[0
|
66
|
+
first_keys = val_hash.keys[0..@max_hash_keys - 2]
|
58
67
|
first_vals = first_keys.map { |k| val_hash[k] }
|
59
68
|
first_keys << :___
|
60
69
|
first_vals << "...(#{val_hash.size - first_vals.size})"
|
data/lib/traceable/config.rb
CHANGED
@@ -6,20 +6,37 @@ module Traceable
|
|
6
6
|
class Config
|
7
7
|
attr_accessor :default_tags
|
8
8
|
attr_accessor :logger
|
9
|
+
attr_accessor :max_string_length
|
10
|
+
attr_accessor :max_array_values
|
11
|
+
attr_accessor :max_hash_keys
|
9
12
|
|
10
13
|
def initialize
|
11
14
|
@logger = Logger.new(STDOUT)
|
12
15
|
@logger.level = Logger::INFO
|
13
16
|
|
14
17
|
@default_tags = {}
|
18
|
+
|
19
|
+
@max_string_length = Args::MAX_STRING_LENGTH
|
20
|
+
@max_array_values = Args::MAX_ARRAY_VALUES
|
21
|
+
@max_hash_keys = Args::MAX_HASH_KEYS
|
15
22
|
end
|
16
23
|
end
|
17
24
|
|
18
25
|
def self.configure(&_)
|
19
26
|
yield config
|
27
|
+
update_args_config
|
28
|
+
config
|
20
29
|
end
|
21
30
|
|
22
31
|
def self.config
|
23
32
|
@config ||= Config.new
|
24
33
|
end
|
34
|
+
|
35
|
+
def self.update_args_config
|
36
|
+
Args.set_config_limits(
|
37
|
+
max_string_length: config.max_string_length,
|
38
|
+
max_array_values: config.max_array_values,
|
39
|
+
max_hash_keys: config.max_hash_keys
|
40
|
+
)
|
41
|
+
end
|
25
42
|
end
|
data/lib/traceable/version.rb
CHANGED
data/spec/traceable_args_spec.rb
CHANGED
@@ -1,6 +1,14 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
RSpec.describe Traceable::Args do
|
4
|
+
before do
|
5
|
+
Traceable.configure do |config|
|
6
|
+
config.max_string_length = 2000
|
7
|
+
config.max_array_values = 10
|
8
|
+
config.max_hash_keys = 10
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
4
12
|
describe '#args_to_tags' do
|
5
13
|
class Foo
|
6
14
|
class << self
|
@@ -27,14 +35,15 @@ RSpec.describe Traceable::Args do
|
|
27
35
|
end
|
28
36
|
|
29
37
|
let(:letters) { %w[a b c d e f g h i j k l m n o p q r s t u v w x y z] }
|
38
|
+
let(:long_string) { 'abcdefghijklmnopqrstuvwxyz'. * 100 }
|
39
|
+
let(:long_string_truncated) { long_string[0..1997] + '...' }
|
30
40
|
|
31
41
|
describe '#format_value' do
|
32
|
-
let(:long_string) { 'abcdefghijklmnopqrstuvwxyz'. * 1000 }
|
33
42
|
let(:number) { 1 }
|
34
43
|
|
35
44
|
it 'truncates long strings' do
|
36
45
|
expect(Traceable::Args.format_value(long_string))
|
37
|
-
.to eq(
|
46
|
+
.to eq(long_string_truncated)
|
38
47
|
end
|
39
48
|
|
40
49
|
it 'returns simple values un-modified' do
|
@@ -59,5 +68,10 @@ RSpec.describe Traceable::Args do
|
|
59
68
|
.to eq(a: 'a', b: 'b', c: 'c', d: 'd', e: 'e',
|
60
69
|
f: 'f', g: 'g', h: 'h', i: 'i', ___: '...(17)')
|
61
70
|
end
|
71
|
+
|
72
|
+
it 'truncates long strings in hashes' do
|
73
|
+
expect(Traceable::Args.format_hash_of_values(foo: long_string))
|
74
|
+
.to eq(foo: long_string_truncated)
|
75
|
+
end
|
62
76
|
end
|
63
77
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: traceable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeremy Slade
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-07-
|
11
|
+
date: 2018-07-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|