sidekiq-throttled 1.2.0 → 1.3.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.
- checksums.yaml +4 -4
 - data/README.adoc +13 -3
 - data/lib/sidekiq/throttled/patches/basic_fetch.rb +8 -16
 - data/lib/sidekiq/throttled/patches/super_fetch.rb +52 -0
 - data/lib/sidekiq/throttled/patches/throttled_retriever.rb +26 -0
 - data/lib/sidekiq/throttled/strategy_collection.rb +6 -6
 - data/lib/sidekiq/throttled/version.rb +1 -1
 - data/lib/sidekiq/throttled.rb +1 -0
 - metadata +7 -5
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 433460cfaea479faf45edc665c6f8d7d025b3e35ccdf18a32061a0b3d3c42e68
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 4e36f4c938d7145646e04f1de6d483bdec5a4c18254c3153be3556285b779fbf
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 3ba640f6b15fa32eb21eccda8a319357439b7367fea6c0e4d4125e0e2cd5e91fbb822768d2171c57ac0cfbe0ba640b1d21960c6e2ea317997869c8f06187aec9
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: bd28f31c6222b3f378e1e7a2d081cc9f05c4feb13b7be8b1b54ee91976a66b2263884837f3149dddcc6b047129a0311b65135433511b0dc3ed29d47ed88346ea
         
     | 
    
        data/README.adoc
    CHANGED
    
    | 
         @@ -107,7 +107,7 @@ end 
     | 
|
| 
       107 
107 
     | 
    
         
             
            * `Sidekiq::Throttled::Middlewares::Server`
         
     | 
| 
       108 
108 
     | 
    
         | 
| 
       109 
109 
     | 
    
         
             
            The middleware is automatically injected when you require `sidekiq/throttled`.
         
     | 
| 
       110 
     | 
    
         
            -
            In rare cases this  
     | 
| 
      
 110 
     | 
    
         
            +
            In rare cases, when this causes an issue, you can change middleware order manually:
         
     | 
| 
       111 
111 
     | 
    
         | 
| 
       112 
112 
     | 
    
         
             
            [source,ruby]
         
     | 
| 
       113 
113 
     | 
    
         
             
            ----
         
     | 
| 
         @@ -115,8 +115,7 @@ Sidekiq.configure_server do |config| 
     | 
|
| 
       115 
115 
     | 
    
         
             
              # ...
         
     | 
| 
       116 
116 
     | 
    
         | 
| 
       117 
117 
     | 
    
         
             
              config.server_middleware do |chain|
         
     | 
| 
       118 
     | 
    
         
            -
                chain. 
     | 
| 
       119 
     | 
    
         
            -
                chain.add(Sidekiq::Throttled::Middlewares::Server)
         
     | 
| 
      
 118 
     | 
    
         
            +
                chain.prepend(Sidekiq::Throttled::Middlewares::Server)
         
     | 
| 
       120 
119 
     | 
    
         
             
              end
         
     | 
| 
       121 
120 
     | 
    
         
             
            end
         
     | 
| 
       122 
121 
     | 
    
         
             
            ----
         
     | 
| 
         @@ -271,6 +270,7 @@ This library aims to support and is tested against the following Ruby versions: 
     | 
|
| 
       271 
270 
     | 
    
         
             
            * Ruby 3.0.x
         
     | 
| 
       272 
271 
     | 
    
         
             
            * Ruby 3.1.x
         
     | 
| 
       273 
272 
     | 
    
         
             
            * Ruby 3.2.x
         
     | 
| 
      
 273 
     | 
    
         
            +
            * Ruby 3.3.x
         
     | 
| 
       274 
274 
     | 
    
         | 
| 
       275 
275 
     | 
    
         
             
            If something doesn't work on one of these versions, it's a bug.
         
     | 
| 
       276 
276 
     | 
    
         | 
| 
         @@ -295,6 +295,11 @@ This library aims to support and work with following Sidekiq versions: 
     | 
|
| 
       295 
295 
     | 
    
         
             
            * Sidekiq 7.1.x
         
     | 
| 
       296 
296 
     | 
    
         
             
            * Sidekiq 7.2.x
         
     | 
| 
       297 
297 
     | 
    
         | 
| 
      
 298 
     | 
    
         
            +
            And the following Sidekiq Pro versions:
         
     | 
