Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
/ jobbr Public

Rails engine to manage and supervise your batch jobs. Based on sidekiq.

License

Notifications You must be signed in to change notification settings

cblavier/jobbr

Repository files navigation

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.

<img src=" api.travis-ci.org/cblavier/jobbr.svg?branch=master" />

<img src="" />

<img src="" />

<img src="" width=‘400’> <img src="" width=‘400’>

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 gem to automatically updates Crontab during deployment.

Start by adding Jobbr to your Gemfile:

gem 'jobbr'

Then mount Jobbr engine to your ‘routes.rb` file.

mount Jobbr::Engine => "/jobbr"

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'

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

<img src="" width=‘400’>

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.

About

Rails engine to manage and supervise your batch jobs. Based on sidekiq.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

AltStyle によって変換されたページ (->オリジナル) /