All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- Fix bug when retried jobs didn't correctly reset their failed flag when ran again (Thanks to @theo-delaune-argus and @mickael-palma-argus! See issue)
- [BREAKING] Store gush jobs on redis hash instead of plain keys - this improves performance when retrieving keys (Thanks to @Saicheg! See pull request)
- Allow setting queue for each job via
:queue
option inrun
method (Thanks to @devilankur18! See pull request)
- Relax dependency on ActiveSupport to work with 4.2 up to 5.X (Thanks to @iacobus! See pull request)
- Added ability to specify TTL for Redis keys and manually expire whole workflows (Thanks to @dmitrypol! See pull request)
- Loosened dependency on redis-rb library to >= 3.2 and < 5.0 (Thanks to @mofumofu3n! See pull request)
- Improved performance of (de)serializing workflows by not storing job array inside workflow JSON and other smaller improvements (See pull request)
- BREAKING CHANGE Gush now uses ActiveJob instead of directly Sidekiq, this allows programmers to use multiple backends, instead of just one. Including in-process or even synchronous backends. See http://guides.rubyonrails.org/active_job_basics.html
- Fix graph rendering with
gush viz
command. Sometimes it rendered the last job detached from others, because it was using a class name instead of job name as ID. - Fix performance problems with unserializing jobs. This greatly increased performance by avoiding redundant calls to Redis storage. Should help a lot with huge workflows spawning thousands of jobs. Previously each job loaded whole workflow instance when executed.
- BREAKING CHANGE
Gushfile.rb
is now renamed toGushfile
- BREAKING CHANGE Internal code for reporting status via Redis pub/sub has been removed, since it wasn't used for a long time.
- BREAKING CHANGE jobs are expected to have a
perform
method instead ofwork
like in < 1.0.0 versions. - BREAKING CHANGE
payloads
method available inside jobs is now an array of hashes, instead of a hash, this allows for a more flexible approach to reusing a single job in many situations. Previously payloads were grouped by predecessor's class name, so you were forced to hardcode that class name in its descendants' code.
gush workers
command is now removed. This is now up to the developer to start background processes depending on chosen ActiveJob adapter.environment
was removed since it was no longer needed (it was Sidekiq specific)
- remove hard dependency on Yajl, so Gush can work with non-MRI Rubies (#31 by Nick Rakochy)