| 
      
 299 
     | 
    
         
            +
             
     | 
| 
      
 300 
     | 
    
         
            +
            * Sidekiq Pro 7.0.x
         
     | 
| 
      
 301 
     | 
    
         
            +
            * Sidekiq Pro 7.1.x
         
     | 
| 
      
 302 
     | 
    
         
            +
            * Sidekiq Pro 7.2.x
         
     | 
| 
       298 
303 
     | 
    
         | 
| 
       299 
304 
     | 
    
         
             
            == Development
         
     | 
| 
       300 
305 
     | 
    
         | 
| 
         @@ -303,6 +308,11 @@ This library aims to support and work with following Sidekiq versions: 
     | 
|
| 
       303 
308 
     | 
    
         
             
              bundle exec appraisal install
         
     | 
| 
       304 
309 
     | 
    
         
             
              bundle exec rake
         
     | 
| 
       305 
310 
     | 
    
         | 
| 
      
 311 
     | 
    
         
            +
            === Sidekiq-Pro
         
     | 
| 
      
 312 
     | 
    
         
            +
             
     | 
| 
      
 313 
     | 
    
         
            +
            If you're working on Sidekiq-Pro support make sure to copy `.rspec-sidekiq-pro`
         
     | 
| 
      
 314 
     | 
    
         
            +
            to `.rspec-local` and that you have Sidekiq-Pro license in the global config,
         
     | 
| 
      
 315 
     | 
    
         
            +
            or in the `BUNDLE_GEMS\__CONTRIBSYS__COM` env variable.
         
     | 
| 
       306 
316 
     | 
    
         | 
| 
       307 
317 
     | 
    
         
             
            == Contributing
         
     | 
| 
       308 
318 
     | 
    
         | 
| 
         @@ -3,25 +3,14 @@ 
     | 
|
| 
       3 
3 
     | 
    
         
             
            require "sidekiq"
         
     | 
| 
       4 
4 
     | 
    
         
             
            require "sidekiq/fetch"
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
      
 6 
     | 
    
         
            +
            require_relative "./throttled_retriever"
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
       6 
8 
     | 
    
         
             
            module Sidekiq
         
     | 
| 
       7 
9 
     | 
    
         
             
              module Throttled
         
     | 
| 
       8 
10 
     | 
    
         
             
                module Patches
         
     | 
| 
       9 
11 
     | 
    
         
             
                  module BasicFetch
         
     | 
| 
       10 
     | 
    
         
            -
                     
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
                    # @return [Sidekiq::Throttled::UnitOfWork, nil]
         
     | 
| 
       13 
     | 
    
         
            -
                    def retrieve_work
         
     | 
| 
       14 
     | 
    
         
            -
                      work = super
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
                      if work && Throttled.throttled?(work.job)
         
     | 
| 
       17 
     | 
    
         
            -
                        Throttled.cooldown&.notify_throttled(work.queue)
         
     | 
| 
       18 
     | 
    
         
            -
                        requeue_throttled(work)
         
     | 
| 
       19 
     | 
    
         
            -
                        return nil
         
     | 
| 
       20 
     | 
    
         
            -
                      end
         
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
                      Throttled.cooldown&.notify_admitted(work.queue) if work
         
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
                      work
         
     | 
| 
      
 12 
     | 
    
         
            +
                    def self.prepended(base)
         
     | 
| 
      
 13 
     | 
    
         
            +
                      base.prepend(ThrottledRetriever)
         
     | 
| 
       25 
14 
     | 
    
         
             
                    end
         
     | 
| 
       26 
15 
     | 
    
         | 
| 
       27 
16 
     | 
    
         
             
                    private
         
     | 
| 
         @@ -43,7 +32,10 @@ module Sidekiq 
     | 
|
| 
       43 
32 
     | 
    
         
             
                    # @param [Array<String>] queues
         
     | 
| 
       44 
33 
     | 
    
         
             
                    # @return [Array<String>]
         
     | 
| 
       45 
34 
     | 
    
         
             
                    def queues_cmd
         
     | 
| 
       46 
     | 
    
         
            -
                       
     | 
| 
      
 35 
     | 
    
         
            +
                      throttled_queues = Throttled.cooldown&.queues
         
     | 
| 
      
 36 
     | 
    
         
            +
                      return super if throttled_queues.nil? || throttled_queues.empty?
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
                      super - throttled_queues
         
     | 
| 
       47 
39 
     | 
    
         
             
                    end
         
     | 
| 
       48 
40 
     | 
    
         
             
                  end
         
     | 
| 
       49 
41 
     | 
    
         
             
                end
         
     | 
| 
         @@ -0,0 +1,52 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            require "sidekiq"
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            require_relative "./throttled_retriever"
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            module Sidekiq
         
     | 
| 
      
 8 
     | 
    
         
            +
              module Throttled
         
     | 
| 
      
 9 
     | 
    
         
            +
                module Patches
         
     | 
| 
      
 10 
     | 
    
         
            +
                  module SuperFetch
         
     | 
| 
      
 11 
     | 
    
         
            +
                    def self.prepended(base)
         
     | 
| 
      
 12 
     | 
    
         
            +
                      base.prepend(ThrottledRetriever)
         
     | 
| 
      
 13 
     | 
    
         
            +
                    end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                    private
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                    # Calls SuperFetch UnitOfWork's requeue to remove the job from the
         
     | 
| 
      
 18 
     | 
    
         
            +
                    # temporary queue and push job back to the head of the queue, so that
         
     | 
| 
      
 19 
     | 
    
         
            +
                    # the job won't be tried immediately after it was requeued (in most cases).
         
     | 
| 
      
 20 
     | 
    
         
            +
                    #
         
     | 
| 
      
 21 
     | 
    
         
            +
                    # @note This is triggered when job is throttled.
         
     | 
| 
      
 22 
     | 
    
         
            +
                    #
         
     | 
| 
      
 23 
     | 
    
         
            +
                    # @return [void]
         
     | 
| 
      
 24 
     | 
    
         
            +
                    def requeue_throttled(work)
         
     | 
| 
      
 25 
     | 
    
         
            +
                      # SuperFetch UnitOfWork's requeue will remove it from the temporary
         
     | 
| 
      
 26 
     | 
    
         
            +
                      # queue and then requeue it, so no acknowledgement call is needed.
         
     | 
| 
      
 27 
     | 
    
         
            +
                      work.requeue
         
     | 
| 
      
 28 
     | 
    
         
            +
                    end
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
                    # Returns list of non-paused queues to try to fetch jobs from.
         
     | 
| 
      
 31 
     | 
    
         
            +
                    #
         
     | 
| 
      
 32 
     | 
    
         
            +
                    # @note It may return an empty array.
         
     | 
| 
      
 33 
     | 
    
         
            +
                    # @return [Array<Array(String, String)>]
         
     | 
| 
      
 34 
     | 
    
         
            +
                    def active_queues
         
     | 
| 
      
 35 
     | 
    
         
            +
                      # Create a hash of throttled queues for fast lookup
         
     | 
| 
      
 36 
     | 
    
         
            +
                      throttled_queues = Throttled.cooldown&.queues&.to_h { |queue| [queue, true] }
         
     | 
| 
      
 37 
     | 
    
         
            +
                      return super if throttled_queues.nil? || throttled_queues.empty?
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
                      # Reject throttled queues from the list of active queues
         
     | 
| 
      
 40 
     | 
    
         
            +
                      super.reject { |queue, _private_queue| throttled_queues[queue] }
         
     | 
| 
      
 41 
     | 
    
         
            +
                    end
         
     | 
| 
      
 42 
     | 
    
         
            +
                  end
         
     | 
| 
      
 43 
     | 
    
         
            +
                end
         
     | 
| 
      
 44 
     | 
    
         
            +
              end
         
     | 
| 
      
 45 
     | 
    
         
            +
            end
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
            begin
         
     | 
| 
      
 48 
     | 
    
         
            +
              require "sidekiq/pro/super_fetch"
         
     | 
| 
      
 49 
     | 
    
         
            +
              Sidekiq::Pro::SuperFetch.prepend(Sidekiq::Throttled::Patches::SuperFetch)
         
     | 
| 
      
 50 
     | 
    
         
            +
            rescue LoadError
         
     | 
| 
      
 51 
     | 
    
         
            +
              # Sidekiq Pro is not available
         
     | 
