Skip to content

Instantly share code, notes, and snippets.

@artemave
Created December 6, 2011 18:09
Show Gist options
  • Select an option

  • Save artemave/1439225 to your computer and use it in GitHub Desktop.

Select an option

Save artemave/1439225 to your computer and use it in GitHub Desktop.
Temporary copy/paste solution to start/stop rest-assured
# Somewhere in you env.rb /spec_helper.rb or the like
require_relative "rest-assured-server"
at_exit do
RestAssuredServer.stop
end
RestAssuredServer.start
# Do some other heavy lifting (e.g., start firefox) while it starts up
while not RestAssuredServer.up?
puts 'Waiting for RestAssuredServer to come up...'
sleep 1
end
require 'net/http'
class RestAssuredServer
@pid_file = "./rest-assured.pid"
def self.start(opts = {})
@server_port = opts[:port] || 9876
print 'Starting REST-assured server... '
p = Process.fork do
if get_pid
print "\nPrevious REST-assured instance appears to be running. Will be using it."
else
Process.exec("bundle exec rest-assured -p #{@server_port} -a mysql")
end
end
Process.detach(p)
puts 'Done.'
end
def self.stop
print 'Shutting down REST-assured server... '
Process.kill('TERM', get_pid.to_i) rescue puts( "Failed to kill REST-assured server: #{$!}" )
puts 'Done.'
end
def self.server_address
"http://localhost:#{@server_port}"
end
def self.up?
Net::HTTP.new('localhost', @server_port).head('/')
true
rescue Errno::ECONNREFUSED
false
end
private
def self.get_pid
`ps -eo pid,args`.split("\n").grep( /rest-assured -p #{@server_port}/ ).map{|p| p.split.first }.first
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment