traces 0.8.0 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5607b84ea305909814070a3f676a482f8bcba4e5cdd9c02a596c2ff5b3339581
4
- data.tar.gz: 77dd122a80f5076fd4e756fd1c1b552d39e3933590e5d9e4eabc6cfaf99a2029
3
+ metadata.gz: 47a1acf4edcb177776f172b8743e6beeae7161c6651819eab63a0206d15a7110
4
+ data.tar.gz: 613f2bc265314167f2673a67a27cae51d5dd471479e9891da2de915611936846
5
5
  SHA512:
6
- metadata.gz: cd270af76e74ef101e0aa96fd4c12a8447ee816915f0396242908124b4b32257a6c13fc8121c1aa7cd3c8afccdbaf9ce8fb20a5808c2e4180a5899f51f51a9d1
7
- data.tar.gz: 7198fdcbfc650f41cc3bdc6487481d9aa1a3e1e180bda5ae851ea116d0eff9bb2c11688b5b72483d88362dfefcb7dcd16be9777d80b58ac7386bf585bbddd488
6
+ metadata.gz: f74c9b5e55f2b231db24aaea42fb0fb1d5803b0e0da7f5332fc72158a5ddf5b59d1f2be8ad7fbb32f9c86890ffb517aa396eef32312b9758ef5bed35595a3cb4
7
+ data.tar.gz: e54b6e4ab49a9a1c9fe9426e4d473eefe9ad43f6c53b8a562f0013c280df6ed27f675e2f77dc7693b77d63590809c627eb051f16a0ac8d941102e79c6045c480
checksums.yaml.gz.sig CHANGED
Binary file
data/conduct.md ADDED
@@ -0,0 +1,133 @@
1
+
2
+ # Contributor Covenant Code of Conduct
3
+
4
+ ## Our Pledge
5
+
6
+ We as members, contributors, and leaders pledge to make participation in our
7
+ community a harassment-free experience for everyone, regardless of age, body
8
+ size, visible or invisible disability, ethnicity, sex characteristics, gender
9
+ identity and expression, level of experience, education, socio-economic status,
10
+ nationality, personal appearance, race, caste, color, religion, or sexual
11
+ identity and orientation.
12
+
13
+ We pledge to act and interact in ways that contribute to an open, welcoming,
14
+ diverse, inclusive, and healthy community.
15
+
16
+ ## Our Standards
17
+
18
+ Examples of behavior that contributes to a positive environment for our
19
+ community include:
20
+
21
+ * Demonstrating empathy and kindness toward other people
22
+ * Being respectful of differing opinions, viewpoints, and experiences
23
+ * Giving and gracefully accepting constructive feedback
24
+ * Accepting responsibility and apologizing to those affected by our mistakes,
25
+ and learning from the experience
26
+ * Focusing on what is best not just for us as individuals, but for the overall
27
+ community
28
+
29
+ Examples of unacceptable behavior include:
30
+
31
+ * The use of sexualized language or imagery, and sexual attention or advances of
32
+ any kind
33
+ * Trolling, insulting or derogatory comments, and personal or political attacks
34
+ * Public or private harassment
35
+ * Publishing others' private information, such as a physical or email address,
36
+ without their explicit permission
37
+ * Other conduct which could reasonably be considered inappropriate in a
38
+ professional setting
39
+
40
+ ## Enforcement Responsibilities
41
+
42
+ Community leaders are responsible for clarifying and enforcing our standards of
43
+ acceptable behavior and will take appropriate and fair corrective action in
44
+ response to any behavior that they deem inappropriate, threatening, offensive,
45
+ or harmful.
46
+
47
+ Community leaders have the right and responsibility to remove, edit, or reject
48
+ comments, commits, code, wiki edits, issues, and other contributions that are
49
+ not aligned to this Code of Conduct, and will communicate reasons for moderation
50
+ decisions when appropriate.
51
+
52
+ ## Scope
53
+
54
+ This Code of Conduct applies within all community spaces, and also applies when
55
+ an individual is officially representing the community in public spaces.
56
+ Examples of representing our community include using an official e-mail address,
57
+ posting via an official social media account, or acting as an appointed
58
+ representative at an online or offline event.
59
+
60
+ ## Enforcement
61
+
62
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be
63
+ reported to the community leaders responsible for enforcement at
64
+ [INSERT CONTACT METHOD].
65
+ All complaints will be reviewed and investigated promptly and fairly.
66
+
67
+ All community leaders are obligated to respect the privacy and security of the
68
+ reporter of any incident.
69
+
70
+ ## Enforcement Guidelines
71
+
72
+ Community leaders will follow these Community Impact Guidelines in determining
73
+ the consequences for any action they deem in violation of this Code of Conduct:
74
+
75
+ ### 1. Correction
76
+
77
+ **Community Impact**: Use of inappropriate language or other behavior deemed
78
+ unprofessional or unwelcome in the community.
79
+
80
+ **Consequence**: A private, written warning from community leaders, providing
81
+ clarity around the nature of the violation and an explanation of why the
82
+ behavior was inappropriate. A public apology may be requested.
83
+
84
+ ### 2. Warning
85
+
86
+ **Community Impact**: A violation through a single incident or series of
87
+ actions.
88
+
89
+ **Consequence**: A warning with consequences for continued behavior. No
90
+ interaction with the people involved, including unsolicited interaction with
91
+ those enforcing the Code of Conduct, for a specified period of time. This
92
+ includes avoiding interactions in community spaces as well as external channels
93
+ like social media. Violating these terms may lead to a temporary or permanent
94
+ ban.
95
+
96
+ ### 3. Temporary Ban
97
+
98
+ **Community Impact**: A serious violation of community standards, including
99
+ sustained inappropriate behavior.
100
+
101
+ **Consequence**: A temporary ban from any sort of interaction or public
102
+ communication with the community for a specified period of time. No public or
103
+ private interaction with the people involved, including unsolicited interaction
104
+ with those enforcing the Code of Conduct, is allowed during this period.
105
+ Violating these terms may lead to a permanent ban.
106
+
107
+ ### 4. Permanent Ban
108
+
109
+ **Community Impact**: Demonstrating a pattern of violation of community
110
+ standards, including sustained inappropriate behavior, harassment of an
111
+ individual, or aggression toward or disparagement of classes of individuals.
112
+
113
+ **Consequence**: A permanent ban from any sort of public interaction within the
114
+ community.
115
+
116
+ ## Attribution
117
+
118
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage],
119
+ version 2.1, available at
120
+ [https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
121
+
122
+ Community Impact Guidelines were inspired by
123
+ [Mozilla's code of conduct enforcement ladder][Mozilla CoC].
124
+
125
+ For answers to common questions about this code of conduct, see the FAQ at
126
+ [https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
127
+ [https://www.contributor-covenant.org/translations][translations].
128
+
129
+ [homepage]: https://www.contributor-covenant.org
130
+ [v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
131
+ [Mozilla CoC]: https://github.com/mozilla/diversity
132
+ [FAQ]: https://www.contributor-covenant.org/faq
133
+ [translations]: https://www.contributor-covenant.org/translations
@@ -0,0 +1,87 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Released under the MIT License.
4
+ # Copyright, 2023, by Samuel Williams.
5
+
6
+ require_relative '../context'
7
+
8
+ require 'fiber'
9
+
10
+ class Fiber
11
+ attr_accessor :traces_backend_context
12
+ end
13
+
14
+ module Traces
15
+ module Backend
16
+ # A backend which logs all spans to the Capture logger output.
17
+ module Capture
18
+ # A span which validates tag assignment.
19
+ class Span
20
+ def initialize(context, instance, name, resource, attributes)
21
+ @context = context
22
+ @instance = instance
23
+ @name = name
24
+ @resource = resource
25
+ @attributes = attributes
26
+ end
27
+
28
+ attr :context
29
+ attr :instance
30
+ attr :name
31
+ attr :resource
32
+ attr :attributes
33
+
34
+ # Assign some metadata to the span.
35
+ # @parameter key [String] The metadata key.
36
+ # @parameter value [Object] The metadata value. Should be coercable to a string.
37
+ def []= key, value
38
+ @attributes[key] = value
39
+ end
40
+
41
+ def as_json
42
+ {
43
+ name: @name,
44
+ resource: @resource,
45
+ attributes: @attributes,
46
+ context: @context.as_json
47
+ }
48
+ end
49
+
50
+ def to_json(...)
51
+ as_json.to_json(...)
52
+ end
53
+ end
54
+
55
+ def self.spans
56
+ @spans ||= []
57
+ end
58
+
59
+ module Interface
60
+ # Trace the given block of code and log the execution.
61
+ # @parameter name [String] A useful name/annotation for the recorded span.
62
+ # @parameter attributes [Hash] Metadata for the recorded span.
63
+ def trace(name, resource: self, attributes: {}, &block)
64
+ context = Context.nested(Fiber.current.traces_backend_context)
65
+ Fiber.current.traces_backend_context = context
66
+
67
+ span = Span.new(context, self, name, resource, attributes)
68
+ Capture.spans << span
69
+
70
+ yield span
71
+ end
72
+
73
+ # Assign a trace context to the current execution scope.
74
+ def trace_context= context
75
+ Fiber.current.traces_backend_context = context
76
+ end
77
+
78
+ # Get a trace context from the current execution scope.
79
+ def trace_context
80
+ Fiber.current.traces_backend_context
81
+ end
82
+ end
83
+ end
84
+
85
+ Interface = Capture::Interface
86
+ end
87
+ end
@@ -1,13 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2021-2022, by Samuel Williams.
4
+ # Copyright, 2021-2023, by Samuel Williams.
5
5
 
6
6
  module Traces
7
7
  # Require a specific trace backend.
8
8
  def self.require_backend(env = ENV)
9
9
  if backend = env['TRACES_BACKEND']
10
10
  require(backend)
11
+
12
+ Traces.extend(Backend::Interface)
11
13
  end
12
14
  end
13
15
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2021-2022, by Samuel Williams.
4
+ # Copyright, 2021-2023, by Samuel Williams.
5
5
 
6
6
  require 'securerandom'
7
7
 
@@ -86,5 +86,19 @@ module Traces
86
86
  def to_s
87
87
  "00-#{@trace_id}-#{@parent_id}-#{@flags.to_s(16)}"
88
88
  end
89
+
90
+ def as_json
91
+ {
92
+ trace_id: @trace_id,
93
+ parent_id: @parent_id,
94
+ flags: @flags,
95
+ state: @state,
96
+ remote: @remote
97
+ }
98
+ end
99
+
100
+ def to_json(...)
101
+ as_json.to_json(...)
102
+ end
89
103
  end
90
104
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2021-2022, by Samuel Williams.
4
+ # Copyright, 2021-2023, by Samuel Williams.
5
5
 
6
6
  require_relative 'backend'
7
7
 
@@ -21,6 +21,23 @@ module Traces
21
21
  end
22
22
  end
23
23
 
24
+ module Deprecated
25
+ def trace(...)
26
+ warn "Traces::Provider.trace is deprecated. Please use Traces.trace instead."
27
+ Traces.trace(...)
28
+ end
29
+
30
+ def trace_context
31
+ warn "Traces::Provider.trace_context is deprecated. Please use Traces.trace_context instead."
32
+ Traces.trace_context
33
+ end
34
+
35
+ def trace_context=(value)
36
+ warn "Traces::Provider.trace_context= is deprecated. Please use Traces.trace_context= instead."
37
+ Traces.trace_context = value
38
+ end
39
+ end
40
+
24
41
  private_constant :Singleton
25
42
 
26
43
  # Bail out if there is no backend configured.
@@ -30,7 +47,7 @@ module Traces
30
47
  klass.extend(Singleton)
31
48
 
32
49
  provider = klass.traces_provider
33
- provider.prepend(Backend::Interface)
50
+ provider.prepend(Deprecated)
34
51
 
35
52
  klass.prepend(provider)
36
53
 
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2021-2022, by Samuel Williams.
4
+ # Copyright, 2021-2023, by Samuel Williams.
5
5
 
6
6
  module Traces
7
- VERSION = "0.8.0"
7
+ VERSION = "0.10.0"
8
8
  end
data/license.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # MIT License
2
2
 
3
- Copyright, 2021-2022, by Samuel Williams.
3
+ Copyright, 2021-2023, by Samuel Williams.
4
4
  Copyright, 2022, by Felix Yan.
5
5
 
6
6
  Permission is hereby granted, free of charge, to any person obtaining a copy
data/readme.md CHANGED
@@ -17,11 +17,11 @@ Please see the [project documentation](https://socketry.github.io/traces).
17
17
 
18
18
  We welcome contributions to this project.
19
19
 
20
- 1. Fork it
21
- 2. Create your feature branch (`git checkout -b my-new-feature`)
22
- 3. Commit your changes (`git commit -am 'Add some feature'`)
23
- 4. Push to the branch (`git push origin my-new-feature`)
24
- 5. Create new Pull Request
20
+ 1. Fork it.
21
+ 2. Create your feature branch (`git checkout -b my-new-feature`).
22
+ 3. Commit your changes (`git commit -am 'Add some feature'`).
23
+ 4. Push to the branch (`git push origin my-new-feature`).
24
+ 5. Create new Pull Request.
25
25
 
26
26
  ## See Also
27
27
 
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: traces
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
@@ -38,7 +38,7 @@ cert_chain:
38
38
  Q2K9NVun/S785AP05vKkXZEFYxqG6EW012U4oLcFl5MySFajYXRYbuUpH6AY+HP8
39
39
  voD0MPg1DssDLKwXyt1eKD/+Fq0bFWhwVM/1XiAXL7lyYUyOq24KHgQ2Csg=
40
40
  -----END CERTIFICATE-----
41
- date: 2022-11-10 00:00:00.000000000 Z
41
+ date: 2023-06-19 00:00:00.000000000 Z
42
42
  dependencies:
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: bake-test
@@ -102,8 +102,10 @@ executables: []
102
102
  extensions: []
103
103
  extra_rdoc_files: []
104
104
  files:
105
+ - conduct.md
105
106
  - lib/traces.rb
106
107
  - lib/traces/backend.rb
108
+ - lib/traces/backend/capture.rb
107
109
  - lib/traces/backend/console.rb
108
110
  - lib/traces/backend/test.rb
109
111
  - lib/traces/context.rb
@@ -130,7 +132,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
130
132
  - !ruby/object:Gem::Version
131
133
  version: '0'
132
134
  requirements: []
133
- rubygems_version: 3.3.7
135
+ rubygems_version: 3.4.7
134
136
  signing_key:
135
137
  specification_version: 4
136
138
  summary: Application instrumentation and tracing.
metadata.gz.sig CHANGED
Binary file