appsignal 3.0.13-java → 3.0.17-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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c2ad56c76ffe589252e58824668fcf4b0ea70025164a3b20f69ddc25a1b55eb6
4
- data.tar.gz: 034a9a83ef46e29a8b629c7cf8618d07ea2b93948a5f79d70f6841fc1125ce40
3
+ metadata.gz: 84c66fc5245b46c64b7a4d031d54d5962b722cddbd70a29fc56629d398192ceb
4
+ data.tar.gz: '095d567f4576b945245623cdfc3adb5e4d0f13c57be7a346e8839c9cd4dfd917'
5
5
  SHA512:
6
- metadata.gz: cbc8c1b3a5c16d877c41650211647a13e29a6c938175b81d35199a7cecf1708a3877244a7bae24eba6ced4c509e589de361083f8d89757c69301963b30a621bd
7
- data.tar.gz: 68d61ffef895fd5f77f41873e19944bc419b9a9c819b7db06b889b196870445c92ddcfb6b96378f04b4d6d8eca239ea3d9d146b31d3667a18f267b4ad7e8a6b6
6
+ metadata.gz: 3884e316ba9c491956a37059591d6ed67cb2a068346980352d0104ab64b429498145586099470a336e4e6a82cc156fd35414c34729e239eef03a28af4227cfcc
7
+ data.tar.gz: e8be655962ae38665b68f43ef7255c9638ad36d5be796011e14cde14ef766522489ec3312a16387511b67c990f0e0076f06fd87f3b8f869e83a57a6678677e37
@@ -11,7 +11,7 @@ agent:
11
11
  os_image: ubuntu1804
12
12
  auto_cancel:
13
13
  running:
14
- when: branch != 'main' AND branch != 'develop' AND branch != 'diagnose-testing'
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/install_lintje
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: 2.6.6
116
+ value: 3.0.2
121
117
  - name: LANGUAGE
122
118
  value: ruby
123
119
  commands:
data/CHANGELOG.md CHANGED
@@ -1,5 +1,64 @@
1
1
  # AppSignal for Ruby gem Changelog
2
2
 
