Changeset 1331

Show
Ignore:
Timestamp:
01/28/08 14:31:15 (9 months ago)
Author:
iv..@gweezlebur.com
Message:

Tweaks for cluster start/stop -- Closes #428 -- thanks nagash (this stuff is better in 0.9)

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/lib/merb/server.rb

    r1252 r1331  
    3333                 
    3434        if Merb::Config[:cluster] 
    35           delete_pidfiles 
    3635          Merb::Config[:port].to_i.upto(Merb::Config[:port].to_i+Merb::Config[:cluster].to_i-1) do |port| 
    37             puts "Starting merb server on port: #{port}" 
    38             start(port) 
     36            unless alive?(port) 
     37              delete_pidfiles(port) 
     38              puts "Starting merb server on port: #{port}" 
     39              start(port) 
     40            else 
     41              raise "Merb is already running on port: #{port}" 
     42            end 
    3943          end    
    4044        elsif Merb::Config[:daemonize] 
    41           delete_pidfiles(Merb::Config[:port]) 
    42           start(Merb::Config[:port]) 
     45          unless alive?(Merb::Config[:port])   
     46            delete_pidfiles(Merb::Config[:port]) 
     47            start(Merb::Config[:port]) 
     48          else 
     49            raise "Merb is already running on port: #{port}" 
     50          end 
    4351        else 
    4452          trap('TERM') { exit } 
     
    5058      def store_pid(pid,port) 
    5159        File.open("#{Merb::Config[:merb_root]}/log/merb.#{port}.pid", 'w'){|f| f.write("#{Process.pid}\n")} 
    52       end   
     60      end 
     61       
     62      def alive?(port) 
     63        f = Merb::Config[:merb_root] + "/log/merb.#{port}.pid" 
     64        pid = IO.read(f).chomp.to_i 
     65        Process.kill(0, pid) 
     66        true 
     67      rescue 
     68        false 
     69      end 
    5370       
    5471      def kill(ports, sig=9)