→ rake start

16 October 2009

I'm working on a Sinatra app that uses MongoDB. I'd love to start both Sinatra and MongoDB at the same time, then kill them at the same time, too. Luckily we can use Rake's multitask for this.

namespace :mongodb do
  desc "Start MongoDB for development"
  task :start do
    mkdir_p "db"
    system "mongod --dbpath db/"
  end
end

namespace :haystack do
  desc "Start Haystack for development"
  task :start do
    system "shotgun config.ru"
  end
end

desc "Start everything."
multitask :start => [ 'mongodb:start', 'haystack:start' ]

Now I can start both MongoDB and my Sinatra app with rake start. It'll run in the foreground and when I Ctrl-C, both apps will be sent the Interrupt and gracefully shutdown.