appsignal 3.0.12-java → 3.0.16-java
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/.semaphore/semaphore.yml +3 -7
- data/CHANGELOG.md +61 -0
- data/build_matrix.yml +3 -7
- data/ext/agent.yml +29 -25
- data/ext/appsignal_extension.c +201 -0
- data/lib/appsignal/cli/diagnose.rb +69 -34
- data/lib/appsignal/config.rb +64 -55
- data/lib/appsignal/extension/jruby.rb +147 -0
- data/lib/appsignal/extension.rb +5 -0
- data/lib/appsignal/hooks/mri.rb +16 -0
- data/lib/appsignal/hooks.rb +1 -0
- data/lib/appsignal/probes/mri.rb +26 -0
- data/lib/appsignal/probes.rb +1 -0
- data/lib/appsignal/span.rb +92 -0
- data/lib/appsignal/transaction.rb +12 -1
- data/lib/appsignal/version.rb +1 -1
- data/script/{install_lintje → lint_git} +4 -0
- data/spec/lib/appsignal/cli/diagnose_spec.rb +27 -23
- data/spec/lib/appsignal/config_spec.rb +26 -19
- data/spec/lib/appsignal/hooks/mri_spec.rb +23 -0
- data/spec/lib/appsignal/probes/mri_spec.rb +33 -0
- data/spec/lib/appsignal/span_spec.rb +141 -0
- data/spec/lib/appsignal/transaction_spec.rb +25 -0
- data/spec/support/helpers/dependency_helper.rb +4 -0
- metadata +13 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 61a15fcd31446aaa4f813957c6480260938926b5aeaa737529e168bc79b5ea9b
|
4
|
+
data.tar.gz: 3a0f796a71985048fac24343f92a79d041069470280fb78f7a51121f934397b2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9e4764dab62e7dcb8e166d29c9b2264e47cd9285abc2b06affa8898232fa6f9ef3e734de67e3a361b01bb981acec1fdfcde4ec945162a583572a8834c68f23a6
|
7
|
+
data.tar.gz: 74d11d47c32a02ffdc5da5f42aaed1c113188bb780123304492516c4aecf0b1f14fb65b8c2a3dc711dc0dd43892598b960c3a4f1b61ccbe55cc1b979ac0e8ce1
|
data/.semaphore/semaphore.yml
CHANGED
@@ -11,7 +11,7 @@ agent:
|
|
11
11
|
os_image: ubuntu1804
|
12
12
|
auto_cancel:
|
13
13
|
running:
|
14
|
-
when: branch != 'main' AND branch != 'develop'
|
14
|
+
when: branch != 'main' AND branch != 'develop'
|
15
15
|
global_job_config:
|
16
16
|
env_vars:
|
17
17
|
- name: RUNNING_IN_CI
|
@@ -95,12 +95,8 @@ blocks:
|
|
95
95
|
task:
|
96
96
|
jobs:
|
97
97
|
- name: Git Lint (Lintje)
|
98
|
-
env_vars:
|
99
|
-
- name: LINTJE_VERSION
|
100
|
-
value: 0.3.0
|
101
98
|
commands:
|
102
|
-
- script/
|
103
|
-
- "$HOME/bin/lintje $SEMAPHORE_GIT_COMMIT_RANGE"
|
99
|
+
- script/lint_git
|
104
100
|
- name: Integration tests
|
105
101
|
dependencies:
|
106
102
|
- Validation
|
@@ -117,7 +113,7 @@ blocks:
|
|
117
113
|
- name: Diagnose
|
118
114
|
env_vars:
|
119
115
|
- name: RUBY_VERSION
|
120
|
-
value:
|
116
|
+
value: 3.0.2
|
121
117
|
- name: LANGUAGE
|
122
118
|
value: ruby
|
123
119
|
commands:
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,66 @@
|
|
1
1
|
# AppSignal for Ruby gem Changelog
|
2
2
|
|
3
|
+
## 3.0.16
|
4
|
+
|
5
|
+
### Added
|
6
|
+
|
7
|
+
- [fe226e99](https://github.com/appsignal/appsignal-ruby/commit/fe226e99f262bfa46e7a7630defe2fe90f8a3a13) patch - Add experimental Span API. This is not loaded by default and we do not recommend using it yet.
|
8
|
+
- [84b1ba18](https://github.com/appsignal/appsignal-ruby/commit/84b1ba18e50440e5c71d27319e560c5df180d0df) patch - Add "log_level" config option. This new option allows you to define the kind of messages
|
9
|
+
AppSignal's will log and up. The "debug" option will log all "debug", "info", "warning" and
|
10
|
+
"error" log messages. The default value is: "info"
|
11
|
+
|
12
|
+
The allowed values are:
|
13
|
+
- error
|
14
|
+
- warning
|
15
|
+
- info
|
16
|
+
- debug
|
17
|
+
- [6b2ecca2](https://github.com/appsignal/appsignal-ruby/commit/6b2ecca24603061f1b35800f60b0ee6e9f314998) patch - Clean up index values in error messages from PG index violation errors.
|
18
|
+
|
19
|
+
### Changed
|
20
|
+
|
21
|
+
- [25bde454](https://github.com/appsignal/appsignal-ruby/commit/25bde454f82776f8d2ea1fd4dbb00a73e414076e) patch - Order the config options alphabetically in diagnose report output.
|
22
|
+
- [fe226e99](https://github.com/appsignal/appsignal-ruby/commit/fe226e99f262bfa46e7a7630defe2fe90f8a3a13) patch - Use the `filter_parameters` and `filter_session_data` options to filter out specific parameter keys or session data keys for the experimental Span API. Previously only the (undocumented) `filter_data_keys` config option was available to filter out all kinds of app data.
|
23
|
+
- [fe226e99](https://github.com/appsignal/appsignal-ruby/commit/fe226e99f262bfa46e7a7630defe2fe90f8a3a13) patch - Standardize diagnose validation failure message. Explain the diagnose request failed and why.
|
24
|
+
- [fe226e99](https://github.com/appsignal/appsignal-ruby/commit/fe226e99f262bfa46e7a7630defe2fe90f8a3a13) patch - Bump agent to v-5b63505
|
25
|
+
|
26
|
+
- Only filter parameters with the `filter_parameters` config option.
|
27
|
+
- Only filter session data with the `filter_session_data` config option.
|
28
|
+
- [3ad95ea5](https://github.com/appsignal/appsignal-ruby/commit/3ad95ea5dd8a9488d293a652231950bd4a721e6c) patch - Bump agent to v-0db01c2
|
29
|
+
|
30
|
+
- Add `log_level` config option in extension.
|
31
|
+
- Deprecate `debug` and `transaction_debug_mode` option in extension.
|
32
|
+
|
33
|
+
### Deprecated
|
34
|
+
|
35
|
+
- [84b1ba18](https://github.com/appsignal/appsignal-ruby/commit/84b1ba18e50440e5c71d27319e560c5df180d0df) patch - Deprecate "debug" and "transaction_debug_mode" config options in favor of the new "log_level"
|
36
|
+
config option.
|
37
|
+
|
38
|
+
## 3.0.15
|
39
|
+
|
40
|
+
- [b40b3b4f](https://github.com/appsignal/appsignal-ruby/commit/b40b3b4f5264c6b69f9515b53806435258c73086) patch - Print String values in the diagnose report surrounded by quotes. Makes it more clear that it's a String value and not a label we print.
|
41
|
+
- [fd6faf16](https://github.com/appsignal/appsignal-ruby/commit/fd6faf16d9feb73c3076c2e1283f6101dc4abf97) patch - Bump agent to 09308fb
|
42
|
+
|
43
|
+
- Update sql_lexer dependency with support for reversed operators in queries.
|
44
|
+
- Add debug level logging to custom metrics in transaction_debug_mode.
|
45
|
+
- Add hostname config option to standalone agent.
|
46
|
+
|
47
|
+
## 3.0.14
|
48
|
+
|
49
|
+
- [c40f6d75](https://github.com/appsignal/appsignal-ruby/commit/c40f6d759e8d516cc47bd55cc83bfcb680fbd1ea) patch - Add minutely probe that collects metrics for :class_serial and :global_constant_state from RubyVM.
|
50
|
+
- [7c18fb6d](https://github.com/appsignal/appsignal-ruby/commit/7c18fb6db0c72f32adb6803ccde957963977008a) patch - Bump agent to 7376537
|
51
|
+
|
52
|
+
- Support JSON PostgreSQL operator in sql_lexer.
|
53
|
+
- Do not strip comments from SQL queries.
|
54
|
+
- [8d7b80ea](https://github.com/appsignal/appsignal-ruby/commit/8d7b80eafc203c295db037f2547f74a2f217f93f) patch - Add configuration option for the AppSignal agent StatsD server. This is on by default, but you can disable it with `enable_statsd: false`.
|
55
|
+
|
56
|
+
## 3.0.13
|
57
|
+
|
58
|
+
- [5c202185](https://github.com/appsignal/appsignal-ruby/commit/5c20218526e026ab436854508ccfe26ca55e8f15) patch - Bump agent to v-0318770.
|
59
|
+
|
60
|
+
- Improve Dokku platform detection. Do not disable host metrics on
|
61
|
+
Dokku.
|
62
|
+
- Report CPU steal metric.
|
63
|
+
|
3
64
|
## 3.0.12
|
4
65
|
|
5
66
|
- [7f3af841](https://github.com/appsignal/appsignal-ruby/commit/7f3af8418f830a7384c10b309e1aeb8ee32c5742) patch - Bump agent to 0f40689
|
data/build_matrix.yml
CHANGED
@@ -11,7 +11,7 @@ semaphore: # Default `.semaphore/semaphore.yml` contents
|
|
11
11
|
auto_cancel:
|
12
12
|
running:
|
13
13
|
# Ignore main AND develop branch as we want it to build all workflows
|
14
|
-
when: "branch != 'main' AND branch != 'develop'
|
14
|
+
when: "branch != 'main' AND branch != 'develop'"
|
15
15
|
|
16
16
|
global_job_config:
|
17
17
|
env_vars:
|
@@ -93,12 +93,8 @@ semaphore: # Default `.semaphore/semaphore.yml` contents
|
|
93
93
|
task:
|
94
94
|
jobs:
|
95
95
|
- name: Git Lint (Lintje)
|
96
|
-
env_vars:
|
97
|
-
- name: LINTJE_VERSION
|
98
|
-
value: 0.3.0
|
99
96
|
commands:
|
100
|
-
- script/
|
101
|
-
- $HOME/bin/lintje $SEMAPHORE_GIT_COMMIT_RANGE
|
97
|
+
- script/lint_git
|
102
98
|
- name: Integration tests
|
103
99
|
dependencies:
|
104
100
|
- Validation
|
@@ -115,7 +111,7 @@ semaphore: # Default `.semaphore/semaphore.yml` contents
|
|
115
111
|
- name: Diagnose
|
116
112
|
env_vars:
|
117
113
|
- name: RUBY_VERSION
|
118
|
-
value:
|
114
|
+
value: 3.0.2
|
119
115
|
- name: LANGUAGE
|
120
116
|
value: ruby
|
121
117
|
commands:
|
data/ext/agent.yml
CHANGED
@@ -1,90 +1,94 @@
|
|
1
|
+
# DO NOT EDIT
|
2
|
+
# This is a generated file by the `rake ship` family of tasks in the
|
3
|
+
# appsignal-agent repository.
|
4
|
+
# Modifications to this file will be overwritten with the next agent release.
|
1
5
|
---
|
2
|
-
version:
|
6
|
+
version: 0db01c2
|
3
7
|
mirrors:
|
4
8
|
- https://appsignal-agent-releases.global.ssl.fastly.net
|
5
9
|
- https://d135dj0rjqvssy.cloudfront.net
|
6
10
|
triples:
|
7
11
|
x86_64-darwin:
|
8
12
|
static:
|
9
|
-
checksum:
|
13
|
+
checksum: 8a7cf35f8c9aa98e7778b720f33b38bfbdedcdedb0047035259ab187517be971
|
10
14
|
filename: appsignal-x86_64-darwin-all-static.tar.gz
|
11
15
|
dynamic:
|
12
|
-
checksum:
|
16
|
+
checksum: 4330f83a44db6f092b3f437d942204e9bf7f7022ae2cc24ade4e7b4137905d03
|
13
17
|
filename: appsignal-x86_64-darwin-all-dynamic.tar.gz
|
14
18
|
universal-darwin:
|
15
19
|
static:
|
16
|
-
checksum:
|
20
|
+
checksum: 8a7cf35f8c9aa98e7778b720f33b38bfbdedcdedb0047035259ab187517be971
|
17
21
|
filename: appsignal-x86_64-darwin-all-static.tar.gz
|
18
22
|
dynamic:
|
19
|
-
checksum:
|
23
|
+
checksum: 4330f83a44db6f092b3f437d942204e9bf7f7022ae2cc24ade4e7b4137905d03
|
20
24
|
filename: appsignal-x86_64-darwin-all-dynamic.tar.gz
|
21
25
|
aarch64-darwin:
|
22
26
|
static:
|
23
|
-
checksum:
|
27
|
+
checksum: a22cd07e656f194dd1921983be6507816b60c79bc0c4623d2cac5c88fda9d407
|
24
28
|
filename: appsignal-aarch64-darwin-all-static.tar.gz
|
25
29
|
dynamic:
|
26
|
-
checksum:
|
30
|
+
checksum: 0535e4506ccd2230dfa59fee5ba00ec6d3a2ff67693bf1b622e7a454fc1a5851
|
27
31
|
filename: appsignal-aarch64-darwin-all-dynamic.tar.gz
|
28
32
|
arm64-darwin:
|
29
33
|
static:
|
30
|
-
checksum:
|
34
|
+
checksum: a22cd07e656f194dd1921983be6507816b60c79bc0c4623d2cac5c88fda9d407
|
31
35
|
filename: appsignal-aarch64-darwin-all-static.tar.gz
|
32
36
|
dynamic:
|
33
|
-
checksum:
|
37
|
+
checksum: 0535e4506ccd2230dfa59fee5ba00ec6d3a2ff67693bf1b622e7a454fc1a5851
|
34
38
|
filename: appsignal-aarch64-darwin-all-dynamic.tar.gz
|
35
39
|
arm-darwin:
|
36
40
|
static:
|
37
|
-
checksum:
|
41
|
+
checksum: a22cd07e656f194dd1921983be6507816b60c79bc0c4623d2cac5c88fda9d407
|
38
42
|
filename: appsignal-aarch64-darwin-all-static.tar.gz
|
39
43
|
dynamic:
|
40
|
-
checksum:
|
44
|
+
checksum: 0535e4506ccd2230dfa59fee5ba00ec6d3a2ff67693bf1b622e7a454fc1a5851
|
41
45
|
filename: appsignal-aarch64-darwin-all-dynamic.tar.gz
|
42
46
|
aarch64-linux:
|
43
47
|
static:
|
44
|
-
checksum:
|
48
|
+
checksum: edf43f1a6b340c0afa07c7b71963def9bb68bd8d62d17cb64a7f7a36f84a4517
|
45
49
|
filename: appsignal-aarch64-linux-all-static.tar.gz
|
46
50
|
dynamic:
|
47
|
-
checksum:
|
51
|
+
checksum: 8390561e1a41e4b8bba8e4f92b9b49f957650eca21d281589143b9c3764f504e
|
48
52
|
filename: appsignal-aarch64-linux-all-dynamic.tar.gz
|
49
53
|
i686-linux:
|
50
54
|
static:
|
51
|
-
checksum:
|
55
|
+
checksum: 4179334f88dc32e00ce62aa196b3e47b4258b12ec48dd3cf722d4f6eeb4dc2c0
|
52
56
|
filename: appsignal-i686-linux-all-static.tar.gz
|
53
57
|
dynamic:
|
54
|
-
checksum:
|
58
|
+
checksum: 7c6bcc88e5d218c1986d1a9f1c9ad728c72e68a440656b2e9228d432ba300f86
|
55
59
|
filename: appsignal-i686-linux-all-dynamic.tar.gz
|
56
60
|
x86-linux:
|
57
61
|
static:
|
58
|
-
checksum:
|
62
|
+
checksum: 4179334f88dc32e00ce62aa196b3e47b4258b12ec48dd3cf722d4f6eeb4dc2c0
|
59
63
|
filename: appsignal-i686-linux-all-static.tar.gz
|
60
64
|
dynamic:
|
61
|
-
checksum:
|
65
|
+
checksum: 7c6bcc88e5d218c1986d1a9f1c9ad728c72e68a440656b2e9228d432ba300f86
|
62
66
|
filename: appsignal-i686-linux-all-dynamic.tar.gz
|
63
67
|
x86_64-linux:
|
64
68
|
static:
|
65
|
-
checksum:
|
69
|
+
checksum: d602823277cac752bdea742d928112cef457bc61ee05b960b316fc052f0cc714
|
66
70
|
filename: appsignal-x86_64-linux-all-static.tar.gz
|
67
71
|
dynamic:
|
68
|
-
checksum:
|
72
|
+
checksum: 2e9e955672dec266b408770638c0503a072410e03526b1eef2170326b083a42f
|
69
73
|
filename: appsignal-x86_64-linux-all-dynamic.tar.gz
|
70
74
|
x86_64-linux-musl:
|
71
75
|
static:
|
72
|
-
checksum:
|
76
|
+
checksum: dfbdff116339b99613fff6ed4092b772e58f0d3e667b7de347b4215fb7ea9d62
|
73
77
|
filename: appsignal-x86_64-linux-musl-all-static.tar.gz
|
74
78
|
dynamic:
|
75
|
-
checksum:
|
79
|
+
checksum: 560835ec657b471d50c765a932385cd0e3b6bdca54d2a5e28b4203e43869cf3d
|
76
80
|
filename: appsignal-x86_64-linux-musl-all-dynamic.tar.gz
|
77
81
|
x86_64-freebsd:
|
78
82
|
static:
|
79
|
-
checksum:
|
83
|
+
checksum: e31a7d89798193857247bd3590a554782fcff64b65d3da86d9c451d3147e961a
|
80
84
|
filename: appsignal-x86_64-freebsd-all-static.tar.gz
|
81
85
|
dynamic:
|
82
|
-
checksum:
|
86
|
+
checksum: e7f007cc385a23977ca93b58439dc720d703b7cc5929ef52a7acd59f74703b92
|
83
87
|
filename: appsignal-x86_64-freebsd-all-dynamic.tar.gz
|
84
88
|
amd64-freebsd:
|
85
89
|
static:
|
86
|
-
checksum:
|
90
|
+
checksum: e31a7d89798193857247bd3590a554782fcff64b65d3da86d9c451d3147e961a
|
87
91
|
filename: appsignal-x86_64-freebsd-all-static.tar.gz
|
88
92
|
dynamic:
|
89
|
-
checksum:
|
93
|
+
checksum: e7f007cc385a23977ca93b58439dc720d703b7cc5929ef52a7acd59f74703b92
|
90
94
|
filename: appsignal-x86_64-freebsd-all-dynamic.tar.gz
|
data/ext/appsignal_extension.c
CHANGED
@@ -19,6 +19,7 @@ VALUE Appsignal;
|
|
19
19
|
VALUE Extension;
|
20
20
|
VALUE Transaction;
|
21
21
|
VALUE Data;
|
22
|
+
VALUE Span;
|
22
23
|
|
23
24
|
static VALUE start(VALUE self) {
|
24
25
|
appsignal_start();
|
@@ -545,6 +546,180 @@ static VALUE data_to_s(VALUE self) {
|
|
545
546
|
}
|
546
547
|
}
|
547
548
|
|
549
|
+
static VALUE root_span_new(VALUE self, VALUE namespace) {
|
550
|
+
appsignal_span_t* span;
|
551
|
+
|
552
|
+
Check_Type(namespace, T_STRING);
|
553
|
+
|
554
|
+
span = appsignal_create_root_span(make_appsignal_string(namespace));
|
555
|
+
|
556
|
+
if (span) {
|
557
|
+
return Data_Wrap_Struct(Span, NULL, appsignal_free_span, span);
|
558
|
+
} else {
|
559
|
+
return Qnil;
|
560
|
+
}
|
561
|
+
}
|
562
|
+
|
563
|
+
static VALUE child_span_new(VALUE self) {
|
564
|
+
appsignal_span_t* parent;
|
565
|
+
appsignal_span_t* span;
|
566
|
+
|
567
|
+
Data_Get_Struct(self, appsignal_span_t, parent);
|
568
|
+
|
569
|
+
span = appsignal_create_child_span(parent);
|
570
|
+
|
571
|
+
if (span) {
|
572
|
+
return Data_Wrap_Struct(Span, NULL, appsignal_free_span, span);
|
573
|
+
} else {
|
574
|
+
return Qnil;
|
575
|
+
}
|
576
|
+
}
|
577
|
+
|
578
|
+
static VALUE set_span_name(VALUE self, VALUE name) {
|
579
|
+
appsignal_span_t* span;
|
580
|
+
|
581
|
+
Check_Type(name, T_STRING);
|
582
|
+
|
583
|
+
Data_Get_Struct(self, appsignal_span_t, span);
|
584
|
+
|
585
|
+
appsignal_set_span_name(span, make_appsignal_string(name));
|
586
|
+
return Qnil;
|
587
|
+
}
|
588
|
+
|
589
|
+
static VALUE add_span_error(VALUE self, VALUE name, VALUE message, VALUE backtrace) {
|
590
|
+
appsignal_span_t* span;
|
591
|
+
appsignal_data_t* backtrace_data;
|
592
|
+
|
593
|
+
Check_Type(name, T_STRING);
|
594
|
+
Check_Type(message, T_STRING);
|
595
|
+
Check_Type(backtrace, RUBY_T_DATA);
|
596
|
+
|
597
|
+
Data_Get_Struct(self, appsignal_span_t, span);
|
598
|
+
Data_Get_Struct(backtrace, appsignal_data_t, backtrace_data);
|
599
|
+
|
600
|
+
appsignal_add_span_error(
|
601
|
+
span,
|
602
|
+
make_appsignal_string(name),
|
603
|
+
make_appsignal_string(message),
|
604
|
+
backtrace_data
|
605
|
+
);
|
606
|
+
return Qnil;
|
607
|
+
}
|
608
|
+
|
609
|
+
static VALUE set_span_sample_data(VALUE self, VALUE key, VALUE payload) {
|
610
|
+
appsignal_span_t* span;
|
611
|
+
appsignal_data_t* payload_data;
|
612
|
+
|
613
|
+
Check_Type(key, T_STRING);
|
614
|
+
Check_Type(payload, RUBY_T_DATA);
|
615
|
+
|
616
|
+
Data_Get_Struct(self, appsignal_span_t, span);
|
617
|
+
Data_Get_Struct(payload, appsignal_data_t, payload_data);
|
618
|
+
|
619
|
+
appsignal_set_span_sample_data(
|
620
|
+
span,
|
621
|
+
make_appsignal_string(key),
|
622
|
+
payload_data
|
623
|
+
);
|
624
|
+
return Qnil;
|
625
|
+
}
|
626
|
+
|
627
|
+
static VALUE set_span_attribute_string(VALUE self, VALUE key, VALUE value) {
|
628
|
+
appsignal_span_t* span;
|
629
|
+
|
630
|
+
Check_Type(key, T_STRING);
|
631
|
+
Check_Type(value, T_STRING);
|
632
|
+
|
633
|
+
Data_Get_Struct(self, appsignal_span_t, span);
|
634
|
+
|
635
|
+
appsignal_set_span_attribute_string(
|
636
|
+
span,
|
637
|
+
make_appsignal_string(key),
|
638
|
+
make_appsignal_string(value)
|
639
|
+
);
|
640
|
+
|
641
|
+
return Qnil;
|
642
|
+
}
|
643
|
+
|
644
|
+
static VALUE set_span_attribute_int(VALUE self, VALUE key, VALUE value) {
|
645
|
+
appsignal_span_t* span;
|
646
|
+
VALUE value_type = TYPE(value);
|
647
|
+
|
648
|
+
Check_Type(key, T_STRING);
|
649
|
+
|
650
|
+
if (value_type != T_FIXNUM && value_type != T_BIGNUM) {
|
651
|
+
rb_raise(rb_eTypeError, "wrong argument type %s (expected Integer)", rb_obj_classname(value));
|
652
|
+
}
|
653
|
+
|
654
|
+
Data_Get_Struct(self, appsignal_span_t, span);
|
655
|
+
|
656
|
+
appsignal_set_span_attribute_int(
|
657
|
+
span,
|
658
|
+
make_appsignal_string(key),
|
659
|
+
NUM2LONG(value)
|
660
|
+
);
|
661
|
+
|
662
|
+
return Qnil;
|
663
|
+
}
|
664
|
+
|
665
|
+
static VALUE set_span_attribute_bool(VALUE self, VALUE key, VALUE value) {
|
666
|
+
appsignal_span_t* span;
|
667
|
+
|
668
|
+
Check_Type(key, T_STRING);
|
669
|
+
|
670
|
+
Data_Get_Struct(self, appsignal_span_t, span);
|
671
|
+
|
672
|
+
appsignal_set_span_attribute_bool(
|
673
|
+
span,
|
674
|
+
make_appsignal_string(key),
|
675
|
+
RTEST(value)
|
676
|
+
);
|
677
|
+
|
678
|
+
return Qnil;
|
679
|
+
}
|
680
|
+
|
681
|
+
static VALUE set_span_attribute_double(VALUE self, VALUE key, VALUE value) {
|
682
|
+
appsignal_span_t* span;
|
683
|
+
|
684
|
+
Check_Type(key, T_STRING);
|
685
|
+
Check_Type(value, T_FLOAT);
|
686
|
+
|
687
|
+
Data_Get_Struct(self, appsignal_span_t, span);
|
688
|
+
|
689
|
+
appsignal_set_span_attribute_double(
|
690
|
+
span,
|
691
|
+
make_appsignal_string(key),
|
692
|
+
NUM2DBL(value)
|
693
|
+
);
|
694
|
+
|
695
|
+
return Qnil;
|
696
|
+
}
|
697
|
+
|
698
|
+
static VALUE span_to_json(VALUE self) {
|
699
|
+
appsignal_span_t* span;
|
700
|
+
appsignal_string_t json;
|
701
|
+
|
702
|
+
Data_Get_Struct(self, appsignal_span_t, span);
|
703
|
+
|
704
|
+
json = appsignal_span_to_json(span);
|
705
|
+
|
706
|
+
if (json.len == 0) {
|
707
|
+
return Qnil;
|
708
|
+
} else {
|
709
|
+
return make_ruby_string(json);
|
710
|
+
}
|
711
|
+
}
|
712
|
+
|
713
|
+
static VALUE close_span(VALUE self) {
|
714
|
+
appsignal_span_t* span;
|
715
|
+
|
716
|
+
Data_Get_Struct(self, appsignal_span_t, span);
|
717
|
+
|
718
|
+
appsignal_close_span(span);
|
719
|
+
|
720
|
+
return Qnil;
|
721
|
+
}
|
722
|
+
|
548
723
|
static VALUE set_gauge(VALUE self, VALUE key, VALUE value, VALUE tags) {
|
549
724
|
appsignal_data_t* tags_data;
|
550
725
|
|
@@ -652,6 +827,7 @@ void Init_appsignal_extension(void) {
|
|
652
827
|
Extension = rb_define_class_under(Appsignal, "Extension", rb_cObject);
|
653
828
|
Transaction = rb_define_class_under(Extension, "Transaction", rb_cObject);
|
654
829
|
Data = rb_define_class_under(Extension, "Data", rb_cObject);
|
830
|
+
Span = rb_define_class_under(Extension, "Span", rb_cObject);
|
655
831
|
|
656
832
|
// Starting and stopping
|
657
833
|
rb_define_singleton_method(Extension, "start", start, 0);
|
@@ -705,6 +881,31 @@ void Init_appsignal_extension(void) {
|
|
705
881
|
// Get JSON content of a data
|
706
882
|
rb_define_method(Data, "to_s", data_to_s, 0);
|
707
883
|
|
884
|
+
// Create a span
|
885
|
+
rb_define_singleton_method(Span, "root", root_span_new, 1);
|
886
|
+
rb_define_method(Span, "child", child_span_new, 0);
|
887
|
+
|
888
|
+
// Set span error
|
889
|
+
rb_define_method(Span, "add_error", add_span_error, 3);
|
890
|
+
|
891
|
+
// Set span sample data
|
892
|
+
rb_define_method(Span, "set_sample_data", set_span_sample_data, 2);
|
893
|
+
|
894
|
+
// Span name and namespace
|
895
|
+
rb_define_method(Span, "set_name", set_span_name, 1);
|
896
|
+
|
897
|
+
// Set attributes on a span
|
898
|
+
rb_define_method(Span, "set_attribute_string", set_span_attribute_string, 2);
|
899
|
+
rb_define_method(Span, "set_attribute_int", set_span_attribute_int, 2);
|
900
|
+
rb_define_method(Span, "set_attribute_bool", set_span_attribute_bool, 2);
|
901
|
+
rb_define_method(Span, "set_attribute_double", set_span_attribute_double, 2);
|
902
|
+
|
903
|
+
// Span to json
|
904
|
+
rb_define_method(Span, "to_json", span_to_json, 0);
|
905
|
+
|
906
|
+
// Close span
|
907
|
+
rb_define_method(Span, "close", close_span, 0);
|
908
|
+
|
708
909
|
// Other helper methods
|
709
910
|
rb_define_singleton_method(Extension, "install_allocation_event_hook", install_allocation_event_hook, 0);
|
710
911
|
rb_define_singleton_method(Extension, "running_in_container?", running_in_container, 0);
|