In Files

Class/Module Index [+]

Quicksearch

PhusionPassenger

Phusion Passenger - www.phusionpassenger.com/ Copyright © 2010-2015 Phusion

"Phusion Passenger" is a trademark of Hongli Lai & Ninh Bui.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


Phusion Passenger - www.phusionpassenger.com/ Copyright © 2010-2014 Phusion

"Phusion Passenger" is a trademark of Hongli Lai & Ninh Bui.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


## Coding notes

### Lazy library loading

We lazy load as many libraries as possible not only to improve startup performance, but also to ensure that we don't require libraries before we've passed the dependency checking stage of the runtime installer.

### Path handling

Handle paths as follows so that the behavior complies with the documentation:


Phusion Passenger - www.phusionpassenger.com/ Copyright © 2010-2015 Phusion

"Phusion Passenger" is a trademark of Hongli Lai & Ninh Bui.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


Phusion Passenger - www.phusionpassenger.com/ Copyright © 2010-2015 Phusion

"Phusion Passenger" is a trademark of Hongli Lai & Ninh Bui.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


Phusion Passenger - www.phusionpassenger.com/ Copyright © 2010-2015 Phusion

"Phusion Passenger" is a trademark of Hongli Lai & Ninh Bui.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


Phusion Passenger - www.phusionpassenger.com/ Copyright © 2010 Phusion

"Phusion Passenger" is a trademark of Hongli Lai & Ninh Bui.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


daemon_controller, library for robust daemon management Copyright © 2010-2015 Phusion

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


Phusion Passenger - www.phusionpassenger.com/ Copyright © 2010-2015 Phusion

"Phusion Passenger" is a trademark of Hongli Lai & Ninh Bui.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


IMPORTANT: do not directly or indirectly require native_support; we can't compile it yet until we have a compiler, and installers usually check whether a compiler is installed.


Phusion Passenger - www.phusionpassenger.com/ Copyright © 2010-2013 Phusion

"Phusion Passenger" is a trademark of Hongli Lai & Ninh Bui.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


Phusion Passenger - www.phusionpassenger.com/ Copyright © 2014 Phusion

"Phusion Passenger" is a trademark of Hongli Lai & Ninh Bui.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


Phusion Passenger - www.phusionpassenger.com/ Copyright © 2010-2015 Phusion

"Phusion Passenger" is a trademark of Hongli Lai & Ninh Bui.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


Phusion Passenger - www.phusionpassenger.com/ Copyright © 2013 Phusion

"Phusion Passenger" is a trademark of Hongli Lai & Ninh Bui.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


Phusion Passenger - www.phusionpassenger.com/ Copyright © 2010-2014 Phusion

"Phusion Passenger" is a trademark of Hongli Lai & Ninh Bui.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


Phusion Passenger - www.phusionpassenger.com/ Copyright © 2010-2015 Phusion

"Phusion Passenger" is a trademark of Hongli Lai & Ninh Bui.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


Phusion Passenger - www.phusionpassenger.com/ Copyright © 2010-2015 Phusion

"Phusion Passenger" is a trademark of Hongli Lai & Ninh Bui.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Public Class Methods

advertised_concurrency_level() click to toggle source
# File lib/phusion_passenger/public_api.rb, line 53
def advertised_concurrency_level
  @@advertised_concurrency_level
end
advertised_concurrency_level=(value) click to toggle source
# File lib/phusion_passenger/public_api.rb, line 57
def advertised_concurrency_level=(value)
  @@advertised_concurrency_level = value
end
benchmark(env = nil, title = "Benchmarking", &block) click to toggle source
# File lib/phusion_passenger/public_api.rb, line 80
def benchmark(env = nil, title = "Benchmarking", &block)
  measure_and_log_event(env, "BENCHMARK: #{title}", &block)
end
binaries_sites() click to toggle source

Other resource locations ######

# File lib/phusion_passenger.rb, line 212
def self.binaries_sites
  return [
    { :url => "https://oss-binaries.phusionpassenger.com/binaries/passenger/by_release".freeze,
      :cacert => "#{resources_dir}/oss-binaries.phusionpassenger.com.crt".freeze },
    { :url => "https://s3.amazonaws.com/phusion-passenger/binaries/passenger/by_release".freeze }
  ]
end
call_event(name, *args) click to toggle source
# File lib/phusion_passenger/public_api.rb, line 39
def call_event(name, *args)
  callback_list_for_event(name).each do |callback|
    callback.call(*args)
  end
end
custom_packaged?() click to toggle source
# File lib/phusion_passenger.rb, line 143
def self.custom_packaged?
  return @custom_packaged
end
find_support_binary(name) click to toggle source
# File lib/phusion_passenger.rb, line 195
def self.find_support_binary(name)
  all_support_binary_dirs = [
    support_binaries_dir,
    user_support_binaries_dir
  ]
  all_support_binary_dirs.each do |dir|
    result = "#{dir}/#{name}"
    if File.exist?(result)
      return result
    end
  end
  return nil
