Skip to content

Commit

Permalink
monitoring subprocesses on rake tasks using pure Ruby - IO.popen
Browse files Browse the repository at this point in the history
  • Loading branch information
caike committed Jun 19, 2010
1 parent dfe067c commit a761b06
Showing 1 changed file with 12 additions and 27 deletions.
39 changes: 12 additions & 27 deletions Rakefile
Expand Up @@ -40,28 +40,10 @@ def optionally
rescue LoadError; end
end

def execute_process(name)
sh "ruby ./spec/units/client/#{name}.rb &"
wait_server 4567
%x(ps -ef | grep #{name}).split[1]
end

def process(name)
%x(ps -ef | grep #{name} | grep -v grep).split[1] || execute_process(name)
end

def start_server_and_invoke_test(task_name)
kill_server "fake_server"
pid = process "fake_server"
Rake::Task[task_name].invoke
kill_server "fake_server"
end

def kill_server(where)
c = `(ps -ef | grep '#{where}')`.split(/\n/)
c.each do |line|
pid = line.split[1]
system "kill -9 #{pid}"
IO.popen("ruby ./spec/units/client/fake_server.rb") do |pipe|
Rake::Task[task_name].invoke
Process.kill 'INT', pipe.pid
end
end

Expand Down Expand Up @@ -152,12 +134,15 @@ namespace :test do
desc "runs all example tests"
task :examples do
Rake::Task["install"].invoke()
kill_server "script/server"
enter_dir = "cd full-examples/rest_from_scratch/part_3"
system "#{enter_dir} && rake db:reset db:seed && script/server -d"
wait_server
system "#{enter_dir} && rake spec"
kill_server "script/server"

target_dir = "full-examples/rest_from_scratch/part_3"
system "cd #{target_dir} && rake db:reset db:seed"

IO.popen("ruby #{target_dir}/script/server") do |pipe|
system "cd #{target_dir} && rake spec"
Process.kill 'INT', pipe.pid
end

end

end
Expand Down

0 comments on commit a761b06

Please sign in to comment.