passenger 6.1.7 → 6.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +29 -2
  3. data/CONTRIBUTING.md +3 -3
  4. data/README.md +1 -1
  5. data/build/cxx_tests.rb +3 -0
  6. data/build/support/cxx_dependency_map.rb +1486 -665
  7. data/build/support/vendor/cxx_hinted_parser/lib/cxx_hinted_parser/parser.rb +2 -0
  8. data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder/builder.rb +2 -0
  9. data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder/initializer_builder.rb +2 -0
  10. data/dev/index_cxx_dependencies.rb +1 -1
  11. data/dev/runner +2 -0
  12. data/doc/DeveloperQuickstart.md +1 -1
  13. data/src/README.md +1 -1
  14. data/src/agent/Core/Config.h +1 -1
  15. data/src/agent/Core/Controller/Config.h +1 -1
  16. data/src/agent/Shared/ApiServerUtils.h +14 -9
  17. data/src/agent/Watchdog/{AgentWatcher.cpp → AgentWatcher.h} +28 -1
  18. data/src/agent/Watchdog/ApiServer.h +28 -5
  19. data/src/agent/Watchdog/Config.h +1 -1
  20. data/src/agent/Watchdog/{CoreWatcher.cpp → CoreWatcher.h} +18 -1
  21. data/src/agent/Watchdog/{InstanceDirToucher.cpp → InstanceDirToucher.h} +20 -1
  22. data/src/agent/Watchdog/WatchdogMain.cpp +11 -77
  23. data/src/agent/Watchdog/WorkingObjects.h +108 -0
  24. data/src/cxx_supportlib/Constants.h +1 -1
  25. data/src/cxx_supportlib/IOTools/IOUtils.cpp +2 -17
  26. data/src/cxx_supportlib/ServerKit/AcceptLoadBalancer.h +3 -0
  27. data/src/cxx_supportlib/ServerKit/Server.h +4 -21
  28. data/src/cxx_supportlib/Utils/Socket.cpp +67 -0
  29. data/src/cxx_supportlib/Utils/Socket.h +35 -0
  30. data/src/helper-scripts/meteor-loader.rb +3 -0
  31. data/src/helper-scripts/rack-loader.rb +3 -0
  32. data/src/helper-scripts/rack-preloader.rb +3 -0
  33. data/src/nginx_module/ContentHandler.c +13 -1
  34. data/src/ruby_supportlib/phusion_passenger/admin_tools/instance.rb +2 -0
  35. data/src/ruby_supportlib/phusion_passenger/admin_tools/instance_registry.rb +2 -0
  36. data/src/ruby_supportlib/phusion_passenger/admin_tools/memory_stats.rb +2 -0
  37. data/src/ruby_supportlib/phusion_passenger/admin_tools.rb +2 -0
  38. data/src/ruby_supportlib/phusion_passenger/apache2/config_utils.rb +6 -0
  39. data/src/ruby_supportlib/phusion_passenger/common_library.rb +3 -0
  40. data/src/ruby_supportlib/phusion_passenger/config/about_command.rb +2 -0
  41. data/src/ruby_supportlib/phusion_passenger/config/agent_compiler.rb +2 -0
  42. data/src/ruby_supportlib/phusion_passenger/config/api_call_command.rb +2 -0
  43. data/src/ruby_supportlib/phusion_passenger/config/build_native_support_command.rb +2 -0
  44. data/src/ruby_supportlib/phusion_passenger/config/command.rb +2 -0
  45. data/src/ruby_supportlib/phusion_passenger/config/compile_agent_command.rb +2 -0
  46. data/src/ruby_supportlib/phusion_passenger/config/compile_nginx_engine_command.rb +2 -0
  47. data/src/ruby_supportlib/phusion_passenger/config/detach_process_command.rb +2 -0
  48. data/src/ruby_supportlib/phusion_passenger/config/download_agent_command.rb +2 -0
  49. data/src/ruby_supportlib/phusion_passenger/config/download_nginx_engine_command.rb +2 -0
  50. data/src/ruby_supportlib/phusion_passenger/config/install_agent_command.rb +2 -0
  51. data/src/ruby_supportlib/phusion_passenger/config/install_standalone_runtime_command.rb +2 -0
  52. data/src/ruby_supportlib/phusion_passenger/config/installation_utils.rb +4 -0
  53. data/src/ruby_supportlib/phusion_passenger/config/list_instances_command.rb +2 -0
  54. data/src/ruby_supportlib/phusion_passenger/config/main.rb +2 -0
  55. data/src/ruby_supportlib/phusion_passenger/config/nginx_engine_compiler.rb +2 -0
  56. data/src/ruby_supportlib/phusion_passenger/config/reopen_logs_command.rb +2 -0
  57. data/src/ruby_supportlib/phusion_passenger/config/restart_app_command.rb +2 -0
  58. data/src/ruby_supportlib/phusion_passenger/config/system_metrics_command.rb +2 -0
  59. data/src/ruby_supportlib/phusion_passenger/config/system_properties_command.rb +2 -0
  60. data/src/ruby_supportlib/phusion_passenger/config/utils.rb +4 -0
  61. data/src/ruby_supportlib/phusion_passenger/config/validate_install_command.rb +2 -0
  62. data/src/ruby_supportlib/phusion_passenger/constants.rb +4 -0
  63. data/src/ruby_supportlib/phusion_passenger/debug_logging.rb +2 -0
  64. data/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb +2 -0
  65. data/src/ruby_supportlib/phusion_passenger/packaging.rb +3 -0
  66. data/src/ruby_supportlib/phusion_passenger/platform_info/apache.rb +2 -0
  67. data/src/ruby_supportlib/phusion_passenger/platform_info/apache_detector.rb +2 -0
  68. data/src/ruby_supportlib/phusion_passenger/platform_info/binary_compatibility.rb +2 -0
  69. data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +2 -0
  70. data/src/ruby_supportlib/phusion_passenger/platform_info/crypto.rb +1 -0
  71. data/src/ruby_supportlib/phusion_passenger/platform_info/curl.rb +2 -0
  72. data/src/ruby_supportlib/phusion_passenger/platform_info/cxx_portability.rb +2 -0
  73. data/src/ruby_supportlib/phusion_passenger/platform_info/depcheck.rb +4 -0
  74. data/src/ruby_supportlib/phusion_passenger/platform_info/linux.rb +2 -0
  75. data/src/ruby_supportlib/phusion_passenger/platform_info/networking.rb +2 -0
  76. data/src/ruby_supportlib/phusion_passenger/platform_info/openssl.rb +2 -0
  77. data/src/ruby_supportlib/phusion_passenger/platform_info/operating_system.rb +2 -0
  78. data/src/ruby_supportlib/phusion_passenger/platform_info/pcre.rb +2 -0
  79. data/src/ruby_supportlib/phusion_passenger/platform_info/ruby.rb +2 -0
  80. data/src/ruby_supportlib/phusion_passenger/platform_info/zlib.rb +2 -0
  81. data/src/ruby_supportlib/phusion_passenger/platform_info.rb +2 -0
  82. data/src/ruby_supportlib/phusion_passenger/preloader_shared_helpers.rb +1 -0
  83. data/src/ruby_supportlib/phusion_passenger/public_api.rb +2 -0
  84. data/src/ruby_supportlib/phusion_passenger/rack/handler.rb +6 -0
  85. data/src/ruby_supportlib/phusion_passenger/rack/out_of_band_gc.rb +2 -0
  86. data/src/ruby_supportlib/phusion_passenger/rack/thread_handler_extension.rb +6 -0
  87. data/src/ruby_supportlib/phusion_passenger/rack_handler.rb +12 -0
  88. data/src/ruby_supportlib/phusion_passenger/request_handler/thread_handler.rb +2 -0
  89. data/src/ruby_supportlib/phusion_passenger/ruby_core_enhancements.rb +4 -0
  90. data/src/ruby_supportlib/phusion_passenger/standalone/app_finder.rb +2 -0
  91. data/src/ruby_supportlib/phusion_passenger/standalone/command.rb +2 -0
  92. data/src/ruby_supportlib/phusion_passenger/standalone/config_options_list.rb +4 -0
  93. data/src/ruby_supportlib/phusion_passenger/standalone/config_utils.rb +4 -0
  94. data/src/ruby_supportlib/phusion_passenger/standalone/control_utils.rb +4 -0
  95. data/src/ruby_supportlib/phusion_passenger/standalone/main.rb +2 -0
  96. data/src/ruby_supportlib/phusion_passenger/standalone/start_command/builtin_engine.rb +6 -0
  97. data/src/ruby_supportlib/phusion_passenger/standalone/start_command/nginx_engine.rb +6 -0
  98. data/src/ruby_supportlib/phusion_passenger/standalone/start_command.rb +2 -0
  99. data/src/ruby_supportlib/phusion_passenger/standalone/status_command.rb +2 -0
  100. data/src/ruby_supportlib/phusion_passenger/standalone/stop_command.rb +2 -0
  101. data/src/ruby_supportlib/phusion_passenger/standalone/version_command.rb +2 -0
  102. data/src/ruby_supportlib/phusion_passenger/utils/ansi_colors.rb +4 -0
  103. data/src/ruby_supportlib/phusion_passenger/utils/download.rb +4 -0
  104. data/src/ruby_supportlib/phusion_passenger/utils/file_system_watcher.rb +2 -0
  105. data/src/ruby_supportlib/phusion_passenger/utils/hosts_file_parser.rb +2 -0
  106. data/src/ruby_supportlib/phusion_passenger/utils/json.rb +4 -0
  107. data/src/ruby_supportlib/phusion_passenger/utils/lock.rb +2 -0
  108. data/src/ruby_supportlib/phusion_passenger/utils/native_support_utils.rb +4 -0
  109. data/src/ruby_supportlib/phusion_passenger/utils/strscan.rb +2 -0
  110. data/src/ruby_supportlib/phusion_passenger/utils/tee_input.rb +2 -0
  111. data/src/ruby_supportlib/phusion_passenger/utils/terminal_choice_menu.rb +2 -0
  112. data/src/ruby_supportlib/phusion_passenger/utils/tmpio.rb +2 -0
  113. data/src/ruby_supportlib/phusion_passenger/utils/unseekable_socket.rb +2 -0
  114. data/src/ruby_supportlib/phusion_passenger/utils.rb +2 -0
  115. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/app.rb +2 -0
  116. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/base.rb +2 -0
  117. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/gdb_controller.rb +2 -0
  118. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/lldb_controller.rb +2 -0
  119. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/utils.rb +4 -0
  120. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/version.rb +2 -0
  121. data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller/lock_file.rb +2 -0
  122. data/src/ruby_supportlib/phusion_passenger/vendor/daemon_controller/version.rb +2 -0
  123. data/src/ruby_supportlib/phusion_passenger.rb +7 -5
  124. metadata +9 -6
