Show More
Commit Description:
added message hiding for admin in msg console...
Commit Description:
added message hiding for admin in msg console
git-svn-id: http://theory.cpe.ku.ac.th/grader/web/trunk@371 6386c4cd-e34a-4fa8-8920-d93eb39b512e
References:
File last commit:
Show/Diff file:
Action:
script/spec_server
| 102 lines
| 2.8 KiB
| text/plain
| TextLexer
|
|
r60 | #!/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 | ||||