Skip to content

Instantly share code, notes, and snippets.

@karnauskas
Forked from flores/thin init script
Created December 26, 2012 06:55
Show Gist options
  • Save karnauskas/4378508 to your computer and use it in GitHub Desktop.
Save karnauskas/4378508 to your computer and use it in GitHub Desktop.
#!/usr/bin/env ruby
# quick and dirty thin init script
#
# path for thin
thin = "/home/someuser/.rvm/gems/ruby-1.8.7-p72@global/bin/thin"
config = "config/config.ru"
# which dir to run from
path = "/srv/thisapp"
port = "9000"
# let's keep it trackable
log = "/var/log/thin.#{port}.log"
pid = "/var/log/thin.#{port}.pid"
case ARGV.first
when 'status':
if ( File.exist?(log) )
pid = `pidof thin`.chomp
log_pid = `cat #{log}`.chomp
if (pid.to_i == log_pid.to_i)
puts "running"
elsif (pid =~ /\d+/)
puts "running, but process does not match the pid in #{pid}!"
else
puts "not running, removing stale pid"
`rm -f #{pid}`
end
else
puts "not running"
end
when 'start':
system("#{thin} start --environment production --port #{port} -P #{pid} -l #{log} -d")
puts "thin started"
when 'stop':
system("#{thin} stop -P #{pid}")
when 'restart':
system("#{thin} stop -P #{pid}")
puts "waiting a couple of seconds to let everything die"
sleep 5
system("#{thin} start --environment production --port #{port} -P #{pid} -l #{log} -d")
#system("#{thin} start -R #{config} -P #{pid} -l #{log} -d -c #{path}")
puts "thin started"
else
puts "usage: $0 status|start|stop|restart"
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment