class PhusionPassenger::SpawnManager
def spawn_rack_application(options)
def spawn_rack_application(options) app_group_name = options["app_group_name"] spawn_method = options["spawn_method"] spawner = nil create_spawner = nil key = nil case spawn_method when nil, "", "smart", "smart-lv2" @spawners.synchronize do key = "app:#{app_group_name}" spawner = @spawners.lookup_or_add(key) do spawner_timeout = options["app_spawner_timeout"] spawner = Rack::ApplicationSpawner.new( @options.merge(options)) if spawner_timeout != -1 spawner.max_idle_time = spawner_timeout end spawner.start spawner end begin return spawner.spawn_application(options) rescue AbstractServer::ServerError @spawners.delete(key) raise end end else return Rack::ApplicationSpawner.spawn_application( @options.merge(options)) end end