@@ -29,6 +29,7 @@ PhusionPassenger.require_passenger_lib 'constants'
29
29
  PhusionPassenger.require_passenger_lib 'config/command'
30
30
 
31
31
  module PhusionPassenger
32
+
32
33
  module Config
33
34
 
34
35
  class ValidateInstallCommand < Command
@@ -751,4 +752,5 @@ module PhusionPassenger
751
752
  end
752
753
 
753
754
  end # module Config
755
+
754
756
  end # module PhusionPassenger
@@ -23,6 +23,7 @@
23
23
  # THE SOFTWARE.
24
24
 
25
25
  module PhusionPassenger
26
+
26
27
  PASSENGER_TXN_ID = "PASSENGER_TXN_ID".freeze
27
28
  PASSENGER_APP_GROUP_NAME = "PASSENGER_APP_GROUP_NAME".freeze
28
29
  PASSENGER_DELTA_MONOTONIC = "PASSENGER_DELTA_MONOTONIC".freeze
@@ -41,6 +42,7 @@ module PhusionPassenger
41
42
  # is automatically generated by the build system from the following
42
43
  # definitions.
43
44
  module SharedConstants
45
+
44
46
  # Default config values
45
47
  DEFAULT_LOG_LEVEL = 3
46
48
  DEFAULT_LOG_LEVEL_NAME = "notice"
