diff --git a/script/spec_server b/script/spec_server deleted file mode 100755 --- a/script/spec_server +++ /dev/null @@ -1,102 +0,0 @@ -#!/usr/bin/env ruby -$LOAD_PATH.unshift File.dirname(__FILE__) + '/../../rspec/lib' # For svn -$LOAD_PATH.unshift File.dirname(__FILE__) + '/../vendor/plugins/rspec/lib' # For rspec installed as plugin -require 'rubygems' -require 'drb/drb' -require 'rbconfig' -require 'spec' -require 'optparse' - -# This is based on Florian Weber's TDDMate -module Spec - module Runner - class RailsSpecServer - def run(argv, stderr, stdout) - $stdout = stdout - $stderr = stderr - - base = ActiveRecord::Base - def base.clear_reloadable_connections! - active_connections.each do |name, conn| - if conn.requires_reloading? - conn.disconnect! - active_connections.delete(name) - end - end - end - - if ActionController.const_defined?(:Dispatcher) - dispatcher = ::ActionController::Dispatcher.new($stdout) - dispatcher.cleanup_application(true) - elsif ::Dispatcher.respond_to?(:reset_application!) - ::Dispatcher.reset_application! - else - raise "Application reloading failed" - end - ::Dependencies.mechanism = :load - require_dependency('application.rb') unless Object.const_defined?(:ApplicationController) - load File.dirname(__FILE__) + '/../spec/spec_helper.rb' - - ::Spec::Runner::CommandLine.run( - ::Spec::Runner::OptionParser.parse( - argv, - $stderr, - $stdout - ) - ) - end - end - end -end -puts "Loading Rails environment" - -ENV["RAILS_ENV"] = "test" -require File.expand_path(File.dirname(__FILE__) + "/../config/environment") -require 'dispatcher' - -def restart_test_server - puts "restarting" - config = ::Config::CONFIG - ruby = File::join(config['bindir'], config['ruby_install_name']) + config['EXEEXT'] - command_line = [ruby, $0, ARGV].flatten.join(' ') - exec(command_line) -end - -def daemonize(pid_file = nil) - return yield if $DEBUG - pid = Process.fork{ - Process.setsid - Dir.chdir(RAILS_ROOT) - trap("SIGINT"){ exit! 0 } - trap("SIGTERM"){ exit! 0 } - trap("SIGHUP"){ restart_test_server } - File.open("/dev/null"){|f| - STDERR.reopen f - STDIN.reopen f - STDOUT.reopen f - } - yield - } - puts "spec_server launched. (PID: %d)" % pid - File.open(pid_file,"w"){|f| f.puts pid } if pid_file - exit! 0 -end - -options = Hash.new -opts = OptionParser.new -opts.on("-d", "--daemon"){|v| options[:daemon] = true } -opts.on("-p", "--pid PIDFILE"){|v| options[:pid] = v } -opts.parse!(ARGV) - -puts "Ready" -exec_server = lambda { - trap("USR2") { restart_test_server } if Signal.list.has_key?("USR2") - DRb.start_service("druby://localhost:8989", Spec::Runner::RailsSpecServer.new) - DRb.thread.join -} - -if options[:daemon] - daemonize(options[:pid], &exec_server) -else - exec_server.call -end