end
install_framework_extensions!(*args) click to toggle source
# File lib/phusion_passenger/public_api.rb, line 45
def install_framework_extensions!(*args)
  require 'active_support/version' if defined?(::ActiveSupport) && !defined?(::ActiveSupport::VERSION)
  if defined?(::ActiveSupport) && ::ActiveSupport::VERSION::MAJOR >= 3
    PhusionPassenger.require_passenger_lib 'active_support3_extensions/init'
    ActiveSupport3Extensions.init!(PhusionPassenger::App.options, *args)
  end
end
install_spec() click to toggle source

The installation specification string, as passed to locate_directories.

# File lib/phusion_passenger.rb, line 176
def self.install_spec
  return @install_spec
end
installed_from_release_package?() click to toggle source

Whether the current Phusion Passenger installation is installed from a release package, e.g. an official gem or official tarball. Retruns false if e.g. the gem was built by the user, or if this install is from a git repository.

# File lib/phusion_passenger.rb, line 171
def self.installed_from_release_package?
  File.exist?("#{resources_dir}/release.txt")
end
locate_directories(install_spec = nil) click to toggle source

Follows the logic of ext/common/ResourceLocator.h, so don't forget to modify that too.

# File lib/phusion_passenger.rb, line 93
def self.locate_directories(install_spec = nil)
  @install_spec = install_spec || infer_install_spec
  if @install_spec && File.file?(@install_spec)
    filename = @install_spec
    options  = parse_ini_file(filename)

    @custom_packaged = true
    @packaging_method = get_option(filename, options, 'packaging_method')
    REQUIRED_LOCATIONS_INI_FIELDS.each do |field|
      value = get_option(filename, options, field.to_s)
      value.freeze unless value.nil?
      instance_variable_set("@#{field}", value)
    end
    OPTIONAL_LOCATIONS_INI_FIELDS.each do |field|
      value = get_option(filename, options, field.to_s, false)
      value.freeze unless value.nil?
      instance_variable_set("@#{field}", value)
    end
  else
    source_root            = File.dirname(File.dirname(FILE_LOCATION))
    @install_spec          = source_root
    @custom_packaged       = false
    @bin_dir               = "#{source_root}/bin".freeze
    @support_binaries_dir  = "#{source_root}/buildout/support-binaries".freeze
    @lib_dir               = "#{source_root}/buildout".freeze
    @helper_scripts_dir    = "#{source_root}/helper-scripts".freeze
    @resources_dir         = "#{source_root}/resources".freeze
    @include_dir           = "#{source_root}/ext".freeze
    @doc_dir               = "#{source_root}/doc".freeze
    @ruby_libdir           = File.dirname(FILE_LOCATION).freeze
    @node_libdir           = "#{source_root}/node_lib".freeze
    @apache2_module_path   = "#{source_root}/buildout/apache2/mod_passenger.so".freeze
    @ruby_extension_source_dir = "#{source_root}/ext/ruby".freeze
    @nginx_module_source_dir   = "#{source_root}/ext/nginx".freeze
    @download_cache_dir        = "#{source_root}/download_cache".freeze
    @build_system_dir          = source_root.dup.freeze
    REQUIRED_LOCATIONS_INI_FIELDS.each do |field|
      if instance_variable_get("@#{field}").nil?
        raise "BUG: @#{field} not set"
      end
    end
  end
end
log_cache_hit(env, name) click to toggle source
# File lib/phusion_passenger/public_api.rb, line 167
def log_cache_hit(env, name)
  transaction = lookup_union_station_web_transaction(env)
  if transaction
    transaction.message("Cache hit: #{name}")
    return true
  else
    return false
  end
end
log_cache_miss(env, name, generation_time = nil) click to toggle source
# File lib/phusion_passenger/public_api.rb, line 177
def log_cache_miss(env, name, generation_time = nil)
  transaction = lookup_union_station_web_transaction(env)
  if transaction
    if generation_time
      transaction.message("Cache miss (#{generation_time.to_i}): #{name}")
    else
      transaction.message("Cache miss: #{name}")
    end
    return true
  else
    return false
  end
end
log_controller_action(env, options) click to toggle source

Log a controller action invocation.

# File lib/phusion_passenger/public_api.rb, line 122
def log_controller_action(env, options)
  transaction = lookup_union_station_web_transaction(env)
  if transaction
    if options[:controller_name]
      if !options[:action_name]
        raise ArgumentError, "The :action_name option must be set"
      end
      transaction.message("Controller action: #{options[:controller_name]}##{options[:action_name]}")
    end
    if options[:method]
      transaction.message("Request method: #{options[:method]}")
    end
    transaction.measure("framework request processing") do
      yield
    end
  else
    yield
  end
end
log_database_query(env, name, begin_time, end_time, sql) click to toggle source

Log a database query.

