console 1.34.0 → 1.34.2

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: a17ad8efc3e6a03b2da82f6de8e1964ebbced255ed80a8ccc91bf5973a025ee1
4
- data.tar.gz: dce3c6fa4e1efac9f2d38623fecbb52d2a88f03c3547105d112c3a13c46a8c7b
3
+ metadata.gz: 6602f8f73b2adbead7829f5e9476634f133233c7bbe6c3150392cbd6c3fb61d7
4
+ data.tar.gz: c954a7b9e8b6aedc3587a7380dbf4b6289ca424865eb22d00cb849afe02b3142
5
5
  SHA512:
6
- metadata.gz: bd9ee32eb63f0516bac970ea2bfa207c41f59fb7a05d3762bfd9e84b0b72d7e13628ffdb4ad5cdd33f280217064830dacc053abec3052f818b65135a432f4c68
7
- data.tar.gz: 24de30d8f9a3480a66b9c72b740cf7db0e326946c3d81fd09266fc71f282ffbfedea5fa5bb40c4ee3847673cb5ca58422e85250b0fdb7a52cfb2474beee7b65b
6
+ metadata.gz: f1d3e661229a45145fb0e817e4cee61949e15c0684ad49145ad8162f6b11df11329bfde79de66adaf13ecc12478507fcf3e10dc0b9c8d4d2cb9f60a345ee243d
7
+ data.tar.gz: c8cfe6575c401ac51e2869a97f317f5f8f2aa75cdc6215ce4c880740c7e0224ef053b252f9356eceb1e4c0d83c666945c40815faa61939438a2fd6451a5db629
checksums.yaml.gz.sig CHANGED
Binary file
@@ -2,6 +2,7 @@
2
2
 
3
3
  # Released under the MIT License.
4
4
  # Copyright, 2022-2025, by Samuel Williams.
5
+ # Copyright, 2025, by Yasha Krasnou.
5
6
 
6
7
  require "logger"
7
8
 
@@ -17,7 +17,7 @@ module Console
17
17
  # @parameter format [JSON] The format to use for serialization.
18
18
  # @parameter limit [Integer] The maximum depth to recurse into objects.
19
19
  # @parameter encoding [Encoding] The encoding to use for strings.
20
- def initialize(format: ::JSON, limit: 8, encoding: ::Encoding::UTF_8)
20
+ def initialize(format: ::JSON, limit: 12, encoding: ::Encoding::UTF_8)
21
21
  @format = format
22
22
  @limit = limit
23
23
  @encoding = encoding
@@ -96,21 +96,6 @@ module Console
96
96
  return object
97
97
  end
98
98
 
99
- # Replace the given object with a safe truncated representation.
100
- #
101
- # @parameter object [Object] The object to replace.
102
- # @returns [String] The replacement string.
103
- def replacement_for(object)
104
- case object
105
- when Array
106
- "[...]"
107
- when Hash
108
- "{...}"
109
- else
110
- "..."
111
- end
112
- end
113
-
114
99
  # Create a new hash with identity comparison.
115
100
  def default_objects
116
101
  Hash.new.compare_by_identity
@@ -123,40 +108,47 @@ module Console
123
108
  # @parameter objects [Hash] The objects that have already been visited.
124
109
  # @returns [Object] The dumped object as a primitive representation.
125
110
  def safe_dump_recurse(object, limit = @limit, objects = default_objects)
126
- if limit <= 0 || objects[object]
127
- return replacement_for(object)
128
- end
129
-
130
111
  case object
131
112
  when Hash
132
- objects[object] = true
133
-
134
- object.to_h do |key, value|
135
- [
136
- String(key).encode(@encoding, invalid: :replace, undef: :replace),
137
- safe_dump_recurse(value, limit - 1, objects)
138
- ]
113
+ if limit <= 0 || objects[object]
114
+ return "{...}"
115
+ else
116
+ objects[object] = true
117
+
118
+ return object.to_h do |key, value|
119
+ [
120
+ String(key).encode(@encoding, invalid: :replace, undef: :replace),
121
+ safe_dump_recurse(value, limit - 1, objects)
122
+ ]
123
+ end
139
124
  end
140
125
  when Array
141
- objects[object] = true
142
-
143
- object.map do |value|
144
- safe_dump_recurse(value, limit - 1, objects)
126
+ if limit <= 0 || objects[object]
127
+ return "[...]"
128
+ else
129
+ objects[object] = true
130
+
131
+ return object.map do |value|
132
+ safe_dump_recurse(value, limit - 1, objects)
133
+ end
145
134
  end
146
135
  when String
147
- object.encode(@encoding, invalid: :replace, undef: :replace)
136
+ return object.encode(@encoding, invalid: :replace, undef: :replace)
148
137
  when Numeric, TrueClass, FalseClass, NilClass
149
- object
138
+ return object
150
139
  else
