↓ Archives ↓

Posts Tagged → crontab

Hello whenever, goodbye manual crontab

Do you hate managing cron configurations manually? How about maintaining different cron configs for every Rails application you might possibly have?

Wheneverize

Say hello to a ruby gem called whenever. It basically allows you to configure your cron jobs in ruby. An example to illustrate:
# assuming you have gemcutter in your list of sources
sudo gem install whenever

# in your rails application
wheneverize .

# now edit config/schedule.rb
vi config/schedule.rb
Now you’re presented with a very easy to understand Ruby DSL. No more reading cron manuals, it’s very straightforward and intuitive.
set :output, "/opt/myapp.com/current/log/cron_log.log"

every :reboot do
  rake "solr:start"
end

every :friday, :at => '8am' do
  rake "newsletters:deliver"
end

every 1.day, :at => '12am' do
  rake "harvester:analyze"
end
Now this ruby file will not be enough to run itself. Fortunately, if you’re using capistrano, updating your cron config after every deploy is dead simple:
# in your config/deploy/production.rb maybe

namespace :deploy do
  desc "Update the crontab file"
  task :update_crontab, :roles => :db do
    run "cd #{release_path} && whenever --update-crontab #{application}"
  end
end

after "deploy:restart", "deploy:update_crontab"
Say goodbye to minding crontabs saved on different servers and say hello to a well maintained and managed configuration in your rails app.

This post by cyx is from pipe :to => /dev/null.