lumberjack_json_device 2.2.0 → 2.2.1

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: 5056428eb1c260cf68a1742064c824645ef8df0c71164a20fd8f03bb5b3f1bbc
4
- data.tar.gz: 69ff5c7d4c88a90b5be63b9d77724b4c36f090a109791c0819bbe0f97934d0f7
3
+ metadata.gz: 2951abe63ac8a86b39a1bd6f8cc47b4aebda9be19a18ac2bc1b152f1a1e9342e
4
+ data.tar.gz: dd5b262268cce9d7a2423562c412d2afc3d712db699690cd21dad056c82083f8
5
5
  SHA512:
6
- metadata.gz: 03f44e6637e5fd9df15ccef421ebafcc035498ff272afae0c3845997bfd63099a11bc2425051fa4a94e8bf20eef7419ee961511b6fcba1a675537fc8ebaf28f3
7
- data.tar.gz: a5a0bfdc425825484dd1cd0c95ea788919189c594cf5fb7ed55107e14655b7be55a2826f71758b2b1c93e91695c2506f84eeacc690e88919b579da339abddba0
6
+ metadata.gz: 8f07e47c180e3efebf3f27409b0022312e6504f172abcddc278ab16393fd2b243f39f72604f59eb680dcd6014af90947e884b57b7b85f2f2dbcf7d0aa5ff3906
7
+ data.tar.gz: 79b382f576fb469373f3ca33b8b0e2473bb988bdcf93dc4f1c1c8da4c457a6fdc25bf072bcdc88baa7ed916620dfe602fa6ea4f61fa3c76d9478b989b81cb523
data/CHANGE_LOG.md CHANGED
@@ -4,6 +4,12 @@ All notable changes to this project will be documented in this file.
4
4
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
5
5
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## 2.2.1
8
+
9
+ ## Changed
10
+
11
+ - Added error handling for JSON serialization. This ensures that logs can still be written to even if an error occurs during serialization.
12
+
7
13
  ## 2.2.0
8
14
 
9
15
  ### Changed
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.2.0
1
+ 2.2.1
@@ -263,8 +263,9 @@ module Lumberjack
263
263
  end
264
264
  end
265
265
 
266
- def json_safe(value)
266
+ def json_safe(value, seen = nil)
267
267
  return nil if value.nil?
268
+ return nil if seen&.include?(value.object_id)
268
269
 
269
270
  # Check if the as_json method is defined takes no parameters
270
271
  as_json_arity = value.method(:as_json).arity if value.respond_to?(:as_json)
@@ -272,12 +273,21 @@ module Lumberjack
272
273
  if as_json_arity == 0 || as_json_arity == -1
273
274
  value.as_json
274
275
  elsif value.is_a?(Hash)
275
- value.transform_values { |v| json_safe(v) }
276
+ seen ||= Set.new
277
+ seen << value.object_id
278
+ value.transform_values { |v| json_safe(v, seen) }
276
279
  elsif value.is_a?(Enumerable)
277
- value.collect { |v| json_safe(v) }
280
+ seen ||= Set.new
281
+ seen << value.object_id
282
+ value.collect { |v| json_safe(v, seen) }
278
283
  else
279
284
  value
280
285
  end
286
+ rescue SystemStackError, StandardError => e
287
+ error_message = e.class.name
288
+ error_message = "#{error_message} #{e.message}" if e.message && e.message != ""
289
+ warn("<Error serializing #{value.class} to JSON: #{error_message}>")
290
+ "<Error serializing #{value.class} to JSON: #{error_message}>"
281
291
  end
282
292
  end
283
293
  end
@@ -28,5 +28,5 @@ Gem::Specification.new do |spec|
28
28
 
29
29
  spec.required_ruby_version = ">= 2.5"
30
30
 
31
- spec.add_dependency "lumberjack", ">=1.4"
31
+ spec.add_dependency "lumberjack", ">=1.4.1"
32
32
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lumberjack_json_device
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 2.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Durand
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-08-22 00:00:00.000000000 Z
11
+ date: 2025-08-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: lumberjack
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.4'
19
+ version: 1.4.1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '1.4'
26
+ version: 1.4.1
27
27
  description:
28
28
  email:
29
29
  - bbdurand@gmail.com