Skip to content

Instantly share code, notes, and snippets.

@georgi
Created February 14, 2012 09:09
Show Gist options
  • Save georgi/1825003 to your computer and use it in GitHub Desktop.
Save georgi/1825003 to your computer and use it in GitHub Desktop.
Spin server
#!/usr/bin/env ruby
start_time = Time.now
require 'socket'
require 'tempfile'
require File.expand_path('config/application.rb')
require 'rspec/rails'
require 'rspec/autorun'
spec_dir = File.expand_path('spec')
$LOAD_PATH << spec_dir
socket_file = "#{Dir.tmpdir}/spin"
File.delete(socket_file) if File.exist?(socket_file)
socket = UNIXServer.open(socket_file)
puts "spec server ready"
puts "startup time: #{Time.now - start_time} seconds"
loop do
conn = socket.accept
args = JSON.load(conn.gets)
fork do
begin
# ActiveRecord::Base.establish_connection(Rails.env)
parser = Spec::Runner::OptionParser.new(conn, conn)
parser.order!(args)
Spec::Runner.use parser.options
Spec::Runner.run
rescue Errno::EPIPE
puts "client disconnected"
rescue
puts $!.inspect
$!.backtrace.each do |line|
puts line
end
conn.puts $!.inspect
$!.backtrace.each do |line|
conn.puts line
end
end
end
Process.wait
conn.close
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment