Skip to content

Commit

Permalink
slightly better runner support
Browse files Browse the repository at this point in the history
  • Loading branch information
johnbintz committed Jun 29, 2011
1 parent 63b9fca commit 4836e96
Showing 1 changed file with 24 additions and 10 deletions.
34 changes: 24 additions & 10 deletions lib/guard/rails/runner.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,18 +13,14 @@ def initialize(options)
def start
kill_unmanaged_pid! if options[:force_run]
run_rails_command!
count = 0
while !has_pid? && count < MAX_WAIT_COUNT
wait_for_pid_action
count += 1
end
!(count == MAX_WAIT_COUNT)
wait_for_pid
end

def stop
if File.file?(pid_file)
system %{kill -KILL #{File.read(pid_file).strip}}
sleep sleep_time
wait_for_no_pid if $?.exitstatus == 0
FileUtils.rm pid_file
end
end

Expand Down Expand Up @@ -72,20 +68,38 @@ def wait_for_pid_action

def kill_unmanaged_pid!
if pid = unmanaged_pid
system %{kill -KILL #{pid}}
system %{kill -KILL #{pid}}
FileUtils.rm pid_file
wait_for_no_pid
end
end

def unmanaged_pid
pid_command = "lsof -n -i TCP:#{options[:port]}"
%x{#{pid_command}}.each_line { |line|
%x{lsof -n -i TCP:#{options[:port]}}.each_line { |line|
if line["*:#{options[:port]} "]
return line.split("\s")[1]
end
}
nil
end

private
def wait_for_pid
wait_for_pid_loop
end

def wait_for_no_pid
wait_for_pid_loop(false)
end

def wait_for_pid_loop(check_for_existince = true)
count = 0
while !(check_for_existince ? has_pid? : !has_pid?) && count < MAX_WAIT_COUNT
wait_for_pid_action
count += 1
end
!(count == MAX_WAIT_COUNT)
end
end
end

0 comments on commit 4836e96

Please sign in to comment.