3
+ ## 3.0.17
4
+
5
+ ### Fixed
6
+
7
+ - [f9d57752](https://github.com/appsignal/appsignal-ruby/commit/f9d5775217400c59a70d98e9aa96e3dcd06cb1f9) patch - Use the `log_level` option for the Ruby gem logger. Previously it only configured the extension and agent loggers. Also fixes the `debug` and `transaction_debug_mode` option if no `log_level` is configured by the app.
8
+
9
+ ## 3.0.16
10
+
11
+ ### Added
12
+
13
+ - [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.
14
+ - [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
15
+ AppSignal's will log and up. The "debug" option will log all "debug", "info", "warning" and
16
+ "error" log messages. The default value is: "info"
17
+
18
+ The allowed values are:
19
+ - error
20
+ - warning
21
+ - info
22
+ - debug
23
+ - [6b2ecca2](https://github.com/appsignal/appsignal-ruby/commit/6b2ecca24603061f1b35800f60b0ee6e9f314998) patch - Clean up index values in error messages from PG index violation errors.
24
+
25
+ ### Changed
26
+
27
+ - [25bde454](https://github.com/appsignal/appsignal-ruby/commit/25bde454f82776f8d2ea1fd4dbb00a73e414076e) patch - Order the config options alphabetically in diagnose report output.
28
+ - [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.
29
+ - [fe226e99](https://github.com/appsignal/appsignal-ruby/commit/fe226e99f262bfa46e7a7630defe2fe90f8a3a13) patch - Standardize diagnose validation failure message. Explain the diagnose request failed and why.
30
+ - [fe226e99](https://github.com/appsignal/appsignal-ruby/commit/fe226e99f262bfa46e7a7630defe2fe90f8a3a13) patch - Bump agent to v-5b63505
31
+
32
+ - Only filter parameters with the `filter_parameters` config option.
33
+ - Only filter session data with the `filter_session_data` config option.
34
+ - [3ad95ea5](https://github.com/appsignal/appsignal-ruby/commit/3ad95ea5dd8a9488d293a652231950bd4a721e6c) patch - Bump agent to v-0db01c2
35
+
36
+ - Add `log_level` config option in extension.
37
+ - Deprecate `debug` and `transaction_debug_mode` option in extension.
38
+
39
+ ### Deprecated
40
+
41
+ - [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"
42
+ config option.
43
+
44
+ ## 3.0.15
45
+
46
+ - [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.
47
+ - [fd6faf16](https://github.com/appsignal/appsignal-ruby/commit/fd6faf16d9feb73c3076c2e1283f6101dc4abf97) patch - Bump agent to 09308fb
48
+
49
+ - Update sql_lexer dependency with support for reversed operators in queries.
50
+ - Add debug level logging to custom metrics in transaction_debug_mode.
51
+ - Add hostname config option to standalone agent.
52
+
53
+ ## 3.0.14
54
+
55
+ - [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.
56
+ - [7c18fb6d](https://github.com/appsignal/appsignal-ruby/commit/7c18fb6db0c72f32adb6803ccde957963977008a) patch - Bump agent to 7376537
57
+
58
+ - Support JSON PostgreSQL operator in sql_lexer.
59
+ - Do not strip comments from SQL queries.
60
+ - [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`.
61
+
3
62
  ## 3.0.13
4
63
 
5
64
  - [5c202185](https://github.com/appsignal/appsignal-ruby/commit/5c20218526e026ab436854508ccfe26ca55e8f15) patch - Bump agent to v-0318770.
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' AND branch != 'diagnose-testing'"
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/install_lintje
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: 2.6.6
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: '0318770'
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: 7b17cb76edc58ea54381455f74934d08efbfb7807007e97ae01f751101da8b50
13
+ checksum: 8a7cf35f8c9aa98e7778b720f33b38bfbdedcdedb0047035259ab187517be971
10
14
  filename: appsignal-x86_64-darwin-all-static.tar.gz
11
15
  dynamic:
12
- checksum: e89f0ba9d1a00fbedeef7ebd2b4f32f0a93cc08ebed0062a150e0613c4324810
16
+ checksum: 4330f83a44db6f092b3f437d942204e9bf7f7022ae2cc24ade4e7b4137905d03
13
17
  filename: appsignal-x86_64-darwin-all-dynamic.tar.gz
14
18
  universal-darwin:
15
19
  static:
16
- checksum: 7b17cb76edc58ea54381455f74934d08efbfb7807007e97ae01f751101da8b50
20
+ checksum: 8a7cf35f8c9aa98e7778b720f33b38bfbdedcdedb0047035259ab187517be971
17
21
  filename: appsignal-x86_64-darwin-all-static.tar.gz
18
22
  dynamic:
19
- checksum: e89f0ba9d1a00fbedeef7ebd2b4f32f0a93cc08ebed0062a150e0613c4324810
23
+ checksum: 4330f83a44db6f092b3f437d942204e9bf7f7022ae2cc24ade4e7b4137905d03
20
24
  filename: appsignal-x86_64-darwin-all-dynamic.tar.gz
21
25
  aarch64-darwin:
22
26
  static:
23
- checksum: d90172492ccf83527696fcd0353796d3d0d4e1704ff986ae90a774a7f11a85a2
27
+ checksum: a22cd07e656f194dd1921983be6507816b60c79bc0c4623d2cac5c88fda9d407
24
28
  filename: appsignal-aarch64-darwin-all-static.tar.gz
25
29
  dynamic:
26
- checksum: 26677b83d08369ce34026f461c61ea25c645a327129d44871f2ada581de9569f
30
+ checksum: 0535e4506ccd2230dfa59fee5ba00ec6d3a2ff67693bf1b622e7a454fc1a5851
27
31
  filename: appsignal-aarch64-darwin-all-dynamic.tar.gz
28
32
  arm64-darwin:
29
33
  static:
30
- checksum: d90172492ccf83527696fcd0353796d3d0d4e1704ff986ae90a774a7f11a85a2
34
+ checksum: a22cd07e656f194dd1921983be6507816b60c79bc0c4623d2cac5c88fda9d407
31
35
  filename: appsignal-aarch64-darwin-all-static.tar.gz
32
36
  dynamic:
33
- checksum: 26677b83d08369ce34026f461c61ea25c645a327129d44871f2ada581de9569f
37
+ checksum: 0535e4506ccd2230dfa59fee5ba00ec6d3a2ff67693bf1b622e7a454fc1a5851
34
38
  filename: appsignal-aarch64-darwin-all-dynamic.tar.gz
35
39
  arm-darwin:
36
40
  static:
37
- checksum: d90172492ccf83527696fcd0353796d3d0d4e1704ff986ae90a774a7f11a85a2
41
+ checksum: a22cd07e656f194dd1921983be6507816b60c79bc0c4623d2cac5c88fda9d407
38
42
  filename: appsignal-aarch64-darwin-all-static.tar.gz
39
43
  dynamic:
40
- checksum: 26677b83d08369ce34026f461c61ea25c645a327129d44871f2ada581de9569f
44
+ checksum: 0535e4506ccd2230dfa59fee5ba00ec6d3a2ff67693bf1b622e7a454fc1a5851
41
45
  filename: appsignal-aarch64-darwin-all-dynamic.tar.gz
42
46
  aarch64-linux:
43
47
  static:
44
- checksum: bef06f27d98cc1afc30b2d8fa23af69bd0206407b0d8d2f052278de3b8c5f2b5
48
+ checksum: edf43f1a6b340c0afa07c7b71963def9bb68bd8d62d17cb64a7f7a36f84a4517
45
49
  filename: appsignal-aarch64-linux-all-static.tar.gz
46
50
  dynamic:
47
- checksum: ad8d4db1ba97afb662d32ffb3fa63b4302f87c4e58a23dd69c938dea3fe86037
51
+ checksum: 8390561e1a41e4b8bba8e4f92b9b49f957650eca21d281589143b9c3764f504e
48
52
  filename: appsignal-aarch64-linux-all-dynamic.tar.gz
49
53
  i686-linux:
50
54
  static:
51
- checksum: 7e0aa277c4e49ebe1b805e9db615544c5488a23d8b439867a2a6357d37c897bc
55
+ checksum: 4179334f88dc32e00ce62aa196b3e47b4258b12ec48dd3cf722d4f6eeb4dc2c0
52
56
  filename: appsignal-i686-linux-all-static.tar.gz
53
57
  dynamic:
54
- checksum: e3e825cdeaab9610eedda74403a01ea8a250c180c9d9703b91444035fdd4e623
58
+ checksum: 7c6bcc88e5d218c1986d1a9f1c9ad728c72e68a440656b2e9228d432ba300f86
55
59
  filename: appsignal-i686-linux-all-dynamic.tar.gz
56
60
  x86-linux:
57
61
  static:
58
- checksum: 7e0aa277c4e49ebe1b805e9db615544c5488a23d8b439867a2a6357d37c897bc
62
+ checksum: 4179334f88dc32e00ce62aa196b3e47b4258b12ec48dd3cf722d4f6eeb4dc2c0
59
63
  filename: appsignal-i686-linux-all-static.tar.gz
60
64
  dynamic:
61
- checksum: e3e825cdeaab9610eedda74403a01ea8a250c180c9d9703b91444035fdd4e623
65
+ checksum: 7c6bcc88e5d218c1986d1a9f1c9ad728c72e68a440656b2e9228d432ba300f86
62
66
  filename: appsignal-i686-linux-all-dynamic.tar.gz
63
67
  x86_64-linux:
64
68
  static:
65
- checksum: e918e24ff1f86d939b8f571506b11f2890d81c741de56cb06ac81b5dcc3f70e1
69
+ checksum: d602823277cac752bdea742d928112cef457bc61ee05b960b316fc052f0cc714
66
70
  filename: appsignal-x86_64-linux-all-static.tar.gz
67
71
  dynamic:
68
- checksum: b1420778946b15931b2acc8813ec50d1642ac94e56e8c4f81aa3ce7a3592531e
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: 1a90421519d7860bf41d606866252cc7f1cb828a7efb9622045ee4f04d757ebd
76
+ checksum: dfbdff116339b99613fff6ed4092b772e58f0d3e667b7de347b4215fb7ea9d62
73
77
  filename: appsignal-x86_64-linux-musl-all-static.tar.gz
74
78
  dynamic:
75
- checksum: 242da6e33a6b5579a829a178780554f46fc8083f05eecf7d366cd5385a8da994
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: 22cdd8e44e60dd69003d28ea95c994c27d2223a3872c541c966f32dbea3b0462
83
+ checksum: e31a7d89798193857247bd3590a554782fcff64b65d3da86d9c451d3147e961a
80
84
  filename: appsignal-x86_64-freebsd-all-static.tar.gz
81
85
  dynamic:
82
- checksum: 859d6950a25c38a1bd5e262e0b91c409eb16b97d136e132a86747cd0f92e5c31
86
+ checksum: e7f007cc385a23977ca93b58439dc720d703b7cc5929ef52a7acd59f74703b92
83
87
  filename: appsignal-x86_64-freebsd-all-dynamic.tar.gz
84
88
  amd64-freebsd:
85
89
  static:
86
- checksum: 22cdd8e44e60dd69003d28ea95c994c27d2223a3872c541c966f32dbea3b0462
90
+ checksum: e31a7d89798193857247bd3590a554782fcff64b65d3da86d9c451d3147e961a
87
91
  filename: appsignal-x86_64-freebsd-all-static.tar.gz
88
92
  dynamic:
89
- checksum: 859d6950a25c38a1bd5e262e0b91c409eb16b97d136e132a86747cd0f92e5c31
93
+ checksum: e7f007cc385a23977ca93b58439dc720d703b7cc5929ef52a7acd59f74703b92
90
94
  filename: appsignal-x86_64-freebsd-all-dynamic.tar.gz
@@ -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);