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](https://www.ruby-lang.org/en/news/2020/12/25/ruby-3-0-0-released/). 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 ```ruby 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: ```ruby # 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*): ```ruby 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.): ```ruby 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](https://rubygems.org/gems/celluloid/versions) 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](https://github.com/brandonhilkert/sucker_punch/pull/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: ```Ruby # config/initializers/sucker_punch.rb SuckerPunch.config do queue name: :log_queue, worker: LogWorker, size: 10 end ``` new config: ```Ruby # 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` ```ruby 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` ```ruby require 'sucker_punch/testing' SuckerPunch::Queue[:log_queue].async.perform("login") # => SYNCHRONOUS ```