Class | PhusionPassenger::AppProcess
In: | lib/phusion_passenger/app_process.rb
Parent: | Object

Contains various information about an application process.

### Methods

close detect_framework_version new read_from_channel search_gem write_to_channel

### Attributes

app_root | [R] | The root directory of this application process.
owner_pipe | [R] | The owner pipe of the application instance (an IO object). Please see RequestHandler for a description of the owner pipe.
pid | [R] | This process‘s PID.
server_sockets | [R] | A hash containing all server sockets that this application process listens on. The hash is in the form of:
      {
         name1 => [socket_address1, socket_type1],
         name2 => [socket_address2, socket_type2],
         ...
      }
`name` is a Symbol. `socket_addressx` is the address of the socket and +socket_type1+ is the socket‘s type (either ‘unix’ or ‘tcp’). There‘s guaranteed to be at least one server socket, namely one with the name +:main+.

### Public Class methods

detect_framework_version(app_root)

- Returns the Ruby on Rails version that the application requires.
- Returns `:vendor` if the application has a vendored Rails.
- Returns nil if the application doesn‘t specify a particular version.

Raises VersionNotFound if the required Rails version is not installed.

new(app_root, pid, owner_pipe, server_sockets)

Creates a new AppProcess instance. The parameters correspond with the attributes of the same names. No exceptions will be thrown.

read_from_channel(channel)

Construct an AppProcess by reading information from the given MessageChannel. The other side of the channel must be writing AppProcess information using AppProcess#write_to_channel.

Might raise SystemCallError, IOError or SocketError.

search_gem(gem_name, gem_version_spec)

### Public Instance methods

close()

Close the connection with the application process. If there are no other processes that have connections to this application process, then it will shutdown as soon as possible.

See also AbstractRequestHandler#owner_pipe.

write_to_channel(channel)

Write this AppProcess‘s information over the given MessageChannel. The other side must read the information using AppProces.read_from_channel.

Might raise SystemCallError, IOError or SocketError.

[Validate]