Unicorn

Unicorn module containing all of the classes (include C extensions) for running a Unicorn web server. It contains a minimalist HTTP server with just enough functionality to service web application requests fast as possible.

Public Class Methods

builder(ru, opts) click to toggle source

This returns a lambda to pass in as the app, this does not “build” the app (which we defer based on the outcome of “preload_app” in the Unicorn config). The returned lambda will be called when it is time to build the app.

# File lib/unicorn.rb, line 19
def self.builder(ru, opts)
  # allow Configurator to parse cli switches embedded in the ru file
  Unicorn::Configurator::RACKUP.update(:file => ru, :optparse => opts)

  # always called after config file parsing, may be called after forking
  lambda do ||
    inner_app = case ru
    when /\.ru$/
      raw = File.read(ru)
      raw.sub!(/^__END__\n.*/, '')
      eval("Rack::Builder.new {(#{raw}\n)}.to_app", TOPLEVEL_BINDING, ru)
    else
      require ru
      Object.const_get(File.basename(ru, '.rb').capitalize)
    end

    pp({ :inner_app => inner_app }) if $DEBUG

    # return value, matches rackup defaults based on env
    case ENV["RACK_ENV"]
    when "development"
      Rack::Builder.new do
        use Rack::CommonLogger, $stderr
        use Rack::ShowExceptions
        use Rack::Lint
        run inner_app
      end.to_app
    when "deployment"
      Rack::Builder.new do
        use Rack::CommonLogger, $stderr
        run inner_app
      end.to_app
    else
      inner_app
    end
  end
end
listener_names() click to toggle source

returns an array of strings representing TCP listen socket addresses and Unix domain socket paths. This is useful for use with Raindrops::Middleware under Linux: raindrops.bogomips.org/

# File lib/unicorn.rb, line 60
def self.listener_names
  Unicorn::HttpServer::LISTENERS.map do |io|
    Unicorn::SocketHelper.sock_name(io)
  end
end
run(app, options = {}) click to toggle source
# File lib/unicorn.rb, line 11
def self.run(app, options = {})
  Unicorn::HttpServer.new(app, options).start.join
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.