@@ -131,9 +133,11 @@ module PhusionPassenger
131
133
  RPM_DEV_PACKAGE = "passenger-devel"
132
134
  RPM_APACHE_MODULE_PACKAGE = "mod_passenger"
133
135
  RPM_NGINX_PACKAGE = "nginx"
136
+
134
137
  end
135
138
 
136
139
  SharedConstants.constants.each do |name|
137
140
  const_set(name, SharedConstants.const_get(name)) unless const_defined? name
138
141
  end
142
+
139
143
  end
@@ -27,6 +27,7 @@ PhusionPassenger.require_passenger_lib 'constants'
27
27
  module PhusionPassenger
28
28
 
29
29
  module DebugLogging
30
+
30
31
  # We don't refer to STDERR directly because STDERR's reference might
31
32
  # change during runtime.
32
33
  @@log_level = DEFAULT_LOG_LEVEL
@@ -131,6 +132,7 @@ module PhusionPassenger
131
132
  end
132
133
  end
133
134
  module_function :_output
135
+
134
136
  end
135
137
 
136
138
  end
@@ -28,6 +28,7 @@ module PhusionPassenger
28
28
 
29
29
  # Provides shared functions for loader and preloader apps.
30
30
  module LoaderSharedHelpers
31
+
31
32
  extend self
