logster 2.20.0 → 2.21.0

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.
@@ -4,6 +4,9 @@ source "https://rubygems.org"
4
4
 
5
5
  group :test do
6
6
  gem "rails", "~> 6.1.0"
7
+ gem "concurrent-ruby", "1.3.4"
8
+ gem "mutex_m"
9
+ gem "bigdecimal"
7
10
  end
8
11
 
9
12
  gemspec path: "../"
@@ -4,6 +4,9 @@ source "https://rubygems.org"
4
4
 
5
5
  group :test do
6
6
  gem "rails", "~> 7.0.0"
7
+ gem "concurrent-ruby", "1.3.4"
8
+ gem "mutex_m"
9
+ gem "bigdecimal"
7
10
  end
8
11
 
9
12
  gemspec path: "../"
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org"
4
+
5
+ group :test do
6
+ gem "rails", "~> 7.2.0"
7
+ end
8
+
9
+ gemspec path: "../"
data/lib/logster/group.rb CHANGED
@@ -48,7 +48,7 @@ module Logster
48
48
  end
49
49
 
50
50
  def to_json(opts = nil)
51
- JSON.fast_generate(self.to_h, opts)
51
+ JSON.generate(self.to_h, opts)
52
52
  end
53
53
 
54
54
  def add_message(message)
@@ -109,7 +109,7 @@ module Logster
109
109
  GroupWeb =
110
110
  Struct.new(*%i[regex count timestamp messages row_id]) do
111
111
  def to_json(opts = nil)
112
- JSON.fast_generate(self.to_h.merge(severity: -1, group: true), opts)
112
+ JSON.generate(self.to_h.merge(severity: -1, group: true), opts)
113
113
  end
114
114
 
115
115
  def key
@@ -65,7 +65,7 @@ module Logster
65
65
 
66
66
  def to_json(opts = nil)
67
67
  exclude_env = Hash === opts && opts.delete(:exclude_env)
68
- JSON.fast_generate(to_h(exclude_env: exclude_env), opts)
68
+ JSON.generate(to_h(exclude_env: exclude_env), opts)
69
69
  end
70
70
 
71
71
  def self.from_json(json)
@@ -134,7 +134,7 @@ module Logster
134
134
 
135
135
  # todo - memoize?
136
136
  def grouping_key
137
- Digest::SHA1.hexdigest JSON.fast_generate grouping_hash
137
+ Digest::SHA1.hexdigest JSON.generate grouping_hash
138
138
  end
139
139
 
140
140
  # todo - memoize?
@@ -273,10 +273,10 @@ module Logster
273
273
  protected
274
274
 
275
275
  def truncate_env(env, limit)
276
- if JSON.fast_generate(env).bytesize > limit
276
+ if JSON.generate(env).bytesize > limit
277
277
  sizes = {}
278
278
  braces = "{}".bytesize
279
- env.each { |k, v| sizes[k] = JSON.fast_generate(k => v).bytesize - braces }
279
+ env.each { |k, v| sizes[k] = JSON.generate(k => v).bytesize - braces }
280
280
  sorted = env.keys.sort { |a, b| sizes[a] <=> sizes[b] }
281
281
 
282
282
  kept_keys = []
@@ -308,7 +308,7 @@ module Logster
308
308
  end
309
309
 
310
310
  def to_json_and_escape(payload)
311
- Rack::Utils.escape_html(JSON.fast_generate(payload))
311
+ Rack::Utils.escape_html(JSON.generate(payload))
312
312
  end
313
313
 
314
314
  def preload_backtrace_data
@@ -534,7 +534,7 @@ module Logster
534
534
  when Regexp
535
535
  value.to_s =~ search
536
536
  when String
537
- value.to_s =~ Regexp.new(search, Regexp::IGNORECASE)
537
+ value.to_s =~ Regexp.new(Regexp.escape(search), Regexp::IGNORECASE)
538
538
  else
539
539
  false
540
540
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Logster
4
- VERSION = "2.20.0"
4
+ VERSION = "2.21.0"
5
5
  end
@@ -6,7 +6,7 @@ require "logster/redis_store"
6
6
  require "logger"
7
7
  require "examples/sidekiq_logster_reporter"
8
8
 
9
- class TestSidekiqReporter < MiniTest::Test
9
+ class TestSidekiqReporter < Minitest::Test
10
10
  def setup
