instrument_all_the_things 1.0.3 → 1.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +3 -3
- data/README.md +26 -0
- data/lib/instrument_all_the_things/method_proxy.rb +8 -5
- data/lib/instrument_all_the_things/version.rb +1 -1
- data/vendor/cache/ddtrace-0.34.0.gem +0 -0
- metadata +3 -3
- data/vendor/cache/ddtrace-0.33.1.gem +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8233c84f173a53f91f896e019fa3ad70cbf0834cc43b3291c341c633099cc13b
|
4
|
+
data.tar.gz: 71cb7736c90caa59f66e7666eb20d8b3c0a71510c0e0dd2b740ee6f3397174d0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6614358e22371b877b9b79f63807906dcc08560a8585dcaeb985599ef889ef900c60a911ef15a1554749da0d84f0bcc92c4cffa4bd38b7b8ef5c3d0e8dbd3704
|
7
|
+
data.tar.gz: 8a19bb27f82820e1bb8695355e6e8761c02e3237e0a33c441831a57969d21a7192c96e1ccf92c35fc008d03f075227d1306583ccdbaea352ea9e2dd6a365a063
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
instrument_all_the_things (1.0.
|
4
|
+
instrument_all_the_things (1.0.4)
|
5
5
|
ddtrace
|
6
6
|
dogstatsd-ruby
|
7
7
|
|
@@ -11,7 +11,7 @@ GEM
|
|
11
11
|
ast (2.4.0)
|
12
12
|
benchmark-ips (2.7.2)
|
13
13
|
coderay (1.1.2)
|
14
|
-
ddtrace (0.
|
14
|
+
ddtrace (0.34.0)
|
15
15
|
msgpack
|
16
16
|
diff-lcs (1.3)
|
17
17
|
docile (1.3.2)
|
@@ -71,4 +71,4 @@ DEPENDENCIES
|
|
71
71
|
simplecov
|
72
72
|
|
73
73
|
BUNDLED WITH
|
74
|
-
2.
|
74
|
+
2.1.4
|
data/README.md
CHANGED
@@ -93,6 +93,32 @@ also be passed to the DataDog tracer, and their [options](https://github.com/Dat
|
|
93
93
|
| span_type | See DD Docs. | `nil`
|
94
94
|
| tags | Set of tags to be added to the span, expected to be a hash | {}
|
95
95
|
|
96
|
+
#### Dynamic Tags
|
97
|
+
|
98
|
+
If a trace's tags need to reference either an instance variable or a parameter to the method being traced, you must pass in a proc for the tag value.
|
99
|
+
|
100
|
+
For instance variables, this will look like this:
|
101
|
+
```ruby
|
102
|
+
instrument trace: { tags: [-> { "some_stat:#{some_instance_var}" }]}
|
103
|
+
def my_instance_method
|
104
|
+
...
|
105
|
+
end
|
106
|
+
```
|
107
|
+
|
108
|
+
For parameter references, your proc will need to to have a parameter of `args` or `kwargs` (or both), depending on if the parameter you need to reference is a normal parameter or a keyword parameter. Examples:
|
109
|
+
|
110
|
+
```ruby
|
111
|
+
instrument trace: { tags: [->(args) { "log_args:#{args[0]}" }]}
|
112
|
+
def my_instance_method(my_var)
|
113
|
+
...
|
114
|
+
end
|
115
|
+
|
116
|
+
instrument trace: { tags: [->(kwargs) { "log_args:#{kwargs[:my_arg]}" }]}
|
117
|
+
def my_instance_method(my_arg:)
|
118
|
+
...
|
119
|
+
end
|
120
|
+
```
|
121
|
+
|
96
122
|
## Testing Support
|
97
123
|
|
98
124
|
You can setup your test environment by running the following setup:
|
@@ -40,21 +40,24 @@ module InstrumentAllTheThings
|
|
40
40
|
@_iatt_built_for = val
|
41
41
|
end
|
42
42
|
|
43
|
-
def set_context_tags(klass, settings,
|
43
|
+
def set_context_tags(klass, settings, args, kwargs)
|
44
44
|
return unless settings.is_a?(Hash) && settings[:trace].is_a?(Hash) && settings[:trace][:tags]
|
45
45
|
|
46
46
|
settings[:context][:tags] = settings[:trace][:tags].map do |tag|
|
47
47
|
if tag.is_a?(Proc)
|
48
|
-
|
49
|
-
|
48
|
+
case tag.arity
|
49
|
+
when 2
|
50
|
+
tag.call(args, kwargs)
|
51
|
+
when 1
|
52
|
+
tag.parameters[0][1].to_s == 'args' ? tag.call(args) : tag.call(kwargs)
|
50
53
|
else
|
51
54
|
klass.instance_exec(&tag)
|
52
55
|
end
|
53
56
|
else
|
54
57
|
tag
|
55
58
|
end
|
56
|
-
|
57
|
-
|
59
|
+
rescue StandardError
|
60
|
+
nil
|
58
61
|
end.compact
|
59
62
|
end
|
60
63
|
|
Binary file
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: instrument_all_the_things
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brian Malinconico
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-04-
|
11
|
+
date: 2020-04-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ddtrace
|
@@ -176,7 +176,7 @@ files:
|
|
176
176
|
- vendor/cache/ast-2.4.0.gem
|
177
177
|
- vendor/cache/benchmark-ips-2.7.2.gem
|
178
178
|
- vendor/cache/coderay-1.1.2.gem
|
179
|
-
- vendor/cache/ddtrace-0.
|
179
|
+
- vendor/cache/ddtrace-0.34.0.gem
|
180
180
|
- vendor/cache/diff-lcs-1.3.gem
|
181
181
|
- vendor/cache/docile-1.3.2.gem
|
182
182
|
- vendor/cache/dogstatsd-ruby-4.7.0.gem
|
Binary file
|