Releases: chaps-io/gush
Releases · chaps-io/gush
v4.0.0
This release has breaking changes! Especially see #119
What's Changed
- add missing json attribute to Gush::Job by @entei in #114
- Add globals and kwargs to Workflow and Job by @noahfpf in #113
- Persist dependencies so that
Workflow#configure
is not required on load by @noahfpf in #118 - Fixed the workflow redis key format used in
Client#next_free_workflow_id
by @noahfpf in #120 Gush::Client
now delegates theActiveJob.perform_later
call toGush::Job
by @noahfpf in #117- Fix workflow status when the workflow is pending to start by @noahfpf in #116
- Added rubocop for code style consistency by @noahfpf in #115
- Improved redis performance in large keyspace, added pagination, and auto-expiration by @noahfpf in #119
New Contributors
Full Changelog: v.3.0.0...v4.0.0
v.3.0.0
2.1.0
Added
- Allow RedisMutex’s locking duration and polling interval to be customizable, thanks to @thukim! See pull request
- Support for Rails 7.0 and Ruby 3.0-3.1, thanks to @joshRpowell and @kzkn!
v2.0.2
- Gush can work with ActiveJob 6, no need to limit it to < 6.0. (https://github.com/chaps-io/gush/pull/76[)](https://github.com/chaps-io/gush/commit/609f19d47042a37c33d21997d1cde8947ab021c0)
- Limit number of redis connections and fix ttl bug (https://github.com/chaps-io/gush/pull/75[)](https://github.com/chaps-io/gush/commit/7c89931dbb7747f679b5bbd231a3648990211940)
- Try to enqueue outgoing jobs in another worker (https://github.com/chaps-io/gush/pull/71[)](https://github.com/chaps-io/gush/commit/682c7fe6ec0c023cac0449840d96741d0a329604)
2.0.1
Fixed
- 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)
2.0.0
Changed
- [BREAKING] Store gush jobs in Redis hash instead of plain keys - this improves performance when retrieving values (Thanks to @Saicheg! See pull request)
Added
- Allow setting queue for each job via
:queue
option inrun
method (Thanks to @devilankur18! See pull request)
v1.1.1
1.1.0
This version might be incompatible for developers who relied on jobs
array inside Workflow JSON (stored in Redis), see below for details. For others it's fully transparent and brings performance improvements!
Added
- 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)
Fixed
- Improved performance of (de)serializing workflows by not storing job array inside workflow JSON and other smaller improvements (See pull request)
1.0.0
Added
- 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
Fixed
- 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.
Changed
- 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.
Removed
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)