#!/usr/bin/env ruby class GitlabCli def initialize @path = File.dirname(__FILE__) @command = ARGV.shift @mode = ARGV.shift end def execute case @command when 'start' then start when 'stop' then stop else puts "-- Usage gitlab start production or gitlab stop development" end end private def start case @mode when 'production'; system(unicorn_start_cmd) system(resque_start_cmd) else system(rails_start_cmd) system(resque_dev_start_cmd) end end def stop case @mode when 'production'; system(unicorn_stop_cmd) else system(rails_stop_cmd) end system(resque_stop_cmd) end def rails_start_cmd "bundle exec rails s -d" end def rails_stop_cmd pid = File.join(@path, "tmp/pids/server.pid") "kill -QUIT `cat #{pid}`" end def unicorn_start_cmd unicorn_conf = File.join(@path, "config/unicorn.rb") "bundle exec unicorn_rails -c #{unicorn_conf} -E production -D" end def unicorn_stop_cmd pid = File.join(@path, "/tmp/pids/unicorn.pid") "kill -QUIT `cat #{pid}`" end def resque_dev_start_cmd "./resque_dev.sh > /dev/null 2>&1" end def resque_start_cmd "./resque.sh > /dev/null 2>&1" end def resque_stop_cmd pid = File.join(@path, "tmp/pids/resque_worker.pid") "kill -QUIT `cat #{pid}`" end end GitlabCli.new.execute