Skip to content

Latest commit

 

History

History
255 lines (179 loc) · 5.35 KB

CHANGES.md

File metadata and controls

255 lines (179 loc) · 5.35 KB

3.2.0

  • Rename singleton_class? method to allow for usage with Ruby 3

3.1.0

  • Add a blocking SuckerPunch::Queue.wait which waits for all queues to become idle.

3.0.1

  • Opt for keyword parsing using ruby2_keywords for compatibility.

3.0.0

  • Add support for keyword arguments in ruby >= 3.0. More details in release notes.

2.1.1

  • Relax versioning constraint of concurrent-ruby to make way for 1.1 release

2.1.0

  • Add max_jobs configuration option to set the maximum number of tasks that may be waiting in the work queue

    class JobWithLimit
      include SuckerPunch::Job
      max_jobs 2
    
      def perform(data)
        # work...
      end
    end
    
    10.times do
      begin
        JobWithLimit.perform_async('work') }
      rescue Concurrent::RejectedExecutionError => e
        # Queue maxed out, this job didn't get queued
      end
    end

2.0.4

  • Better initialization of variables and names to remove warnings

2.0.3

  • Rewrite shutdown strategy to fix bug related to premature shutdown when only 1 job is in enqueued when a job has more than 1 worker

2.0.2

  • Don't consider global shutdown bool when exhausting the queue during shutdown. This led to shutdown_timeout not being respected when processing remaining jobs left in the queue with a high shutdown_timeout.

2.0.1

  • Remove scripts from bin/

2.0.0

  • Refactor internals to use concurrent-ruby

  • Yield more exception details to handler. The new syntax allows you to setup a global exception with the following syntax:

    # ex    => The caught exception object
    # klass => The job class
    # args  => An array of the args passed to the job
    
    SuckerPunch.exception_handler = -> (ex, klass, args) { ExceptionNotifier.notify_exception(ex) }
  • Invoke asynchronous job via perform_async and perform_in class method (backwards incompatible change):

    LogJob.perform_async("login")
    LogJob.perform_in(60, "login") # `perform` will be executed 60 sec. later
  • Drop support for Ruby < 2.0

  • Allow shutdown timeout to be set (default is 8 sec.):

    SuckerPunch.shutdown_timeout = 15 # time in seconds

1.6.0

  • Update to use Celluloid 0.17.2
  • Removed the SuckerPunch.clear_queues method

1.5.1

  • Lock to Celluloid 0.16.0 due to 0.16.1 being yanked

1.5.0

  • Allow number of workers to be up to and including 200
  • Don't clear out non-Sucker Punch Celluloid registry on boot #113

1.4.0

  • Added Rails generate task to create a job from the command line

1.3.2

  • Remove extraneous conditions in core extension underscore

1.3.1

  • Require sucker_punch before inline testing library to ensure changes stick

1.3

  • Update to use Celluloid 0.16

1.2.1

  • Go back to Celluloid 0.15.2 since it's not production ready

1.2

  • Update to use Celluloid 0.16

1.1

  • Delegate to Celluloid's exception handler

1.0.5

  • Move to_prepare callback in Railtie out of initializer

1.0.4

  • Fix superclass for testing/inline module

1.0.3

  • Track instantiated queues through Celluloid registry
  • Clear Celluloid registry on every Rails request in Development

1.0.2

  • Update Celluloid dependency to 0.15.1

1.0.1

  • Fix how workers are defined on the Job so that jobs can be safely subclassed

1.0.0.beta3

  • Constrain workers when creating a queue to raise more helpful exceptions

1.0.0.beta2

  • Add workers method to job to specify number of Celluloid pool workers

1.0.0.beta

  • Removed the need for a configuration initializer
  • include SuckerPunch::Job instead of SuckerPunch::Worker
  • Use standard Ruby job class instantiation to perform a job (ie. LogJob.new.async.perform)

0.5.1

  • Add SuckerPunch.logger
  • Add SuckerPunch.logger=
  • Set SuckerPunch logger to Rails.logger within a Rails application

0.5

  • SuckerPunch::Queue#size now returns the number of messages enqueued
  • SuckerPunch::Queue#workers now returns the number of workers in the queue
  • Update Celluloid dependency

0.4.1

  • Remove size option when defining a queue, prefer workers
  • Update Celluloid dependency

0.4

  • Prefer workers stat method over size
  • Update config to use workers instead of size

old config:

# config/initializers/sucker_punch.rb

SuckerPunch.config do
  queue name: :log_queue, worker: LogWorker, size: 10
end

new config:

# config/initializers/sucker_punch.rb

SuckerPunch.config do
  queue name: :log_queue, worker: LogWorker, workers: 10
end
  • Add testing library to stub out workers (see testing section in README)

0.3.1

  • Fix location of inline testing library

spec/spec_helper.rb

require 'sucker_punch/testing/inline'
SuckerPunch::Queue[:log_queue].async.perform("login") # => SYNCHRONOUS

0.3

  • Now includes a testing library that will run all jobs synchronously.

spec/spec_helper.rb

require 'sucker_punch/testing'
SuckerPunch::Queue[:log_queue].async.perform("login") # => SYNCHRONOUS