class Sauce::Utilities::RailsServer
Attributes
port[R]
Public Class Methods
is_rails_app?()
click to toggle source
# File lib/sauce/utilities/rails_server.rb, line 20 def self.is_rails_app? return !major_version.nil? end
major_version()
click to toggle source
# File lib/sauce/utilities/rails_server.rb, line 24 def self.major_version paths = ["script/server", "script/rails", "bin/rails"] startup_script = paths.detect {|path| File.exists? path} case startup_script when 'script/server' return 2 when 'script/rails' return 3 when 'bin/rails' return 4 else return nil end end
process_arguments()
click to toggle source
# File lib/sauce/utilities/rails_server.rb, line 40 def self.process_arguments case major_version when 2 ["ruby", "script/server"] else ["bundle", "exec", "rails", "server"] end end
server_pool()
click to toggle source
# File lib/sauce/utilities/rails_server.rb, line 49 def self.server_pool @@server_pool ||= {} end
start_if_required(config)
click to toggle source
# File lib/sauce/utilities/rails_server.rb, line 9 def self.start_if_required(config) if config[:start_local_application] && self.is_rails_app? server = new server.start return server end return server end
Public Instance Methods
start()
click to toggle source
# File lib/sauce/utilities/rails_server.rb, line 55 def start @port = Sauce::Config.new[:application_port] if ENV["TEST_ENV_NUMBER"] @test_env = ENV["TEST_ENV_NUMBER"].to_i end STDERR.puts "Starting Rails server on port #{@port}..." @process_args = RailsServer.process_arguments @process_args.push *["-e", "test", "--port", "#{@port}"] if @test_env @process_args.push *["--pid", "#{Dir.pwd}/tmp/pids/server-#{@test_env}"] end @server = ChildProcess.build *@process_args @server.io.inherit! @server.start wait_for_server_on_port(@port) at_exit do @server.stop(3, "INT") RailsServer.server_pool.delete Thread.current.object_id end STDERR.puts "Rails server running!" RailsServer.server_pool[Thread.current.object_id] = @server end
stop()
click to toggle source
# File lib/sauce/utilities/rails_server.rb, line 86 def stop begin @server.stop(3, "INT") rescue STDERR.puts "Rails server could not be killed. Did it fail to start?" end end