# File lib/phusion_passenger/public_api.rb, line 156
def log_database_query(env, name, begin_time, end_time, sql)
  transaction = lookup_union_station_web_transaction(env)
  if transaction
    digest = Digest::MD5.hexdigest("#{name}\00##{sql}\00##{rand}")
    transaction.measured_time_points("DB BENCHMARK: #{digest}",
      begin_time,
      end_time,
      "#{name}\n#{sql}")
  end
end
log_request_exception(env, exception, options = nil) click to toggle source

Log an exception that occurred during a request.

# File lib/phusion_passenger/public_api.rb, line 85
def log_request_exception(env, exception, options = nil)
  return if !env[PASSENGER_TXN_ID]
  core = lookup_union_station_core(env)
  if core
    transaction = core.new_transaction(
      env[PASSENGER_APP_GROUP_NAME],
      :exceptions,
      union_station_key)
    begin
      request_txn_id = env[PASSENGER_TXN_ID]
      message = exception.message
      message = exception.to_s if message.empty?
      message = [message].pack('m')
      message.gsub!("\n", "")
      backtrace_string = [exception.backtrace.join("\n")].pack('m')
      backtrace_string.gsub!("\n", "")

      transaction.message("Request transaction ID: #{request_txn_id}")
      transaction.message("Message: #{message}")
      transaction.message("Class: #{exception.class.name}")
      transaction.message("Backtrace: #{backtrace_string}")

      if options && options[:controller_name]
        if options[:action_name]
          controller_action = "#{options[:controller_name]}##{options[:action_name]}"
        else
          controller_action = controller_name
        end
        transaction.message("Controller action: #{controller_action}")
      end
    ensure
      transaction.close
    end
  end
end
log_total_view_rendering_time(env, runtime) click to toggle source

Log the total view rendering time of a request.

# File lib/phusion_passenger/public_api.rb, line 143
def log_total_view_rendering_time(env, runtime)
  transaction = lookup_union_station_web_transaction(env)
  if transaction
    transaction.message("View rendering time: #{(runtime).to_i}")
  end
end
log_view_rendering(env = nil, &block) click to toggle source

Log a single view rendering.

# File lib/phusion_passenger/public_api.rb, line 151
def log_view_rendering(env = nil, &block)
  measure_and_log_event(env, "view rendering", &block)
end
measure_and_log_event(env, name) click to toggle source
# File lib/phusion_passenger/public_api.rb, line 69
def measure_and_log_event(env, name)
  transaction = lookup_union_station_web_transaction(env)
  if transaction
    transaction.measure(name) do
      yield
    end
  else
    yield
  end
end
on_event(name, &block) click to toggle source
# File lib/phusion_passenger/public_api.rb, line 35
def on_event(name, &block)
  callback_list_for_event(name) << block
end
originally_packaged?() click to toggle source

Returns whether this Phusion Passenger installation is in the 'originally packaged' configuration (as opposed to the 'custom packaged' configuration.

# File lib/phusion_passenger.rb, line 139
def self.originally_packaged?
  return !@custom_packaged
end
packaging_method() click to toggle source

If Phusion Passenger is custom packaged, returns which packaging method was used. Can be 'deb', 'rpm', 'homebrew', 'test' or 'unknown'.

# File lib/phusion_passenger.rb, line 150
def self.packaging_method
  return @packaging_method
end
packaging_method_description() click to toggle source
# File lib/phusion_passenger.rb, line 154
def self.packaging_method_description
  case packaging_method
  when "deb"
    "Debian packages"
  when "rpm"
    "RPM packages"
  when "homebrew"
    "Homebrew"
  else
    "gem or tarball"
  end
end
require_passenger_lib(name) click to toggle source

Instead of calling `require 'phusion_passenger/foo'`, you should call `PhusionPassenger.require_passenger_lib 'foo'`. This is because when Phusion Passenger is natively packaged, it may still be run with arbitrary Ruby interpreters. Adding ruby_libdir to $LOAD_PATH is then dangerous because ruby_libdir may be the distribution's Ruby's vendor_ruby directory, which may be incompatible with the active Ruby interpreter. This method looks up the exact filename directly.

Using this method also has two more advantages:

1. It is immune to Bundler's load path mangling code.
2. It is faster than plan require() because it doesn't need to
   scan the entire load path.
# File lib/phusion_passenger.rb, line 233
def self.require_passenger_lib(name)
  require("#{ruby_libdir}/phusion_passenger/#{name}")
end
union_station_key() click to toggle source
# File lib/phusion_passenger/public_api.rb, line 61
def union_station_key
  @@union_station_key
end
union_station_key=(value) click to toggle source
# File lib/phusion_passenger/public_api.rb, line 65
def union_station_key=(value)
  @@union_station_key = value
end
user_support_binaries_dir() click to toggle source
# File lib/phusion_passenger.rb, line 191
def self.user_support_binaries_dir
  return "#{home_dir}/#{USER_NAMESPACE_DIRNAME_}/support-binaries/#{VERSION_STRING}"
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.