From 1ce158ac8c58b2b815b6094087275c2162df94d4 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 16 Jul 2005 20:05:27 +0000 Subject: Support for upcoming script/spawner git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1840 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- railties/lib/program_process.rb | 62 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 railties/lib/program_process.rb (limited to 'railties') diff --git a/railties/lib/program_process.rb b/railties/lib/program_process.rb new file mode 100644 index 0000000000..80aa95c41c --- /dev/null +++ b/railties/lib/program_process.rb @@ -0,0 +1,62 @@ +class ProgramProcess + class << self + def process_keywords(action, *keywords) + processes = keywords.collect { |keyword| find_by_keyword(keyword) }.flatten + + if processes.empty? + puts "Couldn't find any process matching: #{keywords.join(" or ")}" + else + processes.each do |process| + puts "#{action.humanize}ing #{process}" + process.send(action) + end + end + end + + def find_by_keyword(keyword) + process_lines_with_keyword(keyword).split("\n").collect { |line| + next if line.include?("inq") || line.include?("ps -ax") || line.include?("grep") + pid, *command = line.split + new(pid, command.join(" ")) + }.compact + end + + private + def process_lines_with_keyword(keyword) + `ps -ax -o 'pid command' | grep #{keyword}` + end + end + + def initialize(pid, command) + @pid, @command = pid, command + end + + def find + end + + def reload + `kill -s HUP #{@pid}` + end + + def restart + kill + `#{@command}` + end + + def graceful_restart + graceful_kill + `#{@command}` + end + + def graceful_kill + `kill -s TERM #{@pid}` + end + + def kill + `kill -9 #{@pid}` + end + + def to_s + "[#{@pid}] #{@command}" + end +end \ No newline at end of file -- cgit v1.2.3