| 
      
 52 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,26 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module Sidekiq
         
     | 
| 
      
 4 
     | 
    
         
            +
              module Throttled
         
     | 
| 
      
 5 
     | 
    
         
            +
                module Patches
         
     | 
| 
      
 6 
     | 
    
         
            +
                  module ThrottledRetriever
         
     | 
| 
      
 7 
     | 
    
         
            +
                    # Retrieves job from redis.
         
     | 
| 
      
 8 
     | 
    
         
            +
                    #
         
     | 
| 
      
 9 
     | 
    
         
            +
                    # @return [Sidekiq::BasicFetch::UnitOfWork, nil]
         
     | 
| 
      
 10 
     | 
    
         
            +
                    def retrieve_work
         
     | 
| 
      
 11 
     | 
    
         
            +
                      work = super
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                      if work && Throttled.throttled?(work.job)
         
     | 
| 
      
 14 
     | 
    
         
            +
                        Throttled.cooldown&.notify_throttled(work.queue)
         
     | 
| 
      
 15 
     | 
    
         
            +
                        requeue_throttled(work)
         
     | 
| 
      
 16 
     | 
    
         
            +
                        return nil
         
     | 
| 
      
 17 
     | 
    
         
            +
                      end
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                      Throttled.cooldown&.notify_admitted(work.queue) if work
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
                      work
         
     | 
| 
      
 22 
     | 
    
         
            +
                    end
         
     | 
| 
      
 23 
     | 
    
         
            +
                  end
         
     | 
| 
      
 24 
     | 
    
         
            +
                end
         
     | 
| 
      
 25 
     | 
    
         
            +
              end
         
     | 
| 
      
 26 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -26,8 +26,8 @@ module Sidekiq 
     | 
|
| 
       26 
26 
     | 
    
         | 
| 
       27 
27 
     | 
    
         
             
                  # @param [#call] block
         
     | 
| 
       28 
28 
     | 
    
         
             
                  # Iterates each strategy in collection
         
     | 
