-
Notifications
You must be signed in to change notification settings - Fork 14
A Rails plugin for managing and installing rake-centric crontab files.
License
saimonmoore/craken
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Craken ====== Craken is a rails plugin for managing and installing rake-centric crontab files over Capistrano. What is a crontab? A command list that cron will run at specified intervals. What is cron? A daemon to execute scheduled commands. If you don't know these things already you should probably do a little research before using this tool :) Craken uses files called raketabs that are similar in every respect to crontab files except the commands are rake tasks instead of arbitrary unix commands. The file goes in the craken directory inside config (i.e. #{RAILS_ROOT}/config/craken/raketab). Why not just let it run arbitrary commands instead of limiting it to rake tasks? The main issue this plugin attempts to alleviate is having to manage the rails environment configuration for multiple deployments. Craken will set up the crontab to change into the application's current directory and set rake to run in the correct environment. Raketab files can also handle ERB escaped text bound to the rake environment. A Capistrano file is also included to make it easy to install cron jobs on multiple hosts. A new :cron capistrano role is necessary to define which machines to install to. Configuration ============= Command line configuration options to the rake task (defaults are in parens): deploy_path Where the application is deployed (RAILS_ROOT) crontab_exe Where to find the crontab excutable (/usr/bin/crontab) rake_exe The rake executable (/usr/bin/rake) raketab_rails_env Rails environment mode to set the cron jobs to run in (RAILS_ENV) app_name Name of the application (tries to figure it out from the deploy path) raketab_file Where the raketab file is (#{RAILS_ROOT}/config/craken/#{HOSTNAME}_raketab or #{RAILS_ROOT}/config/craken/raketab if the first is not found) Example ======= An example line from an example raketab file: 59 * * * * thing:to_do > /tmp/thing_to_do.log 2>&1 This will run the rake task thing:to_do every 59th minute after every hour. The little redirect thing is added for effect; otherwise output will be mailed to the user who the crontab is installed on. When craken:install is run on the production box, the crontab will look like this: ### foo raketab 59 * * * * cd /home/thatguy/u/apps/foo/current && /usr/bin/rake --silent RAILS_ENV=production thing:to_do > /tmp/thing_to_do.log 2>&1 ### foo raketab end The "magic" part of craken is the bit that crontab added: cd /home/thatguy/u/apps/foo/current && /usr/bin/rake --silent RAILS_ENV=production Running the Capistrano Script ----------------------------- cap craken:install Deploying to someplace other than production? Rails environment is important so rake is set in the right mode when the cron job runs: cap -c rails_env=qa craken:install Different raketab files can be used to limit a subset of rake tasks to a particular machine listed as a :cron role. These files are prefixed with the name of the machine they need to be deployed to: foo_raketab # goes on the "foo" machine bar_raketab # goes on the "bar" machine raketab # goes on all machines except "foo" and "bar" Doug McInnes <[email protected]> John Dewey <[email protected]> Copyright (c) 2008 Los Angeles Times, released under the MIT license
About
A Rails plugin for managing and installing rake-centric crontab files.
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published