32
33
 
33
34
  # To be called by the (pre)loader as soon as possible.
@@ -991,6 +992,7 @@ module PhusionPassenger
991
992
  def home_dir
992
993
  PhusionPassenger.home_dir
993
994
  end
995
+
994
996
  end
995
997
 
996
998
  end # module PhusionPassenger
@@ -25,6 +25,7 @@
25
25
  module PhusionPassenger
26
26
 
27
27
  module Packaging
28
+
28
29
  # Files that must be generated before packaging.
29
30
  PREGENERATED_FILES = [
30
31
  'src/cxx_supportlib/Constants.h',
@@ -94,6 +95,7 @@ module PhusionPassenger
94
95
  '.settings/**/*',
95
96
  '.vscode/**/*',
96
97
  '.cproject',
98
+ '.rubocop.yml',
97
99
  'compile_commands.json',
98
100
  '.gitattributes',
99
101
  '.gitignore',
@@ -122,6 +124,7 @@ module PhusionPassenger
122
124
  result.reject! { |path| path =~ %r{/\.\.?$} }
123
125
  result
124
126
  end
127
+
125
128
  end
126
129
 
127
130
  end # module PhusionPassenger
@@ -44,6 +44,7 @@ module PhusionPassenger
44
44
  # Apache.
45
45
 
46
46
  module PlatformInfo
47
+
47
48
  ################ Programs ################
48
49
 
49
50
  # The absolute path to the 'apxs' or 'apxs2' executable, or nil if not found.
@@ -1032,6 +1033,7 @@ module PhusionPassenger
1032
1033
  res
1033
1034
  end
1034
1035
  private_class_method :unescape_c_string
1036
+
1035
1037
  end
1036
1038
 
1037
1039
  end
@@ -30,6 +30,7 @@ PhusionPassenger.require_passenger_lib 'utils/ansi_colors'
30
30
  require 'pathname'
31
31
 
32
32
  module PhusionPassenger
33
+
33
34
  module PlatformInfo
34
35
 
35
36
  # Detects all possible Apache installations on the system, and presents the
@@ -310,4 +311,5 @@ module PhusionPassenger
310
311
  end
311
312
 
312
313
  end
314
+
313
315
  end # module Phusion Passenger
@@ -30,6 +30,7 @@ PhusionPassenger.require_passenger_lib 'platform_info/operating_system'
30
30
  module PhusionPassenger
31
31
 
32
32
  module PlatformInfo
33
+
33
34
  # Returns a string that describes the current Ruby
34
35
  # interpreter's extension binary compatibility. A Ruby extension
35
36
  # compiled for a certain Ruby interpreter can also be loaded on
@@ -139,6 +140,7 @@ module PhusionPassenger
139
140
  [ os_arch, os_name_simple, os_runtime ].compact.join("-")
140
141
  end
141
142
  memoize :cxx_binary_compatibility_id
143
+
142
144
  end
143
145
 
144
146
  end # module PhusionPassenger
@@ -28,6 +28,7 @@ PhusionPassenger.require_passenger_lib 'platform_info/operating_system'
28
28
  module PhusionPassenger
29
29
 
30
30
  module PlatformInfo
31
+
31
32
  private
32
33
  def self.detect_language_extension(language)
33
34
  case language
@@ -657,6 +658,7 @@ module PhusionPassenger
657
658
  nil
658
659
  end
659
660
  end
661
+
660
662
  end
661
663
 
662
664
  end # module PhusionPassenger
@@ -29,6 +29,7 @@ PhusionPassenger.require_passenger_lib 'platform_info/openssl'
29
29
  module PhusionPassenger
30
30
 
31
31
  module PlatformInfo
32
+
32
33
  def self.crypto_libs
33
34
  prefix = ' -framework CoreFoundation -framework Security'
34
35
  suffix = ' -lcrypto'
@@ -27,6 +27,7 @@ PhusionPassenger.require_passenger_lib 'platform_info'
27
27
  module PhusionPassenger
28
28
 
29
29
  module PlatformInfo
30
+
30
31
  def self.curl_flags
31
32
  result = `(curl-config --cflags) 2>/dev/null`.strip
32
33
  if result.empty?
@@ -60,6 +61,7 @@ module PhusionPassenger
60
61
  features =~ /SSL/
61
62
  end
62
63
  memoize :curl_supports_ssl?
64
+
63
65
  end
64
66
 
65
67
  end # module PhusionPassenger
@@ -29,6 +29,7 @@ PhusionPassenger.require_passenger_lib 'platform_info/operating_system'
29
29
  module PhusionPassenger
30
30
 
31
31
  module PlatformInfo
32
+
32
33
  # Extra flags that should always be passed to the C compiler
33
34
  # when linking, to be included last in the command string.
34
35
  def self.portability_c_ldflags
@@ -204,6 +205,7 @@ module PhusionPassenger
204
205
  result.join(' ')
205
206
  end
206
207
  private_class_method :portability_c_or_cxx_ldflags
208
+
207
209
  end
208
210
 
209
211
  end # module PhusionPassenger
@@ -9,6 +9,7 @@ PhusionPassenger.require_passenger_lib 'platform_info/operating_system'
9
9
  PhusionPassenger.require_passenger_lib 'utils/ansi_colors'
10
10
 
11
11
  module PhusionPassenger
12
+
12
13
  module PlatformInfo
13
14
 
14
15
  # Almost all software require other software in order to run. We call those
@@ -38,6 +39,7 @@ module PhusionPassenger
38
39
  # should print as many details about the dependency as possible (location, version,
39
40
  # etc) so that the user can override any decisions if necessary.
40
41
  module Depcheck
42
+
41
43
  THIS_DIR = File.expand_path(File.dirname(__FILE__))
42
44
  @@loaded = {}
43
45
  @@database = {}
@@ -391,7 +393,9 @@ module PhusionPassenger
391
393
  puts " #{text}"
392
394
  end
393
395
  end # class ConsoleRunner
396
+
394
397
  end # module Depcheck
395
398
 
396
399
  end # module PlatformInfo
400
+
397
401
  end # module PhusionPassenger
@@ -30,6 +30,7 @@ PhusionPassenger.require_passenger_lib 'platform_info/operating_system'
30
30
  module PhusionPassenger
31
31
 
32
32
  module PlatformInfo
33
+
33
34
  # An identifier for the current Linux distribution. nil if the operating system is not Linux.
34
35
  def self.linux_distro
35
36
  tags = linux_distro_tags
@@ -84,6 +85,7 @@ module PhusionPassenger
84
85
  # TODO: Slackware
85
86
  end
86
87
  memoize :linux_distro_tags
88
+
87
89
  end
88
90
 
89
91
  end # PhusionPassenger
@@ -31,6 +31,7 @@ PhusionPassenger.require_passenger_lib 'utils/shellwords'
31
31
  module PhusionPassenger
32
32
 
33
33
  module PlatformInfo
34
+
34
35
  # Returns a list of network interfaces active on the current system, or
35
36
  # nil if unable to autodetect.
36
37
  #
@@ -289,6 +290,7 @@ module PhusionPassenger
289
290
  []
290
291
  end
291
292
  end
293
+
292
294
  end
293
295
 
294
296
  end # module PhusionPassenger
@@ -28,6 +28,7 @@ PhusionPassenger.require_passenger_lib 'platform_info/operating_system'
28
28
  module PhusionPassenger
29
29
 
30
30
  module PlatformInfo
31
+
31
32
  def self.openssl_extra_cflags
32
33
  if PlatformInfo.os_name_simple == "macosx"
33
34
  if File.exist?("/usr/include/openssl")
@@ -66,6 +67,7 @@ module PhusionPassenger
66
67
  end
67
68
  end
68
69
  memoize :openssl_extra_ldflags
70
+
69
71
  end
70
72
 
71
73
  end # module PhusionPassenger
@@ -29,6 +29,7 @@ PhusionPassenger.require_passenger_lib 'platform_info'
29
29
  module PhusionPassenger
30
30
 
31
31
  module PlatformInfo
32
+
32
33
  class VersionComparer < String
33
34
  def <=>(other)
34
35
  Gem::Version.new(self) <=> Gem::Version.new(other.to_s)
@@ -228,6 +229,7 @@ module PhusionPassenger
228
229
  `#{uname} -r`.include?("Microsoft")
229
230
  end
230
231
  memoize :windows_subsystem?, true
232
+
231
233
  end
232
234
 
233
235
  end # module PhusionPassenger
@@ -28,6 +28,7 @@ PhusionPassenger.require_passenger_lib 'platform_info/operating_system'
28
28
  module PhusionPassenger
29
29
 
30
30
  module PlatformInfo
31
+
31
32
  def self.pcre_extra_cflags
32
33
  cflags = ""
33
34
  if PlatformInfo.os_name_simple == "macosx"
@@ -59,6 +60,7 @@ module PhusionPassenger
59
60
  end
60
61
  end
61
62
  memoize :pcre_extra_ldflags
63
+
62
64
  end
63
65
 
64
66
  end # module PhusionPassenger
@@ -32,6 +32,7 @@ PhusionPassenger.require_passenger_lib 'platform_info/operating_system'
32
32
  module PhusionPassenger
33
33
 
34
34
  module PlatformInfo
35
+
35
36
  # Store original $GEM_HOME value so that even if the app customizes
36
37
  # $GEM_HOME we can still work with the original value.
37
38
  gem_home = ENV['GEM_HOME']
@@ -515,6 +516,7 @@ module PhusionPassenger
515
516
  end
516
517
  end
517
518
  private_class_method :transform_according_to_ruby_exec_format
519
+
518
520
  end
519
521
 
520
522
  end # module PhusionPassenger
@@ -27,6 +27,7 @@ PhusionPassenger.require_passenger_lib 'platform_info'
27
27
  module PhusionPassenger
28
28
 
29
29
  module PlatformInfo
30
+
30
31
  def self.zlib_flags
31
32
  nil
32
33
  end
@@ -34,6 +35,7 @@ module PhusionPassenger
34
35
  def self.zlib_libs
35
36
  '-lz'
36
37
  end
38
+
37
39
  end
38
40
 
39
41
  end # module PhusionPassenger
@@ -31,6 +31,7 @@ module PhusionPassenger
31
31
  # This module autodetects various platform-specific information, and
32
32
  # provides that information through constants.
33
33
  module PlatformInfo
34
+
34
35
  private
35
36
  @@cache_dir = nil
36
37
  @@verbose = [ '1', 'true', 'on', 'yes' ].include?(ENV['VERBOSE'])
@@ -426,6 +427,7 @@ module PhusionPassenger
426
427
  end
427
428
  result
428
429
  end
430
+
429
431
  end
430
432
 
431
433
  end # module PhusionPassenger
@@ -33,6 +33,7 @@ module PhusionPassenger
33
33
 
34
34
  # Provides shared functions for preloader apps.
35
35
  module PreloaderSharedHelpers
36
+
36
37
  extend self
37
38
 
38
39
  def init(main_app)
@@ -23,6 +23,7 @@
23
23
  # THE SOFTWARE.
24
24
 
25
25
  module PhusionPassenger
26
+
26
27
  class << self
27
28
  @@event_starting_worker_process = []
28
29
  @@event_stopping_worker_process = []
@@ -77,4 +78,5 @@ module PhusionPassenger
77
78
  end
78
79
  end
79
80
  end
81
+
80
82
  end # module PhusionPassenger
@@ -25,8 +25,11 @@
25
25
  # THE SOFTWARE.
26
26
 
27
27
  module PhusionPassenger
28
+
28
29
  module Rack
30
+
29
31
  module Handler
32
+
30
33
  def run(app, options = {})
31
34
  result = system(ruby_executable, '-S', find_passenger_standalone,
32
35
  'start', *build_args(options))
@@ -68,6 +71,9 @@ module PhusionPassenger
68
71
  def find_passenger_standalone
69
72
  ::File.join(::PhusionPassenger.bin_dir, 'passenger')
70
73
  end
74
+
71
75
  end
76
+
72
77
  end
78
+
73
79
  end
@@ -27,6 +27,7 @@
27
27
  require 'thread'
28
28
 
29
29
  module PhusionPassenger
30
+
30
31
  module Rack
31
32
 
32
33
  class OutOfBandGc
@@ -131,4 +132,5 @@ module PhusionPassenger
131
132
  end
132
133
 
133
134
  end # module Rack
135
+
134
136
  end # module PhusionPassenger
@@ -28,18 +28,22 @@ PhusionPassenger.require_passenger_lib 'utils/tee_input'
28
28
 
29
29
  if defined?(::Rack::BodyProxy) && !::Rack::BodyProxy.new("").respond_to?(:each)
30
30
  module ::Rack
31
+
31
32
  class BodyProxy
32
33
  def each
33
34
  @body.each { |body| yield body }
34
35
  end
35
36
  end
37
+
36
38
  end
37
39
  end
38
40
 
39
41
  module PhusionPassenger
42
+
40
43
  module Rack
41
44
 
42
45
  module ThreadHandlerExtension
46
+
43
47
  # Constants which exist to relieve Ruby's garbage collector.
44
48
  RACK_VERSION = "rack.version" # :nodoc:
45
49
  RACK_VERSION_VALUE = [ 1, 3 ] # :nodoc:
@@ -402,7 +406,9 @@ module PhusionPassenger
402
406
  str.size
403
407
  end
404
408
  end
409
+
405
410
  end
406
411
 
407
412
  end # module Rack
413
+
408
414
  end # module PhusionPassenger
@@ -43,11 +43,15 @@ require 'rackup' if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.4.0')
43
43
  # Rackup was removed in Rack 3, it is now a separate gem
44
44
  if Object.const_defined?(:Rackup) && ::Rackup.const_defined?(:Handler)
45
45
  module Rackup
46
+
46
47
  module Handler
48
+
47
49
  module PhusionPassenger
50
+
48
51
  class << self
49
52
  include ::PhusionPassenger::Rack::Handler
50
53
  end
54
+
51
55
  end
52
56
 
53
57
  def self.default(options = {})
@@ -55,20 +59,28 @@ if Object.const_defined?(:Rackup) && ::Rackup.const_defined?(:Handler)
55
59
  end
56
60
 
57
61
  register :passenger, PhusionPassenger
62
+
58
63
  end
64
+
59
65
  end
60
66
  elsif Object.const_defined?(:Rack) && ::Rack.release < '3'
61
67
  module Rack
68
+
62
69
  module Handler
70
+
63
71
  module PhusionPassenger
72
+
64
73
  class << self
65
74
  include ::PhusionPassenger::Rack::Handler
66
75
  end
76
+
67
77
  end
68
78
  def self.default(options = {})
69
79
  ::Rack::Handler::PhusionPassenger
70
80
  end
81
+
71
82
  end
83
+
72
84
  end
73
85
  ::Rack::Handler.register(:passenger, ::Rack::Handler::PhusionPassenger)
74
86
  else
@@ -30,6 +30,7 @@ PhusionPassenger.require_passenger_lib 'utils/native_support_utils'
30
30
  PhusionPassenger.require_passenger_lib 'utils/unseekable_socket'
31
31
 
32
32
  module PhusionPassenger
33
+
33
34
  class RequestHandler
34
35
  # This class encapsulates the logic of a single RequestHandler thread.
35
36
  class ThreadHandler
@@ -349,4 +350,5 @@ module PhusionPassenger
349
350
  end
350
351
  end
351
352
  end # class RequestHandler
353
+
352
354
  end # module PhusionPassenger
@@ -119,6 +119,7 @@ class File
119
119
  end
120
120
 
121
121
  module Signal
122
+
122
123
  # Like Signal.list, but only returns signals that we can actually trap.
123
124
  def self.list_trappable
124
125
  ruby_engine = defined?(RUBY_ENGINE) ? RUBY_ENGINE : "ruby"
@@ -155,9 +156,11 @@ module Signal
155
156
 
156
157
  result
157
158
  end
159
+
158
160
  end
159
161
 
160
162
  module GC
163
+
161
164
  if !respond_to?(:copy_on_write_friendly?)
162
165
  # Checks whether the current Ruby interpreter's garbage
163
166
  # collector is copy-on-write friendly.
@@ -165,4 +168,5 @@ module GC
165
168
  false
166
169
  end
167
170
  end
171
+
168
172
  end
@@ -27,6 +27,7 @@ PhusionPassenger.require_passenger_lib 'standalone/config_utils'
27
27
  PhusionPassenger.require_passenger_lib 'utils/file_system_watcher'
28
28
 
29
29
  module PhusionPassenger
30
+
30
31
  module Standalone
31
32
 
32
33
  class AppFinder
@@ -187,4 +188,5 @@ module PhusionPassenger
187
188
  end
188
189
 
189
190
  end # module Standalone
191
+
190
192
  end # module PhusionPassenger
@@ -23,6 +23,7 @@
23
23
  # THE SOFTWARE.
24
24
 
25
25
  module PhusionPassenger
26
+
26
27
  module Standalone
27
28
 
28
29
  class Command
@@ -71,4 +72,5 @@ module PhusionPassenger
71
72
  end
72
73
 
73
74
  end # module Standalone
75
+
74
76
  end # module PhusionPassenger
@@ -81,7 +81,9 @@ PhusionPassenger.require_passenger_lib 'platform_info/ruby'
81
81
  # passed argument is acceptable.
82
82
 
83
83
  module PhusionPassenger
84
+
84
85
  module Standalone
86
+
85
87
  # Server configuration options
86
88
  SERVER_CONFIG_SPEC = [
87
89
  {
@@ -723,5 +725,7 @@ module PhusionPassenger
723
725
  end
724
726
  end
725
727
  end
728
+
726
729
  end
730
+
727
731
  end
@@ -26,9 +26,11 @@ PhusionPassenger.require_passenger_lib 'ruby_core_enhancements'
26
26
  PhusionPassenger.require_passenger_lib 'standalone/config_options_list'
27
27
 
28
28
  module PhusionPassenger
29
+
29
30
  module Standalone
30
31
 
31
32
  module ConfigUtils
33
+
32
34
  extend self # Make methods available as class methods.
33
35
 
34
36
  def self.included(klass)
@@ -354,7 +356,9 @@ module PhusionPassenger
354
356
  Socket.getaddrinfo(hostname, nil).first[3]
355
357
  end
356
358
  end
359
+
357
360
  end
358
361
 
359
362
  end # module Standalone
363
+
360
364
  end # module PhusionPassenger
@@ -23,9 +23,11 @@
23
23
  # THE SOFTWARE.
24
24
 
25
25
  module PhusionPassenger
26
+
26
27
  module Standalone
27
28
 
28
29
  module ControlUtils
30
+
29
31
  extend self # Make methods available as class methods.
30
32
 
31
33
  def self.included(klass)
@@ -62,7 +64,9 @@ module PhusionPassenger
62
64
  STDERR.puts " * The instance that you want to stop has stored its PID file in a non-standard"
63
65
  STDERR.puts " location. In this case please specify the right PID file with --pid-file."
64
66
  end
67
+
65
68
  end
66
69
 
67
70
  end
71
+
68
72
  end
@@ -28,6 +28,7 @@ module PhusionPassenger
28
28
 
29
29
  # Core of the `passenger` command (Passenger Standalone). Dispatches a subcommand to a specific class.
30
30
  module Standalone
31
+
31
32
  KNOWN_COMMANDS = [
32
33
  [ "start", "StartCommand" ],
33
34
  [ "stop", "StopCommand" ],
@@ -109,6 +110,7 @@ module PhusionPassenger
109
110
  PhusionPassenger.require_passenger_lib("standalone/#{base_name}")
110
111
  PhusionPassenger::Standalone.const_get(class_name)
111
112
  end
113
+
112
114
  end
113
115
 
114
116
  end # module PhusionPassenger
@@ -33,9 +33,12 @@ PhusionPassenger.require_passenger_lib 'utils/shellwords'
33
33
  PhusionPassenger.require_passenger_lib 'utils/json'
34
34
 
35
35
  module PhusionPassenger
36
+
36
37
  module Standalone
38
+
37
39
  class StartCommand
38
40
  module BuiltinEngine
41
+
39
42
  private
40
43
  def start_engine_real
41
44
  Standalone::ControlUtils.require_daemon_controller
@@ -273,7 +276,10 @@ module PhusionPassenger
273
276
  end
274
277
 
275
278
  #####################
279
+
276
280
  end # module BuiltinEngine
277
281
  end # module StartCommand
282
+
278
283
  end # module Standalone
284
+
279
285
  end # module PhusionPassenger