sidekiq 8.0.5 → 8.0.6

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: c6b95635fb1084ed28d8b6dd5f7d273873e24ffab09aeb5057de74d4bebeae07
4
- data.tar.gz: bba44aed090637fb4991ae3935112b84b33df8b7281c9d0f273f0146ea11415a
3
+ metadata.gz: d76e142e5c120dc7d714ae218813bc6d3488064c291a407f0fbddc3b65b03d77
4
+ data.tar.gz: db1326f0b7553125f67a9667811cc32e7768343fe2684d3aec2adef107e4e586
5
5
  SHA512:
6
- metadata.gz: 657b2d2f1e1c850779d29990c88227d7776f8e5a4b3333fd7b2e5f249fb360a1f69de40a773dc5b608ae37ff249713af5aa5b38cd04da2ceffe64f79578861a3
7
- data.tar.gz: a8d8d6f32921b00341dc8910155b8a85d6c036bc31a69437dde3f5107d02bed5ffb2b0754f014eaf69f577570e91455a7ead03367cf43fe0b24ef2650e9f57be
6
+ metadata.gz: 99e54bdfb34e9fe257b740917cd675d959eac98566a15d53f65638095d7fe6da2966efbfd9d958c9c580034b4af49adb9cd3c94cd189b39fb7360a021f471714
7
+ data.tar.gz: afedc02f36f45de8e65fe58d897ae11f7aaa9f105f9b87c2f47b01dbcc501087d5c9d2dcf3c436bc3427ec801371c43a8f7c92741e30d87cc91fad9dc34ba429
data/Changes.md CHANGED
@@ -2,6 +2,14 @@
2
2
 
3
3
  [Sidekiq Changes](https://github.com/sidekiq/sidekiq/blob/main/Changes.md) | [Sidekiq Pro Changes](https://github.com/sidekiq/sidekiq/blob/main/Pro-Changes.md) | [Sidekiq Enterprise Changes](https://github.com/sidekiq/sidekiq/blob/main/Ent-Changes.md)
4
4
 
5
+ 8.0.6
6
+ ----------
7
+
8
+ - Adjust transactional client to use ActiveRecord 7.2's support for
9
+ `after_all_transactions_commit` when available. [#6765, rewritten]
10
+ - Fix Rails 7.0 and 7.1 compatibility [#6746, mlarraz]
11
+ - Flush metrics at `:exit` [#6764]
12
+
5
13
  8.0.5
6
14
  ----------
7
15
 
@@ -43,7 +43,8 @@ begin
43
43
  # To use Sidekiq set the queue_adapter config to +:sidekiq+.
44
44
  #
45
45
  # Rails.application.config.active_job.queue_adapter = :sidekiq
46
- class SidekiqAdapter < AbstractAdapter
46
+ parent = const_defined?(:AbstractAdapter) ? AbstractAdapter : Object
47
+ class SidekiqAdapter < parent
47
48
  @@stopping = false
48
49
 
49
50
  callback = -> { @@stopping = true }
@@ -147,4 +147,7 @@ Sidekiq.configure_server do |config|
147
147
  config.on(:beat) do
148
148
  exec.flush
149
149
  end
150
+ config.on(:exit) do
151
+ exec.flush
152
+ end
150
153
  end
@@ -83,7 +83,7 @@ module Sidekiq
83
83
  class EmptyQueueError < RuntimeError; end
84
84
 
85
85
  module TestingClient
86
- def atomic_push(conn, payloads)
86
+ private def atomic_push(conn, payloads)
87
87
  if Sidekiq::Testing.fake?
88
88
  payloads.each do |job|
89
89
  job = Sidekiq.load_json(Sidekiq.dump_json(job))
@@ -7,6 +7,12 @@ module Sidekiq
7
7
  class TransactionAwareClient
8
8
  def initialize(pool: nil, config: nil)
9
9
  @redis_client = Client.new(pool: pool, config: config)
10
+ @transaction_backend =
11
+ if ActiveRecord.version >= Gem::Version.new("7.2")
12
+ ActiveRecord.method(:after_all_transactions_commit)
13
+ else
14
+ AfterCommitEverywhere.method(:after_commit)
15
+ end
10
16
  end
11
17
 
12
18
  def batching?
@@ -20,7 +26,7 @@ module Sidekiq
20
26
  # pre-allocate the JID so we can return it immediately and
21
27
  # save it to the database as part of the transaction.
22
28
  item["jid"] ||= SecureRandom.hex(12)
23
- AfterCommitEverywhere.after_commit { @redis_client.push(item) }
29
+ @transaction_backend.call { @redis_client.push(item) }
24
30
  item["jid"]
25
31
  end
26
32
 
@@ -38,10 +44,12 @@ end
38
44
  # Use `Sidekiq.transactional_push!` in your sidekiq.rb initializer
39
45
  module Sidekiq
40
46
  def self.transactional_push!
41
- begin
42
- require "after_commit_everywhere"
43
- rescue LoadError
44
- raise %q(You need to add `gem "after_commit_everywhere"` to your Gemfile to use Sidekiq's transactional client)
47
+ if ActiveRecord.version < Gem::Version.new("7.2")
48
+ begin
49
+ require "after_commit_everywhere"
50
+ rescue LoadError
51
+ raise %q(You need ActiveRecord >= 7.2 or to add `gem "after_commit_everywhere"` to your Gemfile to use Sidekiq's transactional client)
52
+ end
45
53
  end
46
54
 
47
55
  Sidekiq.default_job_options["client_class"] = Sidekiq::TransactionAwareClient
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Sidekiq
4
- VERSION = "8.0.5"
4
+ VERSION = "8.0.6"
5
5
  MAJOR = 8
6
6
 
7
7
  def self.gem_version
@@ -67,7 +67,31 @@ module Sidekiq
67
67
  end
68
68
 
69
69
  def session
70
- env["rack.session"]
70
+ env["rack.session"] || fail(<<~EOM)
71
+ Sidekiq::Web needs a valid Rack session. If this is a Rails app, make
72
+ sure you mount Sidekiq::Web *inside* your application routes:
73
+
74
+
75
+ Rails.application.routes.draw do
76
+ mount Sidekiq::Web => "/sidekiq"
77
+ ....
78
+ end
79
+
80
+
81
+ If this is a Rails app in API mode, you need to enable sessions.
82
+
83
+ https://guides.rubyonrails.org/api_app.html#using-session-middlewares
84
+
85
+ If this is a bare Rack app, use a session middleware before Sidekiq::Web:
86
+
87
+ # first, use IRB to create a shared secret key for sessions and commit it
88
+ require 'securerandom'; File.open(".session.key", "w") {|f| f.write(SecureRandom.hex(32)) }
89
+
90
+ # now use the secret with a session cookie middleware
91
+ use Rack::Session::Cookie, secret: File.read(".session.key"), same_site: true, max_age: 86400
92
+ run Sidekiq::Web
93
+
94
+ EOM
71
95
  end
72
96
 
73
97
  def logger
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq
3
3
  version: !ruby/object:Gem::Version
4
- version: 8.0.5
4
+ version: 8.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Perham
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-06-30 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: redis-client
@@ -244,7 +244,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
244
244
  - !ruby/object:Gem::Version
245
245
  version: '0'
246
246
  requirements: []
247
- rubygems_version: 3.6.2
247
+ rubygems_version: 3.6.9
248
248
  specification_version: 4
249
249
  summary: Simple, efficient background processing for Ruby
250
250
  test_files: []