{"repo":"chaps-io/gush","free":true,"listed":false,"github":"https://github.com/chaps-io/gush","clone":"git clone https://github.com/chaps-io/gush.git","description":"Fast and distributed workflow runner using ActiveJob and Redis","language":"Ruby","stars":1100,"topics":["workflows","ruby","sidekiq","graph","parallel","parallelization","activejob","queues","redis","workflow"],"license":"MIT","category":"workflow-automation","readme_excerpt":"Gush Gush is a parallel workflow runner using only Redis as storage and ActiveJob for scheduling and executing jobs. Theory Gush relies on directed acyclic graphs to store dependencies, see Parallelizing Operations With Dependencies by Stephen Toub to learn more about this method. WARNING - version notice This README is about the latest master code, which might differ from what is released on RubyGems. See tags to browse previous READMEs. Installation 1. Add gush to Gemfile 2. Create Gushfile When using Gush and its CLI commands you need a Gushfile in the root directory. Gushfile should require all your workflows and jobs. Ruby on Rails For RoR it is enough to require the full environment: and make sure your jobs and workflows are correctly loaded by adding their directories to autoload paths, inside config/application.rb : Ruby Simply require any jobs and workflows manually in Gushfile : Example The DSL for defining jobs consists of a single run method. Here is a complete example of a workflow you can create: and this is how the graph will look like: Defining workflows Let's start with the simplest workflow possible, consisting of a single job: Of course having a workflow with only a single job does not make sense, so it's time to define dependencies: We just told Gush to execute SaveJob right after DownloadJob finishes successfully . But what if your job must have multiple dependencies? That's easy, just provide an array to the after attribute: Now SaveJob will only execute","default_branch":null,"files":null,"tree":[],"storefront":"/r/chaps-io","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/chaps-io/gush/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}