Pipeline¶ ↑
Description¶ ↑
Pipeline is a Rails plugin/gem to run asynchronous processes in a configurable pipeline.
Documentation¶ ↑
rdoc.info/projects/dtsato/pipeline
Features¶ ↑
-
Execution of sequential user-defined stages in an asynchronous pipeline
-
Persistence of pipeline instances and stages
-
Error recovery strategies:
-
Irrecoverable errors fail the entire pipeline
-
Recoverable errors are automatically retried (using dj’s exponential retry strategy)
-
Recoverable errors that require user input pause the pipeline for further retry
-
-
Cancelling/Resuming of a paused pipeline
-
Callbacks before and after executing stages and pipeline
Installation and Use¶ ↑
pipeline
can be installed as either a RubyGem (recommended) or as a plugin.
Gem¶ ↑
To install pipeline
as a RubyGem, add the following lines to your config/environment.rb
file:
config.gem "pipeline" config.gem "delayed_job"
And execute:
rake gems:install rake gems:unpack # Optional, if you want to vendor the gem
Plugin¶ ↑
To install it as a plugin, run:
script/plugin install git://github.com/dtsato/pipeline.git
Generating the required tables¶ ↑
In order to persist your pipelines and stages, execute the following:
script/generate pipeline # To generate the migration scripts that will store pipelines script/generate delayed_job # To generate the migration scripts for delayed_job rake db:migrate
Starting your workers¶ ↑
You will also need to run your Delayed Job workers that will process the pipeline jobs in the background:
rake jobs:work
Dependencies¶ ↑
-
Rails (ActiveRecord)
-
Delayed job (github.com/collectiveidea/delayed_job)
Usage¶ ↑
Check examples
for more examples (including error-recovery and cancelling)
class Step1 < Pipeline::Stage::Base def perform puts("Started step 1") sleep 2 puts("Finished step 1") end end class Step2 < Pipeline::Stage::Base def perform puts("Started step 2") sleep 3 puts("Finished step 2") end end class TwoStepPipeline < Pipeline::Base define_stages Step1 >> Step2 end Pipeline.start(TwoStepPipeline.new)
Copyright¶ ↑
Copyright © 2009 Danilo Sato. See LICENSE for details.