https://github.com/cblavier/jobbr
Rails engine to manage and supervise your batch jobs. Based on sidekiq.
https://github.com/cblavier/jobbr
Last synced: 11 months ago
JSON representation
Rails engine to manage and supervise your batch jobs. Based on sidekiq.
- Host: GitHub
- URL: https://github.com/cblavier/jobbr
- Owner: cblavier
- License: mit
- Created: 2013-02-08T14:34:58.000Z (over 13 years ago)
- Default Branch: master
- Last Pushed: 2024-05-23T14:05:06.000Z (about 2 years ago)
- Last Synced: 2025-07-27T23:49:06.520Z (11 months ago)
- Language: Ruby
- Homepage:
- Size: 398 KB
- Stars: 34
- Watchers: 2
- Forks: 13
- Open Issues: 1
-
Metadata Files:
- Readme: README.rdoc
- License: MIT-LICENSE
Awesome Lists containing this project
README
= Jobbr
Jobbr is a Rails engine for supervising your delayed jobs and scheduled jobs (think Cron).
Delayed jobs will run using sidekiq.
It provides a framework to abstract creation and execution of such jobs and a user interface to supervise jobs and read their logs.
{
}[http://travis-ci.org/cblavier/jobbr]
{
}[https://codeclimate.com/github/cblavier/jobbr]
{
}[https://codeclimate.com/github/cblavier/jobbr]
== Screenshots
{
}[http://cl.ly/image/3r320L101c3h]
{
}[http://cl.ly/image/21433N411G01]
== Dependencies
Jobbr has strong dependencies on following components:
* *Sidekiq*: the background processing framework used to run delayed jobs.
* *Redis*: all jobs & logs are stored in Redis for supervision.
* *Whenever*: Jobbr uses {Whenever}[https://github.com/javan/whenever] gem to automatically updates Crontab during deployment.
== Setup
Start by adding Jobbr to your Gemfile:
gem 'jobbr'
=== User interface
Then mount Jobbr engine to your `routes.rb` file.
mount Jobbr::Engine => "/jobbr"
=== Scheduled Jobs
Use provided generators to create a first scheduled job
$> rails g jobbr:scheduled_job dummy
It will create a namespaced model as a well as a Whenever configuration file.
Provided you fill in description and scheduling attributes in the model, you will be able to see it in jobbr tasks:
$> bundle exec jobbr --list
bundle exec jobbr dummy_job # A dummy Job
And to see it in your crontab preview:
$> whenever
30 5 * * * /bin/bash -l -c 'cd /Users/cblavier/code/my_app && RAILS_ENV=production bundle exec jobbr dummy_job >> /Users/cblavier/code/my_app/log/cron.log 2>&1'
=== Heroku Scheduled Jobs
You can also use Heroku Scheduler to run jobs. Unfortunately Heroku does not provide Cron-scheduling, but let you run jobs every 10 minutes, every hour or every day.
Jobbr provides you with 3 tasks 'bundle exec jobbr heroku:minutely', 'bundle exec jobbr heroku:hourly' and 'bundle exec jobbr heroku:daily', that will run any Job with `heroku_run` directive.
Then you will need to manually add jobs to the Heroku scheduler console
{
}[http://cl.ly/image/2N1T1l1w2c28]
=== Delayed Jobs
Use generators to get a new job model:
$> rails g jobbr:delayed_job dummy
You will get a new model with a perform method. Perform parameters are:
* params: is a hash of parameters for your job.
* run: is the object that will be persisted (and polled) for this job execution. Your delayed job can use it to provide progress information (to display a progress bar) and a final result.
run.progress = 100
run.result = 'my job result'
You can now run your delayed job as following:
run_id = DelayedJobs::DummyJob.run_delayed(some_param: 37)
And then get job status like this:
Jobbr::Run.find(run_id).status # returns :waiting / :running / :failed / :success
Jobbr also provides a controller to run and poll delayed_jobs :
* Post on following url to run your job: delayed_job_creation_path(DelayedJobs::DummyJob, { some_param: 37 })
* And then poll this url (using the id returned in previous post) to get your job status: delayed_job_polling_path(run_id)
This project rocks and uses MIT-LICENSE.