| 
       29 
     | 
    
         
            -
                  def each( 
     | 
| 
       30 
     | 
    
         
            -
                    @strategies.each( 
     | 
| 
      
 29 
     | 
    
         
            +
                  def each(...)
         
     | 
| 
      
 30 
     | 
    
         
            +
                    @strategies.each(...)
         
     | 
| 
       31 
31 
     | 
    
         
             
                  end
         
     | 
| 
       32 
32 
     | 
    
         | 
| 
       33 
33 
     | 
    
         
             
                  # @return [Boolean] whenever any strategy in collection has dynamic config
         
     | 
| 
         @@ -37,14 +37,14 @@ module Sidekiq 
     | 
|
| 
       37 
37 
     | 
    
         | 
| 
       38 
38 
     | 
    
         
             
                  # @return [Boolean] whenever job is throttled or not
         
     | 
| 
       39 
39 
     | 
    
         
             
                  # by any strategy in collection.
         
     | 
| 
       40 
     | 
    
         
            -
                  def throttled?( 
     | 
| 
       41 
     | 
    
         
            -
                    any? { |s| s.throttled?( 
     | 
| 
      
 40 
     | 
    
         
            +
                  def throttled?(...)
         
     | 
| 
      
 41 
     | 
    
         
            +
                    any? { |s| s.throttled?(...) }
         
     | 
| 
       42 
42 
     | 
    
         
             
                  end
         
     | 
| 
       43 
43 
     | 
    
         | 
| 
       44 
44 
     | 
    
         
             
                  # Marks job as being processed.
         
     | 
| 
       45 
45 
     | 
    
         
             
                  # @return [void]
         
     | 
| 
       46 
     | 
    
         
            -
                  def finalize!( 
     | 
| 
       47 
     | 
    
         
            -
                    each { |c| c.finalize!( 
     | 
| 
      
 46 
     | 
    
         
            +
                  def finalize!(...)
         
     | 
| 
      
 47 
     | 
    
         
            +
                    each { |c| c.finalize!(...) }
         
     | 
| 
       48 
48 
     | 
    
         
             
                  end
         
     | 
| 
       49 
49 
     | 
    
         | 
| 
       50 
50 
     | 
    
         
             
                  # Resets count of jobs of all avaliable strategies
         
     | 
    
        data/lib/sidekiq/throttled.rb
    CHANGED
    
    | 
         @@ -7,6 +7,7 @@ require_relative "./throttled/cooldown" 
     | 
|
| 
       7 
7 
     | 
    
         
             
            require_relative "./throttled/job"
         
     | 
| 
       8 
8 
     | 
    
         
             
            require_relative "./throttled/middlewares/server"
         
     | 
| 
       9 
9 
     | 
    
         
             
            require_relative "./throttled/patches/basic_fetch"
         
     | 
| 
      
 10 
     | 
    
         
            +
            require_relative "./throttled/patches/super_fetch"
         
     | 
| 
       10 
11 
     | 
    
         
             
            require_relative "./throttled/registry"
         
     | 
| 
       11 
12 
     | 
    
         
             
            require_relative "./throttled/version"
         
     | 
| 
       12 
13 
     | 
    
         
             
            require_relative "./throttled/worker"
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: sidekiq-throttled
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 1. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 1.3.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Alexey Zapparov
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire:
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: exe
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date:  
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2024-01-18 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: concurrent-ruby
         
     | 
| 
         @@ -69,6 +69,8 @@ files: 
     | 
|
| 
       69 
69 
     | 
    
         
             
            - lib/sidekiq/throttled/job.rb
         
     | 
| 
       70 
70 
     | 
    
         
             
            - lib/sidekiq/throttled/middlewares/server.rb
         
     | 
| 
       71 
71 
     | 
    
         
             
            - lib/sidekiq/throttled/patches/basic_fetch.rb
         
     | 
| 
      
 72 
     | 
    
         
            +
            - lib/sidekiq/throttled/patches/super_fetch.rb
         
     | 
| 
      
 73 
     | 
    
         
            +
            - lib/sidekiq/throttled/patches/throttled_retriever.rb
         
     | 
| 
       72 
74 
     | 
    
         
             
            - lib/sidekiq/throttled/registry.rb
         
     | 
| 
       73 
75 
     | 
    
         
             
            - lib/sidekiq/throttled/strategy.rb
         
     | 
| 
       74 
76 
     | 
    
         
             
            - lib/sidekiq/throttled/strategy/base.rb
         
     | 
| 
         @@ -87,9 +89,9 @@ licenses: 
     | 
|
| 
       87 
89 
     | 
    
         
             
            - MIT
         
     | 
| 
       88 
90 
     | 
    
         
             
            metadata:
         
     | 
| 
       89 
91 
     | 
    
         
             
              homepage_uri: https://github.com/ixti/sidekiq-throttled
         
     | 
| 
       90 
     | 
    
         
            -
              source_code_uri: https://github.com/ixti/sidekiq-throttled/tree/v1. 
     | 
| 
      
 92 
     | 
    
         
            +
              source_code_uri: https://github.com/ixti/sidekiq-throttled/tree/v1.3.0
         
     | 
| 
       91 
93 
     | 
    
         
             
              bug_tracker_uri: https://github.com/ixti/sidekiq-throttled/issues
         
     | 
| 
       92 
     | 
    
         
            -
              changelog_uri: https://github.com/ixti/sidekiq-throttled/blob/v1. 
     | 
| 
      
 94 
     | 
    
         
            +
              changelog_uri: https://github.com/ixti/sidekiq-throttled/blob/v1.3.0/CHANGES.md
         
     | 
| 
       93 
95 
     | 
    
         
             
              rubygems_mfa_required: 'true'
         
     | 
| 
       94 
96 
     | 
    
         
             
            post_install_message:
         
     | 
| 
       95 
97 
     | 
    
         
             
            rdoc_options: []
         
     | 
| 
         @@ -106,7 +108,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       106 
108 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       107 
109 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       108 
110 
     | 
    
         
             
            requirements: []
         
     | 
| 
       109 
     | 
    
         
            -
            rubygems_version: 3. 
     | 
| 
      
 111 
     | 
    
         
            +
            rubygems_version: 3.5.4
         
     | 
| 
       110 
112 
     | 
    
         
             
            signing_key:
         
     | 
| 
       111 
113 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       112 
114 
     | 
    
         
             
            summary: Concurrency and rate-limit throttling for Sidekiq
         
     |