- Start a Sinatra server on port 4000
- GET / to that server triggers a
git pull
and 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 |