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.
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 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-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-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-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 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-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-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-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 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.
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.
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.
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-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 © 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 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.
The name for the /etc/apache2/mods-available/*.{load,conf} file.
Directories ######
Other resource locations ######
The subset of the optional fields which are only available when originally packaged.
Names and version numbers ######
Directories in which to look for plugins.
Subdirectory under $HOME to use for storing stuff.
Run 'rake ext/common/Constants.h' after changing this number.
# File lib/phusion_passenger/public_api.rb, line 52 def advertised_concurrency_level @@advertised_concurrency_level end
# File lib/phusion_passenger/public_api.rb, line 56 def advertised_concurrency_level=(value) @@advertised_concurrency_level = value end
# File lib/phusion_passenger.rb, line 190 def self.apache2_doc_path return "#{doc_dir}/#{APACHE2_DOC_NAME}" end
# File lib/phusion_passenger/public_api.rb, line 60 def benchmark(env = nil, title = "Benchmarking") log = lookup_analytics_log(env) if log log.measure("BENCHMARK: #{title}") do yield end else yield end end
# File lib/phusion_passenger.rb, line 210 def self.binaries_sites return [ { :url => "https://oss-binaries.phusionpassenger.com/binaries/passenger/by_release", :cacert => "#{resources_dir}/oss-binaries.phusionpassenger.com.crt" }, { :url => "https://s3.amazonaws.com/phusion-passenger/binaries/passenger/by_release" } ] end
# File lib/phusion_passenger/public_api.rb, line 38 def call_event(name, *args) callback_list_for_event(name).each do |callback| callback.call(*args) end end
# File lib/phusion_passenger.rb, line 186 def self.index_doc_path return "#{doc_dir}/#{INDEX_DOC_NAME}" end
# File lib/phusion_passenger/public_api.rb, line 44 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
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 165 def self.installed_from_release_package? File.exist?("#{resources_dir}/release.txt") end
Follows the logic of ext/common/ResourceLocator.h, so don't forget to modify that too.
# File lib/phusion_passenger.rb, line 97 def self.locate_directories(source_root_or_location_configuration_file = nil) source_root_or_location_configuration_file ||= find_location_configuration_file root_or_file = @source_root = source_root_or_location_configuration_file if root_or_file && File.file?(root_or_file) filename = root_or_file options = parse_ini_file(filename) @natively_packaged = get_bool_option(filename, options, 'natively_packaged') REQUIRED_LOCATIONS_INI_FIELDS.each do |field| instance_variable_set("@#{field}", get_option(filename, options, field.to_s).freeze) end OPTIONAL_LOCATIONS_INI_FIELDS.each do |field| instance_variable_set("@#{field}", get_option(filename, options, field.to_s, false).freeze) end if natively_packaged? @native_packaging_method = get_option(filename, options, 'native_packaging_method') ORIGINALLY_PACKAGED_LOCATIONS_INI_FIELDS.each do |field| instance_variable_set("@#{field}", nil) end end else @source_root = File.dirname(File.dirname(FILE_LOCATION)) @natively_packaged = false @bin_dir = "#{@source_root}/bin".freeze @agents_dir = "#{@source_root}/buildout/agents".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 @buildout_dir = "#{@source_root}/buildout".freeze @apache2_module_source_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
# File lib/phusion_passenger/public_api.rb, line 71 def log_cache_hit(env, name) log = lookup_analytics_log(env) if log log.message("Cache hit: #{name}") return true else return false end end
# File lib/phusion_passenger/public_api.rb, line 81 def log_cache_miss(env, name, generation_time = nil) log = lookup_analytics_log(env) if log if generation_time log.message("Cache miss (#{generation_time.to_i}): #{name}") else log.message("Cache miss: #{name}") end return true else return false end end
If Phusion Passenger is natively packaged, returns which packaging method was used. Can be 'deb', 'rpm' or 'homebrew'.
# File lib/phusion_passenger.rb, line 157 def self.native_packaging_method return @native_packaging_method end
# File lib/phusion_passenger.rb, line 151 def self.natively_packaged? return @natively_packaged end
# File lib/phusion_passenger.rb, line 194 def self.nginx_doc_path return "#{doc_dir}/#{NGINX_DOC_NAME}" end
# File lib/phusion_passenger/public_api.rb, line 34 def on_event(name, &block) callback_list_for_event(name) << block end
Returns whether this Phusion Passenger installation is in the 'originally packaged' configuration (as opposed to the 'natively packaged' configuration.
# File lib/phusion_passenger.rb, line 147 def self.originally_packaged? return !@natively_packaged end
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 231 def self.require_passenger_lib(name) require("#{ruby_libdir}/phusion_passenger/#{name}") end
When originally packaged, returns the source root. When natively packaged, returns the location of the location configuration file.
# File lib/phusion_passenger.rb, line 171 def self.source_root return @source_root end
# File lib/phusion_passenger.rb, line 198 def self.standalone_doc_path return "#{doc_dir}/#{STANDALONE_DOC_NAME}" end
# File lib/phusion_passenger/public_api.rb, line 96 def callback_list_for_event(name) return case name when :starting_worker_process @@event_starting_worker_process when :stopping_worker_process @@event_stopping_worker_process when :starting_request_handler_thread @@event_starting_request_handler_thread when :credentials @@event_credentials when :after_installing_signal_handlers @@event_after_installing_signal_handlers when :oob_work @@event_oob_work else raise ArgumentError, "Unknown event name '#{name}'" end end
# File lib/phusion_passenger.rb, line 237 def self.find_location_configuration_file filename = ENV['PASSENGER_LOCATION_CONFIGURATION_FILE'] return filename if filename && !filename.empty? filename = File.dirname(FILE_LOCATION) + "/phusion_passenger/locations.ini" return filename if filename && File.exist?(filename) require 'etc' if !defined?(Etc) begin home_dir = Etc.getpwuid(Process.uid).dir rescue ArgumentError # Unknown user. home_dir = ENV['HOME'] end if home_dir && !home_dir.empty? filename = "#{home_dir}/#{USER_NAMESPACE_DIRNAME}/locations.ini" return filename if File.exist?(filename) end filename = "/etc/#{GLOBAL_NAMESPACE_DIRNAME}/locations.ini" return filename if File.exist?(filename) return nil end
# File lib/phusion_passenger.rb, line 292 def self.get_bool_option(filename, options, key) value = get_option(filename, options, key) return value == 'yes' || value == 'true' || value == 'on' || value == '1' end
# File lib/phusion_passenger.rb, line 281 def self.get_option(filename, options, key, required = true) value = options[key] if value return value elsif required raise "Option '#{key}' missing in file '#{filename}'" else return nil end end
# File lib/phusion_passenger/public_api.rb, line 115 def lookup_analytics_log(env) if env return env[PASSENGER_ANALYTICS_WEB_LOG] else return Thread.current[PASSENGER_ANALYTICS_WEB_LOG] end end
# File lib/phusion_passenger.rb, line 262 def self.parse_ini_file(filename) options = {} in_locations_section = false File.open(filename, 'r') do |f| while !f.eof? line = f.readline line.strip! next if line.empty? if line =~ /\A\[(.+)\]\Z/ in_locations_section = $1 == 'locations' elsif in_locations_section && line =~ /=/ key, value = line.split(/ *= */, 2) options[key.freeze] = value.freeze end end end return options end