1
0
Fork 0
mirror of https://github.com/sinatra/sinatra synced 2023-03-27 23:18:01 -04:00

improve integration server handling

This commit is contained in:
Konstantin Haase 2012-03-08 08:54:34 +01:00
parent 895b09b207
commit a2c67e4e27

View file

@ -36,6 +36,7 @@ module IntegrationHelper
def run def run
return unless installed? return unless installed?
kill
@log = "" @log = ""
@pipe = IO.popen(command) @pipe = IO.popen(command)
@started = Time.now @started = Time.now
@ -64,7 +65,7 @@ module IntegrationHelper
def alive? def alive?
3.times { get('/ping') } 3.times { get('/ping') }
true true
rescue Errno::ECONNREFUSED, Errno::ECONNRESET => error rescue Errno::ECONNREFUSED, Errno::ECONNRESET, EOFError => error
false false
end end
@ -127,7 +128,12 @@ module IntegrationHelper
super "with #{server.name}: #{message}" do super "with #{server.name}: #{message}" do
self.server = server self.server = server
server.run unless server.alive? server.run unless server.alive?
instance_eval(&block) begin
instance_eval(&block)
rescue Exception => error
server.kill
raise error
end
end end
end end
end end