11
11
  Logster.store = @store = Logster::RedisStore.new(Redis.new)
12
12
  Logster.logger = @logger = Logster::Logger.new(Logster.store)
@@ -4,7 +4,7 @@ require_relative "../test_helper"
4
4
  require "logster/group"
5
5
  require "logster/message"
6
6
 
7
- class TestGroup < MiniTest::Test
7
+ class TestGroup < Minitest::Test
8
8
  def test_changed_is_true_for_new_instances
9
9
  assert Logster::Group.new("/somekey/").changed?
10
10
  end
@@ -3,7 +3,7 @@
3
3
  require_relative "../test_helper"
4
4
  require "logster/message"
5
5
 
6
- class TestMessage < MiniTest::Test
6
+ class TestMessage < Minitest::Test
7
7
  def test_merge_similar
8
8
  msg1 = Logster::Message.new(0, "", "test", 10)
9
9
  msg1.populate_from_env(a: "1", b: "2")
@@ -428,6 +428,16 @@ class TestRedisStore < Minitest::Test
428
428
  assert_equal("TUVWXYZ", latest[0].message)
429
429
  end
430
430
 
431
+ def test_search_works_with_invalid_regex_chars
432
+ @store.report(Logger::INFO, "test", "ABCDEFG\\")
433
+ @store.report(Logger::INFO, "test", "TUVWXYZ")
434
+
435
+ result = @store.latest(search: "EFG\\")
436
+
437
+ assert_equal(1, result.size)
438
+ assert_equal("ABCDEFG\\", result[0].message)
439
+ end
440
+
431
441
  def test_search_exclude_results
432
442
  @store.report(Logger::INFO, "test", "ABCDEFG")
433
443
  @store.report(Logger::INFO, "test", "TUVWXYZ")
data/test/test_helper.rb CHANGED
@@ -1,9 +1,31 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "minitest"
4
- require "minitest/unit"
5
4
  require "minitest/autorun"
6
5
  require "minitest/pride"
6
+
7
+ module StubSupport
8
+ def stub(method_name, value_or_callable = nil, &block)
9
+ original = method(method_name)
10
+ define_singleton_method(method_name) do |*args, &blk|
11
+ value_or_callable.respond_to?(:call) ? value_or_callable.call(*args, &blk) : value_or_callable
12
+ end
13
+ yield self
14
+ ensure
15
+ begin
16
+ singleton_class.undef_method(method_name)
17
+ rescue StandardError
18
+ nil
19
+ end
20
+ begin
21
+ define_singleton_method(method_name, original)
22
+ rescue StandardError
23
+ nil
24
+ end
25
+ end
26
+ end
27
+
28
+ Module.include StubSupport
7
29
  require "redis"
8
30
  require "logster"
9
31
  require "logster/base_store"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logster
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.20.0
4
+ version: 2.21.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Saffron
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-07-04 00:00:00.000000000 Z
11
+ date: 2026-04-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -186,10 +186,10 @@ files:
186
186
  - assets/images/icon_144x144.png
187
187
  - assets/images/icon_64x64.png
188
188
  - assets/javascript/.gitkeep
189
- - assets/javascript/chunk.143.2f62415fa9ee8d84fb84.js
190
- - assets/javascript/chunk.178.e362160626dc2d3791f7.js
191
- - assets/javascript/chunk.468.95dd450003497c781cb3.js
192
- - assets/javascript/chunk.916.85a3fc9d873df80f5ea5.js
189
+ - assets/javascript/chunk.524.b7d0b89d25457a72409c.js
190
+ - assets/javascript/chunk.582.5a04ae4713e692cd335a.js
191
+ - assets/javascript/chunk.747.a730c497582bb6742a6e.js
192
+ - assets/javascript/chunk.761.64949d89942c829e5c1b.js
193
193
  - assets/javascript/client-app.js
194
194
  - assets/javascript/vendor.js
195
195
  - assets/stylesheets/.gitkeep
@@ -280,6 +280,7 @@ files:
280
280
  - gemfiles/rails_6.1.gemfile
281
281
  - gemfiles/rails_7.0.gemfile
282
282
  - gemfiles/rails_7.1.gemfile
283
+ - gemfiles/rails_7.2.gemfile
283
284
  - lib/examples/sidekiq_logster_reporter.rb
284
285
  - lib/logster.rb
285
286
  - lib/logster/base_store.rb