151
- objects[object] = true
152
-
153
- # We could do something like this but the chance `as_json` will blow up.
154
- # We'd need to be extremely careful about it.
155
- # if object.respond_to?(:as_json)
156
- # safe_dump_recurse(object.as_json, limit - 1, objects)
157
- # else
158
-
159
- safe_dump_recurse(object.to_s, limit - 1, objects)
140
+ if limit <= 0 || objects[object]
141
+ return "..."
142
+ else
143
+ objects[object] = true
144
+
145
+ # We could do something like this but the chance `as_json` will blow up.
146
+ # We'd need to be extremely careful about it.
147
+ # if object.respond_to?(:as_json)
148
+ # safe_dump_recurse(object.as_json, limit - 1, objects)
149
+ # else
150
+ return safe_dump_recurse(object.to_s, limit - 1, objects)
151
+ end
160
152
  end
161
153
  end
162
154
  end
@@ -51,11 +51,13 @@ module Console
51
51
  record = {
52
52
  time: Time.now.iso8601,
53
53
  severity: severity,
54
- pid: Process.pid,
55
- oid: subject.object_id,
54
+ process_id: Process.pid,
56
55
  fiber_id: Fiber.current.object_id,
57
56
  }
58
57
 
58
+ # For backwards compatibility:
59
+ record[:pid] = record[:process_id]
60
+
59
61
  # We want to log just a brief subject:
60
62
  if subject.is_a?(String)
61
63
  record[:subject] = subject
@@ -63,6 +65,7 @@ module Console
63
65
  record[:subject] = subject.name
64
66
  else
65
67
  record[:subject] = subject.class.name
68
+ record[:object_id] = subject.object_id
66
69
  end
67
70
 
68
71
  if annotation = Fiber.current.annotation
@@ -4,5 +4,5 @@
4
4
  # Copyright, 2019-2025, by Samuel Williams.
5
5
 
6
6
  module Console
7
- VERSION = "1.34.0"
7
+ VERSION = "1.34.2"
8
8
  end
data/license.md CHANGED
@@ -12,6 +12,7 @@ Copyright, 2022, by William T. Nelson.
12
12
  Copyright, 2023, by Felix Yan.
13
13
  Copyright, 2024-2025, by Patrik Wenger.
14
14
  Copyright, 2025, by Shigeru Nakajima.
15
+ Copyright, 2025, by Yasha Krasnou.
15
16
 
16
17
  Permission is hereby granted, free of charge, to any person obtaining a copy
17
18
  of this software and associated documentation files (the "Software"), to deal
data/readme.md CHANGED
@@ -34,6 +34,11 @@ Please see the [project documentation](https://socketry.github.io/console/) for
34
34
 
35
35
  Please see the [project releases](https://socketry.github.io/console/releases/index) for all releases.
36
36
 
37
+ ### v1.34.1
38
+
39
+ - Add `process_id` to serialized output records for clarity (`pid` is still included for backwards compatibility).
40
+ - Add `object_id` to serialized output records **only** when the subject is not a string or class/module.
41
+
37
42
  ### v1.34.0
38
43
 
39
44
  - Allow `Console::Compatible::Logger#add` to accept `**options`.
data/releases.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Releases
2
2
 
3
+ ## v1.34.1
4
+
5
+ - Add `process_id` to serialized output records for clarity (`pid` is still included for backwards compatibility).
6
+ - Add `object_id` to serialized output records **only** when the subject is not a string or class/module.
7
+
3
8
  ## v1.34.0
4
9
 
5
10
  - Allow `Console::Compatible::Logger#add` to accept `**options`.
@@ -18,9 +23,9 @@ The console library now works correctly with Ruby's Ractor concurrency model. Pr
18
23
  ``` ruby
19
24
  # This now works without errors:
20
25
  ractor = Ractor.new do
21
- require 'console'
22
- Console.info('Hello from Ractor!')
23
- 'Ractor completed successfully'
26
+ require "console"
27
+ Console.info("Hello from Ractor!")
28
+ "Ractor completed successfully"
24
29
  end
25
30
 
26
31
  result = ractor.take
@@ -81,7 +86,7 @@ def make_logger(output = $stderr, env = ENV, **options)
81
86
  # Custom logger configuration with verbose output:
82
87
  options[:verbose] = true
83
88
 
84
- Logger.new(output, **options)
89
+ Logger.new(output, **options)
85
90
  end
86
91
  ```
87
92
 
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: console
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.34.0
4
+ version: 1.34.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
@@ -16,6 +16,7 @@ authors:
16
16
  - Olle Jonsson
17
17
  - Shigeru Nakajima
18
18
  - William T. Nelson
19
+ - Yasha Krasnou
19
20
  bindir: bin
20
21
  cert_chain:
21
22
  - |
@@ -153,7 +154,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
153
154
  - !ruby/object:Gem::Version
154
155
  version: '0'
155
156
  requirements: []
156
- rubygems_version: 3.7.0.dev
157
+ rubygems_version: 3.7.2
157
158
  specification_version: 4
158
159
  summary: Beautiful logging for Ruby.
159
160
  test_files: []
metadata.gz.sig CHANGED
Binary file