Build structured, flexible and reusable jobs.
Share them and let non-technical people know how things are done.
Manage errors, retries and manual human tasks.
Lightweight, Simple, Intuitive.
LevelUp lets you build different kinds of tasks and compose them to create a runnable job. Define task graphs where each task contains its own business logic implemented in ruby. Jobs can be performed synchronously or asynchronously by background workers.
# app/models/hard_job.rb class HardJob < LevelUp::Job job do task: :start, transitions: first_task task: :first_task, transitions: :second_task task: :second_task, transitions: :end end end
# app/models/hard_job/first_task.rb module HardJob class FirstTask < LevelUp::Task def run puts "Doing hard work" end end end
# create a new job instance job = HardJob.create(key: 'job-key') # execute the job synchronously job.boot # or asynchronously job.boot_async!