bdunagan

fill the void - bdunagan

01 Oct 2011
Rails Tip: Locking Cron Jobs

I really like using the Ruby whenever gem for managing cron jobs in Rails. But recently I needed to ensure there was only one instance of a cron job running. If it took a bit too long, I didn’t want another instance starting up in parallel. Enter flock.

task :do_stuff_for_a_while => :environment do
  # Ensure there is only one instance running.
  return if File.new(__FILE__).flock(File::LOCK_EX | File::LOCK_NB) == false

  # Do some stuff.
end
Previous LinkedIn Twitter GitHub Email Next