Uniksowy skrypt /etc/init.d w Ruby

Opublikowane przez Jarosław Zabiełło Fri, 29 Sep 2006 12:04:00 GMT

Ruby całkiem dobrze nadaje się do pisania skryptów systemowych. W sumie nie wiem dlaczego do tej pory pisałem skrypty tego typu w uniksowym bash’u. :)

#!/usr/bin/env ruby

MONGREL = "/usr/bin/mongrel_rails"
PROJECT = "/home/httpd/somedomain.com/rails_project"

def execute(action, project)
  Dir.chdir(project)
  print "#{MONGREL} #{action}..."
  $defout.flush # unbuffered output
  `#{MONGREL} cluster::#{action}`
  puts 'done'
end

case ARGV.first
  when 'start': execute 'start', PROJECT
  when 'stop': execute 'stop', PROJECT
  when 'restart': execute 'restart', PROJECT
end

unless %w{start stop restart}.include? ARGV.first
  puts "Usage: sudo #{__FILE__} {start|stop|restart}"
  exit
end

Posted in  | Tagi , ,  | 1 comment

Comments

  1. Avatar dmilith powiedział about 1 year later:

    można tu dodać sprawdzenie $? == 0 po ``, dające pewność że wszystko zakończyło się poprawnie.

(leave url/email »)

   Pomoc języka formatowania Obejrzyj komentarz