- Start a Sinatra server on port 4000
- GET / to that server triggers a git pulland mod_rails restart
- Hit port 4000 locally after pushing
We wanted a really, really simple way to deploy Hurl during the 2009 Rails Rumble.
| require 'rubygems' | |
| require 'deployr' | |
| require 'thin' | |
| Rack::Handler::Thin.run Deployr.new, :Port => 4000 | 
| require 'sinatra/base' | |
| class Deployr < Sinatra::Base | |
| get '/' do | |
| update_hurl | |
| "ok" | |
| end | |
| def update_hurl | |
| return if @running | |
| @running = true | |
| Thread.new do | |
| system "cd /www/hurl/current && git pull origin master && touch tmp/restart.txt" | |
| @running = false | |
| end | |
| end | |
| end | 
| task :default => :deploy | |
| desc "Sync changes and deploy the app!" | |
| task :deploy do | |
| `git pull origin master && git push origin master` | |
| `curl -s http://hurl.r09.railsrumble.com:4000/ &> /dev/null` | |
| end |