passenger 2.1.3 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of passenger might be problematic. Click here for more details.

Files changed (398) hide show
  1. data/DEVELOPERS.TXT +2 -0
  2. data/INSTALL +3 -1
  3. data/LICENSE +19 -355
  4. data/NEWS +3 -0
  5. data/README +11 -4
  6. data/Rakefile +435 -236
  7. data/bin/passenger-config +20 -14
  8. data/bin/passenger-install-apache2-module +67 -201
  9. data/bin/passenger-install-nginx-module +477 -0
  10. data/bin/passenger-make-enterprisey +17 -12
  11. data/bin/passenger-memory-stats +33 -23
  12. data/bin/passenger-spawn-server +17 -12
  13. data/bin/passenger-status +18 -13
  14. data/bin/passenger-stress-test +17 -12
  15. data/doc/{Users guide.html → Users guide Apache.html } +79 -61
  16. data/doc/{Users guide.txt → Users guide Apache.txt } +43 -939
  17. data/doc/Users guide Nginx.html +2276 -0
  18. data/doc/Users guide Nginx.txt +776 -0
  19. data/doc/cxxapi/ApplicationPoolServer_8h-source.html +9 -4
  20. data/doc/cxxapi/ApplicationPool_8h-source.html +9 -4
  21. data/doc/cxxapi/Application_8h-source.html +26 -21
  22. data/doc/cxxapi/Bucket_8h-source.html +54 -44
  23. data/doc/cxxapi/CachedFileStat_8h-source.html +9 -4
  24. data/doc/cxxapi/Configuration_8h-source.html +357 -339
  25. data/doc/cxxapi/DirectoryMapper_8h-source.html +294 -280
  26. data/doc/cxxapi/DummySpawnManager_8h-source.html +9 -4
  27. data/doc/cxxapi/Exceptions_8h-source.html +9 -4
  28. data/doc/cxxapi/FileChecker_8h-source.html +9 -4
  29. data/doc/cxxapi/Hooks_8h-source.html +50 -40
  30. data/doc/cxxapi/Logging_8h-source.html +9 -4
  31. data/doc/cxxapi/MessageChannel_8h-source.html +20 -15
  32. data/doc/cxxapi/PoolOptions_8h-source.html +10 -5
  33. data/doc/cxxapi/SpawnManager_8h-source.html +9 -4
  34. data/doc/cxxapi/StandardApplicationPool_8h-source.html +10 -5
  35. data/doc/cxxapi/SystemTime_8h-source.html +9 -4
  36. data/doc/cxxapi/Utils_8h-source.html +242 -214
  37. data/doc/cxxapi/annotated.html +4 -28
  38. data/doc/cxxapi/classClient-members.html +4 -4
  39. data/doc/cxxapi/classClient.html +14 -11
  40. data/doc/cxxapi/classHooks-members.html +4 -5
  41. data/doc/cxxapi/classHooks.html +26 -24
  42. data/doc/cxxapi/classPassenger_1_1Application-members.html +4 -4
  43. data/doc/cxxapi/classPassenger_1_1Application.html +40 -37
  44. data/doc/cxxapi/classPassenger_1_1ApplicationPool-members.html +4 -4
  45. data/doc/cxxapi/classPassenger_1_1ApplicationPool.html +95 -92
  46. data/doc/cxxapi/classPassenger_1_1ApplicationPoolServer-members.html +4 -4
  47. data/doc/cxxapi/classPassenger_1_1ApplicationPoolServer.html +26 -23
  48. data/doc/cxxapi/classPassenger_1_1ApplicationPool__inherit__graph.map +1 -1
  49. data/doc/cxxapi/classPassenger_1_1ApplicationPool__inherit__graph.md5 +1 -1
  50. data/doc/cxxapi/classPassenger_1_1ApplicationPool__inherit__graph.png +0 -0
  51. data/doc/cxxapi/classPassenger_1_1Application_1_1Session-members.html +17 -17
  52. data/doc/cxxapi/classPassenger_1_1Application_1_1Session.html +139 -136
  53. data/doc/cxxapi/classPassenger_1_1BufferedUpload-members.html +4 -4
  54. data/doc/cxxapi/classPassenger_1_1BufferedUpload.html +13 -10
  55. data/doc/cxxapi/classPassenger_1_1BusyException-members.html +4 -4
  56. data/doc/cxxapi/classPassenger_1_1BusyException.html +11 -8
  57. data/doc/cxxapi/classPassenger_1_1ConfigurationException-members.html +4 -4
  58. data/doc/cxxapi/classPassenger_1_1ConfigurationException.html +11 -8
  59. data/doc/cxxapi/classPassenger_1_1DirectoryMapper-members.html +4 -5
  60. data/doc/cxxapi/classPassenger_1_1DirectoryMapper.html +45 -43
  61. data/doc/cxxapi/classPassenger_1_1DummySpawnManager-members.html +4 -4
  62. data/doc/cxxapi/classPassenger_1_1DummySpawnManager.html +13 -10
  63. data/doc/cxxapi/classPassenger_1_1FileChecker-members.html +4 -4
  64. data/doc/cxxapi/classPassenger_1_1FileChecker.html +22 -19
  65. data/doc/cxxapi/classPassenger_1_1FileNotFoundException-members.html +4 -4
  66. data/doc/cxxapi/classPassenger_1_1FileNotFoundException.html +12 -9
  67. data/doc/cxxapi/classPassenger_1_1FileNotFoundException__inherit__graph.map +1 -1
  68. data/doc/cxxapi/classPassenger_1_1FileNotFoundException__inherit__graph.md5 +1 -1
  69. data/doc/cxxapi/classPassenger_1_1FileNotFoundException__inherit__graph.png +0 -0
  70. data/doc/cxxapi/classPassenger_1_1FileSystemException-members.html +4 -4
  71. data/doc/cxxapi/classPassenger_1_1FileSystemException.html +14 -11
  72. data/doc/cxxapi/classPassenger_1_1FileSystemException__inherit__graph.map +1 -1
  73. data/doc/cxxapi/classPassenger_1_1FileSystemException__inherit__graph.md5 +1 -1
  74. data/doc/cxxapi/classPassenger_1_1FileSystemException__inherit__graph.png +0 -0
  75. data/doc/cxxapi/classPassenger_1_1IOException-members.html +4 -4
  76. data/doc/cxxapi/classPassenger_1_1IOException.html +12 -9
  77. data/doc/cxxapi/classPassenger_1_1IOException__inherit__graph.map +1 -1
  78. data/doc/cxxapi/classPassenger_1_1IOException__inherit__graph.md5 +1 -1
  79. data/doc/cxxapi/classPassenger_1_1IOException__inherit__graph.png +0 -0
  80. data/doc/cxxapi/classPassenger_1_1MessageChannel-members.html +4 -4
  81. data/doc/cxxapi/classPassenger_1_1MessageChannel.html +228 -225
  82. data/doc/cxxapi/classPassenger_1_1RuntimeException-members.html +4 -4
  83. data/doc/cxxapi/classPassenger_1_1RuntimeException.html +11 -8
  84. data/doc/cxxapi/classPassenger_1_1SpawnException-members.html +4 -4
  85. data/doc/cxxapi/classPassenger_1_1SpawnException.html +14 -11
  86. data/doc/cxxapi/classPassenger_1_1SpawnManager-members.html +4 -4
  87. data/doc/cxxapi/classPassenger_1_1SpawnManager.html +50 -47
  88. data/doc/cxxapi/classPassenger_1_1StandardApplicationPool-members.html +4 -4
  89. data/doc/cxxapi/classPassenger_1_1StandardApplicationPool.html +73 -70
  90. data/doc/cxxapi/classPassenger_1_1StandardApplicationPool__inherit__graph.map +1 -1
  91. data/doc/cxxapi/classPassenger_1_1StandardApplicationPool__inherit__graph.md5 +1 -1
  92. data/doc/cxxapi/classPassenger_1_1StandardApplicationPool__inherit__graph.png +0 -0
  93. data/doc/cxxapi/classPassenger_1_1SystemException-members.html +4 -4
  94. data/doc/cxxapi/classPassenger_1_1SystemException.html +17 -14
  95. data/doc/cxxapi/classPassenger_1_1SystemException__inherit__graph.map +1 -1
  96. data/doc/cxxapi/classPassenger_1_1SystemException__inherit__graph.md5 +1 -1
  97. data/doc/cxxapi/classPassenger_1_1SystemException__inherit__graph.png +0 -0
  98. data/doc/cxxapi/classPassenger_1_1SystemTime-members.html +4 -4
  99. data/doc/cxxapi/classPassenger_1_1SystemTime.html +14 -11
  100. data/doc/cxxapi/classes.html +35 -0
  101. data/doc/cxxapi/definitions_8h-source.html +9 -4
  102. data/doc/cxxapi/doxygen.css +311 -303
  103. data/doc/cxxapi/files.html +9 -18
  104. data/doc/cxxapi/functions.html +5 -224
  105. data/doc/cxxapi/functions_func.html +5 -185
  106. data/doc/cxxapi/functions_type.html +4 -4
  107. data/doc/cxxapi/functions_vars.html +4 -4
  108. data/doc/cxxapi/graph_legend.dot +19 -19
  109. data/doc/cxxapi/graph_legend.html +5 -5
  110. data/doc/cxxapi/graph_legend.png +0 -0
  111. data/doc/cxxapi/group__Configuration.html +11 -13
  112. data/doc/cxxapi/group__Configuration.png +0 -0
  113. data/doc/cxxapi/group__Core.html +10 -12
  114. data/doc/cxxapi/group__Core.png +0 -0
  115. data/doc/cxxapi/group__Exceptions.html +5 -7
  116. data/doc/cxxapi/group__Hooks.html +5 -7
  117. data/doc/cxxapi/group__Hooks.png +0 -0
  118. data/doc/cxxapi/group__Support.html +5 -624
  119. data/doc/cxxapi/hierarchy.html +6 -6
  120. data/doc/cxxapi/inherit__graph__0.map +1 -1
  121. data/doc/cxxapi/inherit__graph__0.md5 +1 -1
  122. data/doc/cxxapi/inherit__graph__0.png +0 -0
  123. data/doc/cxxapi/inherit__graph__1.map +1 -1
  124. data/doc/cxxapi/inherit__graph__1.md5 +1 -1
  125. data/doc/cxxapi/inherit__graph__1.png +0 -0
  126. data/doc/cxxapi/inherit__graph__10.map +1 -1
  127. data/doc/cxxapi/inherit__graph__10.md5 +1 -1
  128. data/doc/cxxapi/inherit__graph__10.png +0 -0
  129. data/doc/cxxapi/inherit__graph__11.map +1 -1
  130. data/doc/cxxapi/inherit__graph__11.md5 +1 -1
  131. data/doc/cxxapi/inherit__graph__11.png +0 -0
  132. data/doc/cxxapi/inherit__graph__12.map +1 -1
  133. data/doc/cxxapi/inherit__graph__12.md5 +1 -1
  134. data/doc/cxxapi/inherit__graph__12.png +0 -0
  135. data/doc/cxxapi/inherit__graph__13.map +1 -2
  136. data/doc/cxxapi/inherit__graph__13.md5 +1 -1
  137. data/doc/cxxapi/inherit__graph__13.png +0 -0
  138. data/doc/cxxapi/inherit__graph__14.map +2 -1
  139. data/doc/cxxapi/inherit__graph__14.md5 +1 -1
  140. data/doc/cxxapi/inherit__graph__14.png +0 -0
  141. data/doc/cxxapi/inherit__graph__15.map +1 -1
  142. data/doc/cxxapi/inherit__graph__15.md5 +1 -1
  143. data/doc/cxxapi/inherit__graph__15.png +0 -0
  144. data/doc/cxxapi/inherit__graph__16.map +1 -1
  145. data/doc/cxxapi/inherit__graph__16.md5 +1 -1
  146. data/doc/cxxapi/inherit__graph__16.png +0 -0
  147. data/doc/cxxapi/inherit__graph__17.map +1 -1
  148. data/doc/cxxapi/inherit__graph__17.md5 +1 -1
  149. data/doc/cxxapi/inherit__graph__17.png +0 -0
  150. data/doc/cxxapi/inherit__graph__18.map +1 -1
  151. data/doc/cxxapi/inherit__graph__18.md5 +1 -1
  152. data/doc/cxxapi/inherit__graph__18.png +0 -0
  153. data/doc/cxxapi/inherit__graph__19.map +1 -1
  154. data/doc/cxxapi/inherit__graph__19.md5 +1 -1
  155. data/doc/cxxapi/inherit__graph__19.png +0 -0
  156. data/doc/cxxapi/inherit__graph__2.map +1 -1
  157. data/doc/cxxapi/inherit__graph__2.md5 +1 -1
  158. data/doc/cxxapi/inherit__graph__2.png +0 -0
  159. data/doc/cxxapi/inherit__graph__20.map +2 -2
  160. data/doc/cxxapi/inherit__graph__20.md5 +1 -1
  161. data/doc/cxxapi/inherit__graph__20.png +0 -0
  162. data/doc/cxxapi/inherit__graph__21.map +1 -1
  163. data/doc/cxxapi/inherit__graph__21.md5 +1 -1
  164. data/doc/cxxapi/inherit__graph__21.png +0 -0
  165. data/doc/cxxapi/inherit__graph__3.map +1 -1
  166. data/doc/cxxapi/inherit__graph__3.md5 +1 -1
  167. data/doc/cxxapi/inherit__graph__3.png +0 -0
  168. data/doc/cxxapi/inherit__graph__4.map +1 -1
  169. data/doc/cxxapi/inherit__graph__4.md5 +1 -1
  170. data/doc/cxxapi/inherit__graph__4.png +0 -0
  171. data/doc/cxxapi/inherit__graph__5.map +1 -2
  172. data/doc/cxxapi/inherit__graph__5.md5 +1 -1
  173. data/doc/cxxapi/inherit__graph__5.png +0 -0
  174. data/doc/cxxapi/inherit__graph__6.map +2 -1
  175. data/doc/cxxapi/inherit__graph__6.md5 +1 -1
  176. data/doc/cxxapi/inherit__graph__6.png +0 -0
  177. data/doc/cxxapi/inherit__graph__7.map +1 -1
  178. data/doc/cxxapi/inherit__graph__7.md5 +1 -1
  179. data/doc/cxxapi/inherit__graph__7.png +0 -0
  180. data/doc/cxxapi/inherit__graph__8.map +1 -1
  181. data/doc/cxxapi/inherit__graph__8.md5 +1 -1
  182. data/doc/cxxapi/inherit__graph__8.png +0 -0
  183. data/doc/cxxapi/inherit__graph__9.map +1 -1
  184. data/doc/cxxapi/inherit__graph__9.md5 +1 -1
  185. data/doc/cxxapi/inherit__graph__9.png +0 -0
  186. data/doc/cxxapi/inherits.html +41 -41
  187. data/doc/cxxapi/main.html +4 -4
  188. data/doc/cxxapi/modules.html +4 -5
  189. data/doc/cxxapi/structPassenger_1_1AnythingToString-members.html +4 -4
  190. data/doc/cxxapi/structPassenger_1_1AnythingToString.html +13 -10
  191. data/doc/cxxapi/structPassenger_1_1AnythingToString_3_01vector_3_01string_01_4_01_4-members.html +5 -5
  192. data/doc/cxxapi/structPassenger_1_1AnythingToString_3_01vector_3_01string_01_4_01_4.html +16 -13
  193. data/doc/cxxapi/structPassenger_1_1PoolOptions-members.html +4 -4
  194. data/doc/cxxapi/structPassenger_1_1PoolOptions.html +63 -60
  195. data/doc/cxxapi/tabs.css +5 -2
  196. data/doc/cxxapi/tree.html +7 -81
  197. data/doc/rdoc/classes/ConditionVariable.html +59 -59
  198. data/doc/rdoc/classes/Exception.html +11 -11
  199. data/doc/rdoc/classes/GC.html +4 -4
  200. data/doc/rdoc/classes/IO.html +14 -14
  201. data/doc/rdoc/classes/PhusionPassenger.html +75 -20
  202. data/doc/rdoc/classes/PhusionPassenger/AbstractInstaller.html +153 -0
  203. data/doc/rdoc/classes/PhusionPassenger/AbstractRequestHandler.html +125 -130
  204. data/doc/rdoc/classes/PhusionPassenger/AbstractServer.html +236 -236
  205. data/doc/rdoc/classes/PhusionPassenger/AbstractServerCollection.html +213 -213
  206. data/doc/rdoc/classes/PhusionPassenger/AdminTools.html +28 -28
  207. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ControlProcess.html +91 -75
  208. data/doc/rdoc/classes/PhusionPassenger/AppInitError.html +10 -10
  209. data/doc/rdoc/classes/PhusionPassenger/Application.html +64 -64
  210. data/doc/rdoc/classes/PhusionPassenger/ConsoleTextTemplate.html +34 -34
  211. data/doc/rdoc/classes/PhusionPassenger/FrameworkInitError.html +13 -13
  212. data/doc/rdoc/classes/PhusionPassenger/HTMLTemplate.html +30 -30
  213. data/doc/rdoc/classes/PhusionPassenger/InitializationError.html +10 -10
  214. data/doc/rdoc/classes/PhusionPassenger/MessageChannel.html +136 -136
  215. data/doc/rdoc/classes/PhusionPassenger/NativeSupport.html +24 -24
  216. data/doc/rdoc/classes/PhusionPassenger/Rack/ApplicationSpawner.html +42 -42
  217. data/doc/rdoc/classes/PhusionPassenger/Rack/RequestHandler.html +55 -53
  218. data/doc/rdoc/classes/PhusionPassenger/Railz.html +1 -1
  219. data/doc/rdoc/classes/PhusionPassenger/Railz/ApplicationSpawner.html +25 -30
  220. data/doc/rdoc/classes/PhusionPassenger/Railz/CGIFixed.html +23 -23
  221. data/doc/rdoc/classes/PhusionPassenger/Railz/FrameworkSpawner.html +116 -117
  222. data/doc/rdoc/classes/PhusionPassenger/Railz/RequestHandler.html +22 -22
  223. data/doc/rdoc/classes/PhusionPassenger/SpawnManager.html +118 -124
  224. data/doc/rdoc/classes/PhusionPassenger/UnknownError.html +10 -10
  225. data/doc/rdoc/classes/PhusionPassenger/Utils.html +354 -354
  226. data/doc/rdoc/classes/PhusionPassenger/VersionNotFound.html +9 -9
  227. data/doc/rdoc/classes/PhusionPassenger/WSGI/ApplicationSpawner.html +37 -37
  228. data/doc/rdoc/classes/PlatformInfo.html +282 -261
  229. data/doc/rdoc/classes/RakeExtensions.html +7 -7
  230. data/doc/rdoc/classes/Signal.html +26 -26
  231. data/doc/rdoc/created.rid +1 -1
  232. data/doc/rdoc/files/DEVELOPERS_TXT.html +6 -1
  233. data/doc/rdoc/files/README.html +15 -6
  234. data/doc/rdoc/files/ext/phusion_passenger/native_support_c.html +1 -1
  235. data/doc/rdoc/files/lib/phusion_passenger/abstract_installer_rb.html +129 -0
  236. data/doc/rdoc/files/lib/phusion_passenger/abstract_request_handler_rb.html +20 -13
  237. data/doc/rdoc/files/lib/phusion_passenger/abstract_server_collection_rb.html +19 -13
  238. data/doc/rdoc/files/lib/phusion_passenger/abstract_server_rb.html +19 -13
  239. data/doc/rdoc/files/lib/phusion_passenger/admin_tools/control_process_rb.html +31 -1
  240. data/doc/rdoc/files/lib/phusion_passenger/admin_tools_rb.html +31 -1
  241. data/doc/rdoc/files/lib/phusion_passenger/application_rb.html +19 -13
  242. data/doc/rdoc/files/lib/phusion_passenger/console_text_template_rb.html +19 -13
  243. data/doc/rdoc/files/lib/phusion_passenger/constants_rb.html +21 -12
  244. data/doc/rdoc/files/lib/phusion_passenger/dependencies_rb.html +19 -13
  245. data/doc/rdoc/files/lib/phusion_passenger/events_rb.html +19 -13
  246. data/doc/rdoc/files/lib/phusion_passenger/exceptions_rb.html +19 -13
  247. data/doc/rdoc/files/lib/phusion_passenger/html_template_rb.html +19 -13
  248. data/doc/rdoc/files/lib/phusion_passenger/message_channel_rb.html +19 -13
  249. data/doc/rdoc/files/lib/phusion_passenger/packaging_rb.html +122 -0
  250. data/doc/rdoc/files/lib/phusion_passenger/platform_info_rb.html +19 -13
  251. data/doc/rdoc/files/lib/phusion_passenger/rack/application_spawner_rb.html +22 -12
  252. data/doc/rdoc/files/lib/phusion_passenger/rack/request_handler_rb.html +21 -12
  253. data/doc/rdoc/files/lib/phusion_passenger/railz/application_spawner_rb.html +19 -13
  254. data/doc/rdoc/files/lib/phusion_passenger/railz/cgi_fixed_rb.html +1 -1
  255. data/doc/rdoc/files/lib/phusion_passenger/railz/framework_spawner_rb.html +19 -13
  256. data/doc/rdoc/files/lib/phusion_passenger/railz/request_handler_rb.html +21 -12
  257. data/doc/rdoc/files/lib/phusion_passenger/simple_benchmarking_rb.html +19 -13
  258. data/doc/rdoc/files/lib/phusion_passenger/spawn_manager_rb.html +19 -13
  259. data/doc/rdoc/files/lib/phusion_passenger/utils_rb.html +27 -21
  260. data/doc/rdoc/files/lib/phusion_passenger/wsgi/application_spawner_rb.html +21 -12
  261. data/doc/rdoc/files/misc/rake/extensions_rb.html +21 -12
  262. data/doc/rdoc/fr_class_index.html +1 -0
  263. data/doc/rdoc/fr_file_index.html +2 -0
  264. data/doc/rdoc/fr_method_index.html +116 -112
  265. data/doc/users_guide_snippets/analysis_and_system_maintenance_tools.txt +144 -0
  266. data/doc/users_guide_snippets/appendix_a_about.txt +13 -0
  267. data/doc/users_guide_snippets/appendix_b_terminology.txt +63 -0
  268. data/doc/users_guide_snippets/appendix_c_spawning_methods.txt +304 -0
  269. data/doc/users_guide_snippets/global_queueing_explained.txt +78 -0
  270. data/doc/users_guide_snippets/rackup_specifications.txt +75 -0
  271. data/doc/users_guide_snippets/rails_spawn_method.txt +48 -0
  272. data/doc/users_guide_snippets/tips.txt +173 -0
  273. data/ext/apache2/Bucket.cpp +17 -12
  274. data/ext/apache2/Bucket.h +17 -12
  275. data/ext/apache2/Configuration.cpp +17 -12
  276. data/ext/apache2/Configuration.h +27 -14
  277. data/ext/apache2/DirectoryMapper.h +21 -12
  278. data/ext/apache2/Hooks.cpp +67 -21
  279. data/ext/apache2/Hooks.h +17 -12
  280. data/ext/apache2/mod_passenger.c +17 -12
  281. data/ext/{apache2 → common}/Application.h +19 -14
  282. data/ext/{apache2 → common}/ApplicationPool.h +17 -12
  283. data/ext/{apache2 → common}/ApplicationPoolServer.h +18 -72
  284. data/ext/{apache2 → common}/ApplicationPoolServerExecutable.cpp +45 -104
  285. data/ext/common/ApplicationPoolStatusReporter.h +212 -0
  286. data/ext/{apache2 → common}/CachedFileStat.cpp +17 -12
  287. data/ext/{apache2 → common}/CachedFileStat.h +17 -12
  288. data/ext/{apache2 → common}/DummySpawnManager.h +17 -12
  289. data/ext/{apache2 → common}/Exceptions.h +17 -12
  290. data/ext/{apache2 → common}/FileChecker.h +17 -12
  291. data/ext/common/Logging.cpp +65 -0
  292. data/ext/{apache2 → common}/Logging.h +17 -12
  293. data/ext/{apache2 → common}/MessageChannel.h +17 -12
  294. data/ext/{apache2 → common}/PoolOptions.h +17 -12
  295. data/ext/{apache2 → common}/SpawnManager.h +17 -12
  296. data/ext/{apache2 → common}/StandardApplicationPool.h +17 -12
  297. data/ext/common/StaticString.h +147 -0
  298. data/ext/common/SystemTime.cpp +33 -0
  299. data/ext/{apache2 → common}/SystemTime.h +17 -12
  300. data/ext/{apache2 → common}/Utils.cpp +69 -12
  301. data/ext/{apache2 → common}/Utils.h +41 -12
  302. data/ext/nginx/Configuration.c +1091 -0
  303. data/ext/nginx/Configuration.h +71 -0
  304. data/ext/nginx/ContentHandler.c +1154 -0
  305. data/ext/nginx/ContentHandler.h +64 -0
  306. data/ext/nginx/HelperServer.cpp +857 -0
  307. data/ext/nginx/HttpStatusExtractor.h +161 -0
  308. data/ext/nginx/ScgiRequestParser.h +317 -0
  309. data/ext/nginx/StaticContentHandler.c +222 -0
  310. data/ext/nginx/StaticContentHandler.h +37 -0
  311. data/ext/nginx/config +41 -0
  312. data/ext/nginx/ngx_http_passenger_module.c +572 -0
  313. data/ext/nginx/ngx_http_passenger_module.h +72 -0
  314. data/ext/oxt/backtrace.cpp +8 -1
  315. data/ext/oxt/system_calls.cpp +40 -0
  316. data/ext/oxt/system_calls.hpp +14 -7
  317. data/ext/phusion_passenger/extconf.rb +17 -12
  318. data/ext/phusion_passenger/native_support.c +19 -12
  319. data/lib/phusion_passenger/abstract_installer.rb +196 -0
  320. data/lib/phusion_passenger/abstract_request_handler.rb +19 -24
  321. data/lib/phusion_passenger/abstract_server.rb +17 -12
  322. data/lib/phusion_passenger/abstract_server_collection.rb +17 -12
  323. data/lib/phusion_passenger/admin_tools.rb +23 -0
  324. data/lib/phusion_passenger/admin_tools/control_process.rb +39 -13
  325. data/lib/phusion_passenger/application.rb +17 -12
  326. data/lib/phusion_passenger/console_text_template.rb +17 -12
  327. data/lib/phusion_passenger/constants.rb +22 -11
  328. data/lib/phusion_passenger/dependencies.rb +47 -12
  329. data/lib/phusion_passenger/events.rb +17 -12
  330. data/lib/phusion_passenger/exceptions.rb +17 -12
  331. data/lib/phusion_passenger/html_template.rb +17 -12
  332. data/lib/phusion_passenger/message_channel.rb +17 -12
  333. data/lib/phusion_passenger/packaging.rb +39 -0
  334. data/lib/phusion_passenger/platform_info.rb +48 -22
  335. data/lib/phusion_passenger/rack/application_spawner.rb +22 -11
  336. data/lib/phusion_passenger/rack/request_handler.rb +21 -12
  337. data/lib/phusion_passenger/railz/application_spawner.rb +23 -23
  338. data/lib/phusion_passenger/railz/framework_spawner.rb +18 -14
  339. data/lib/phusion_passenger/railz/request_handler.rb +18 -11
  340. data/lib/phusion_passenger/simple_benchmarking.rb +17 -12
  341. data/lib/phusion_passenger/spawn_manager.rb +17 -20
  342. data/lib/phusion_passenger/templates/{apache_must_be_compiled_with_compatible_mpm.txt.erb → apache2/apache_must_be_compiled_with_compatible_mpm.txt.erb} +0 -0
  343. data/lib/phusion_passenger/templates/{apache2_config_snippets.txt.erb → apache2/config_snippets.txt.erb} +0 -0
  344. data/lib/phusion_passenger/templates/{deployment_example.txt.erb → apache2/deployment_example.txt.erb} +0 -0
  345. data/lib/phusion_passenger/templates/{no_write_permission_to_passenger_root.txt.erb → apache2/no_write_permission_to_passenger_root.txt.erb} +0 -0
  346. data/lib/phusion_passenger/templates/{possible_solutions_for_compilation_and_installation_problems.txt.erb → apache2/possible_solutions_for_compilation_and_installation_problems.txt.erb} +0 -0
  347. data/lib/phusion_passenger/templates/{run_installer_as_root.txt.erb → apache2/run_installer_as_root.txt.erb} +0 -0
  348. data/lib/phusion_passenger/templates/{welcome.txt.erb → apache2/welcome.txt.erb} +0 -0
  349. data/lib/phusion_passenger/templates/nginx/ask_for_extra_configure_flags.txt.erb +8 -0
  350. data/lib/phusion_passenger/templates/nginx/cannot_write_to_dir.txt.erb +11 -0
  351. data/lib/phusion_passenger/templates/nginx/config_snippets.txt.erb +17 -0
  352. data/lib/phusion_passenger/templates/nginx/config_snippets_inserted.txt.erb +20 -0
  353. data/lib/phusion_passenger/templates/nginx/confirm_extra_configure_flags.txt.erb +5 -0
  354. data/lib/phusion_passenger/templates/nginx/deployment_example.txt.erb +22 -0
  355. data/lib/phusion_passenger/templates/nginx/pcre_could_not_be_downloaded.txt.erb +11 -0
  356. data/lib/phusion_passenger/templates/nginx/pcre_could_not_be_extracted.txt.erb +11 -0
  357. data/lib/phusion_passenger/templates/nginx/possible_solutions_for_compilation_and_installation_problems.txt.erb +11 -0
  358. data/lib/phusion_passenger/templates/nginx/possible_solutions_for_download_and_extraction_problems.txt.erb +20 -0
  359. data/lib/phusion_passenger/templates/nginx/query_download_and_install.txt.erb +21 -0
  360. data/lib/phusion_passenger/templates/nginx/run_installer_as_root.txt.erb +8 -0
  361. data/lib/phusion_passenger/templates/nginx/welcome.txt.erb +15 -0
  362. data/lib/phusion_passenger/utils.rb +20 -15
  363. data/lib/phusion_passenger/wsgi/application_spawner.rb +18 -11
  364. data/lib/phusion_passenger/wsgi/request_handler.py +23 -0
  365. data/misc/copy_boost_headers.rb +23 -0
  366. data/misc/find_owner_pipe_leaks.rb +18 -11
  367. data/misc/rake/cplusplus.rb +18 -11
  368. data/misc/rake/extensions.rb +21 -14
  369. data/misc/render_error_pages.rb +18 -11
  370. data/test/ApplicationPoolServerTest.cpp +1 -3
  371. data/test/ApplicationPoolServer_ApplicationPoolTest.cpp +1 -1
  372. data/test/CxxTestMain.cpp +19 -3
  373. data/test/HttpStatusExtractorTest.cpp +181 -0
  374. data/test/ScgiRequestParserTest.cpp +337 -0
  375. data/test/StaticStringTest.cpp +51 -0
  376. data/test/UtilsTest.cpp +32 -0
  377. data/test/config.yml.example +5 -0
  378. data/test/{integration_tests.rb → integration_tests/apache2_tests.rb} +7 -299
  379. data/test/integration_tests/hello_world_rack_spec.rb +36 -0
  380. data/test/integration_tests/hello_world_wsgi_spec.rb +41 -0
  381. data/test/integration_tests/mycook_spec.rb +192 -0
  382. data/test/integration_tests/nginx_tests.rb +98 -0
  383. data/test/ruby/rack/application_spawner_spec.rb +40 -0
  384. data/test/stub/nginx/koi-utf +109 -0
  385. data/test/stub/nginx/koi-win +103 -0
  386. data/test/stub/nginx/mime.types +70 -0
  387. data/test/stub/nginx/nginx.conf.erb +57 -0
  388. data/test/stub/nginx/win-utf +126 -0
  389. data/test/stub/rails_apps/mycook/app/controllers/uploads_controller.rb +4 -0
  390. data/test/stub/rails_apps/mycook/config/routes.rb +1 -1
  391. data/test/stub/wsgi/passenger_wsgi.pyc +0 -0
  392. data/test/support/Support.h +40 -0
  393. data/test/support/nginx_controller.rb +98 -0
  394. data/test/support/test_helper.rb +79 -0
  395. metadata +1091 -1028
  396. data/benchmark/DummyRequestHandler.cpp +0 -101
  397. data/ext/apache2/Logging.cpp +0 -60
  398. data/ext/apache2/SystemTime.cpp +0 -28
data/doc/cxxapi/tabs.css CHANGED
@@ -32,7 +32,7 @@ DIV.tabs A
32
32
  float : left;
33
33
  background : url("tab_r.gif") no-repeat right top;
34
34
  border-bottom : 1px solid #84B0C7;
35
- font-size : x-small;
35
+ font-size : 80%;
36
36
  font-weight : bold;
37
37
  text-decoration : none;
38
38
  }
@@ -66,7 +66,7 @@ DIV.tabs INPUT
66
66
 
67
67
  DIV.tabs TD
68
68
  {
69
- font-size : x-small;
69
+ font-size : 80%;
70
70
  font-weight : bold;
71
71
  text-decoration : none;
72
72
  }
@@ -99,4 +99,7 @@ DIV.navpath
99
99
  background : none;
100
100
  border : none;
101
101
  border-bottom : 1px solid #84B0C7;
102
+ text-align : center;
103
+ margin : 2px;
104
+ padding : 2px;
102
105
  }
data/doc/cxxapi/tree.html CHANGED
@@ -61,7 +61,7 @@
61
61
 
62
62
  <body class="ftvtree">
63
63
  <div class="directory">
64
- <h3>Passenger</h3>
64
+ <h3 class="swap"><span>Passenger</span></h3>
65
65
  <div style="display: block;">
66
66
  <p><img src="ftv2pnode.png" alt="o" width=16 height=22 onclick="toggleFolder('folder1', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder1', this)"/><a class="el" href="modules.html" target="basefrm">Modules</a></p>
67
67
  <div id="folder1">
@@ -70,96 +70,22 @@
70
70
  <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="group__Configuration.html" target="basefrm">Apache module configuration</a></p>
71
71
  <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2lastnode.png" alt="\" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="group__Hooks.html" target="basefrm">Apache hooks</a></p>
72
72
  </div>
73
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="group__Support.html" target="basefrm">Apache-independent support classes and function</a></p>
74
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2lastnode.png" alt="\" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="group__Exceptions.html" target="basefrm">Exceptions</a></p>
73
+ <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2lastnode.png" alt="\" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="group__Support.html" target="basefrm">Apache-independent support classes and function</a></p>
75
74
  </div>
76
75
  <p><img src="ftv2pnode.png" alt="o" width=16 height=22 onclick="toggleFolder('folder3', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder3', this)"/><a class="el" href="annotated.html" target="basefrm">Class List</a></p>
77
76
  <div id="folder3">
78
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="structPassenger_1_1AnythingToString.html" target="basefrm">Passenger::AnythingToString< T ></a></p>
79
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="structPassenger_1_1AnythingToString_3_01vector_3_01string_01_4_01_4.html" target="basefrm">Passenger::Passenger::AnythingToString< vector< string > ></a></p>
80
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classPassenger_1_1Application.html" target="basefrm">Passenger::Application</a></p>
81
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classPassenger_1_1Application_1_1Session.html" target="basefrm">Passenger::Application::Session</a></p>
82
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classPassenger_1_1ApplicationPool.html" target="basefrm">Passenger::ApplicationPool</a></p>
83
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classPassenger_1_1ApplicationPoolServer.html" target="basefrm">Passenger::ApplicationPoolServer</a></p>
84
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classPassenger_1_1BufferedUpload.html" target="basefrm">Passenger::BufferedUpload</a></p>
85
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classPassenger_1_1BusyException.html" target="basefrm">Passenger::BusyException</a></p>
86
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classClient.html" target="basefrm">Client</a></p>
87
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classPassenger_1_1ConfigurationException.html" target="basefrm">Passenger::ConfigurationException</a></p>
88
77
  <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classPassenger_1_1DirectoryMapper.html" target="basefrm">Passenger::DirectoryMapper</a></p>
89
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classPassenger_1_1DummySpawnManager.html" target="basefrm">Passenger::DummySpawnManager</a></p>
90
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classPassenger_1_1FileChecker.html" target="basefrm">Passenger::FileChecker</a></p>
91
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classPassenger_1_1FileNotFoundException.html" target="basefrm">Passenger::FileNotFoundException</a></p>
92
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classPassenger_1_1FileSystemException.html" target="basefrm">Passenger::FileSystemException</a></p>
93
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classHooks.html" target="basefrm">Hooks</a></p>
94
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classPassenger_1_1IOException.html" target="basefrm">Passenger::IOException</a></p>
95
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classPassenger_1_1MessageChannel.html" target="basefrm">Passenger::MessageChannel</a></p>
96
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="structPassenger_1_1PoolOptions.html" target="basefrm">Passenger::PoolOptions</a></p>
97
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classPassenger_1_1RuntimeException.html" target="basefrm">Passenger::RuntimeException</a></p>
98
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classPassenger_1_1SpawnException.html" target="basefrm">Passenger::SpawnException</a></p>
99
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classPassenger_1_1SpawnManager.html" target="basefrm">Passenger::SpawnManager</a></p>
100
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classPassenger_1_1StandardApplicationPool.html" target="basefrm">Passenger::StandardApplicationPool</a></p>
101
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classPassenger_1_1SystemException.html" target="basefrm">Passenger::SystemException</a></p>
102
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2lastnode.png" alt="\" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classPassenger_1_1SystemTime.html" target="basefrm">Passenger::SystemTime</a></p>
103
- </div>
104
- <p><img src="ftv2pnode.png" alt="o" width=16 height=22 onclick="toggleFolder('folder4', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder4', this)"/><a class="el" href="hierarchy.html" target="basefrm">Class Hierarchy</a></p>
105
- <div id="folder4">
106
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="structPassenger_1_1AnythingToString.html" target="basefrm">Passenger::AnythingToString< T ></a></p>
107
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="structPassenger_1_1AnythingToString_3_01vector_3_01string_01_4_01_4.html" target="basefrm">Passenger::Passenger::AnythingToString< vector< string > ></a></p>
108
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classPassenger_1_1Application.html" target="basefrm">Passenger::Application</a></p>
109
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classPassenger_1_1Application_1_1Session.html" target="basefrm">Passenger::Application::Session</a></p>
110
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2pnode.png" alt="o" width=16 height=22 onclick="toggleFolder('folder5', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder5', this)"/><a class="el" href="classPassenger_1_1ApplicationPool.html" target="basefrm">Passenger::ApplicationPool</a></p>
111
- <div id="folder5">
112
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2lastnode.png" alt="\" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classPassenger_1_1StandardApplicationPool.html" target="basefrm">Passenger::StandardApplicationPool</a></p>
113
- </div>
114
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classPassenger_1_1ApplicationPoolServer.html" target="basefrm">Passenger::ApplicationPoolServer</a></p>
115
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classPassenger_1_1BufferedUpload.html" target="basefrm">Passenger::BufferedUpload</a></p>
116
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classPassenger_1_1BusyException.html" target="basefrm">Passenger::BusyException</a></p>
117
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classClient.html" target="basefrm">Client</a></p>
118
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classPassenger_1_1ConfigurationException.html" target="basefrm">Passenger::ConfigurationException</a></p>
119
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classPassenger_1_1DirectoryMapper.html" target="basefrm">Passenger::DirectoryMapper</a></p>
120
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classPassenger_1_1DummySpawnManager.html" target="basefrm">Passenger::DummySpawnManager</a></p>
121
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classPassenger_1_1FileChecker.html" target="basefrm">Passenger::FileChecker</a></p>
122
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classHooks.html" target="basefrm">Hooks</a></p>
123
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2pnode.png" alt="o" width=16 height=22 onclick="toggleFolder('folder6', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder6', this)"/><a class="el" href="classPassenger_1_1IOException.html" target="basefrm">Passenger::IOException</a></p>
124
- <div id="folder6">
125
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2lastnode.png" alt="\" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classPassenger_1_1FileNotFoundException.html" target="basefrm">Passenger::FileNotFoundException</a></p>
126
- </div>
127
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classPassenger_1_1MessageChannel.html" target="basefrm">Passenger::MessageChannel</a></p>
128
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="structPassenger_1_1PoolOptions.html" target="basefrm">Passenger::PoolOptions</a></p>
129
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classPassenger_1_1RuntimeException.html" target="basefrm">Passenger::RuntimeException</a></p>
130
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classPassenger_1_1SpawnException.html" target="basefrm">Passenger::SpawnException</a></p>
131
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classPassenger_1_1SpawnManager.html" target="basefrm">Passenger::SpawnManager</a></p>
132
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2pnode.png" alt="o" width=16 height=22 onclick="toggleFolder('folder7', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder7', this)"/><a class="el" href="classPassenger_1_1SystemException.html" target="basefrm">Passenger::SystemException</a></p>
133
- <div id="folder7">
134
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2lastnode.png" alt="\" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classPassenger_1_1FileSystemException.html" target="basefrm">Passenger::FileSystemException</a></p>
135
- </div>
136
- <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2lastnode.png" alt="\" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classPassenger_1_1SystemTime.html" target="basefrm">Passenger::SystemTime</a></p>
78
+ <p><img src="ftv2vertline.png" alt="|" width=16 height=22 /><img src="ftv2lastnode.png" alt="\" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="classHooks.html" target="basefrm">Hooks</a></p>
137
79
  </div>
138
80
  <p><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="functions.html" target="basefrm">Class Members</a></p>
139
- <p><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><a class="el" href="inherits.html" target="basefrm">Graphical Class Hierarchy</a></p>
140
- <p><img src="ftv2plastnode.png" alt="\" width=16 height=22 onclick="toggleFolder('folder8', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder8', this)"/><a class="el" href="files.html" target="basefrm">File List</a></p>
141
- <div id="folder8">
142
- <p><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><b>Application.h</b></p>
143
- <p><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><b>ApplicationPool.h</b></p>
144
- <p><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><b>ApplicationPoolServer.h</b></p>
81
+ <p><img src="ftv2plastnode.png" alt="\" width=16 height=22 onclick="toggleFolder('folder4', this)"/><img src="ftv2folderclosed.png" alt="+" width=24 height=22 onclick="toggleFolder('folder4', this)"/><a class="el" href="files.html" target="basefrm">File List</a></p>
82
+ <div id="folder4">
145
83
  <p><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><b>Bucket.h</b></p>
146
- <p><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><b>CachedFileStat.h</b></p>
147
84
  <p><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><b>Configuration.h</b></p>
148
85
  <p><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><b>definitions.h</b></p>
149
86
  <p><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><b>DirectoryMapper.h</b></p>
150
- <p><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><b>DummySpawnManager.h</b></p>
151
- <p><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><b>Exceptions.h</b></p>
152
- <p><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><b>FileChecker.h</b></p>
153
- <p><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><b>Hooks.h</b></p>
154
- <p><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><b>Logging.h</b></p>
155
- <p><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><b>MessageChannel.h</b></p>
156
- <p><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><b>PoolOptions.h</b></p>
157
- <p><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><b>SpawnManager.h</b></p>
158
- <p><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><b>StandardApplicationPool.h</b></p>
159
- <p><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2node.png" alt="o" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><b>SystemTime.h</b></p>
160
- <p><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2lastnode.png" alt="\" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><b>Utils.h</b></p>
87
+ <p><img src="ftv2blank.png" alt="&nbsp;" width=16 height=22 /><img src="ftv2lastnode.png" alt="\" width=16 height=22 /><img src="ftv2doc.png" alt="*" width=24 height=22 /><b>Hooks.h</b></p>
161
88
  </div>
162
89
  </div>
163
90
  </div>
164
- </body>
165
- </html>
91
+
@@ -105,39 +105,39 @@ timeout occurred.
105
105
  <p class="source-link">[ <a href="javascript:toggleSource('M000003_source')" id="l_M000003_source">show source</a> ]</p>
106
106
  <div id="M000003_source" class="dyn-source">
107
107
  <pre>
108
- <span class="ruby-comment cmt"># File lib/phusion_passenger/utils.rb, line 376</span>
109
- 376: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">timed_wait</span>(<span class="ruby-identifier">mutex</span>, <span class="ruby-identifier">secs</span>)
110
- 377: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">secs</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">100000000</span>
111
- 378: <span class="ruby-comment cmt"># NOTE: If one calls timeout() on FreeBSD 5 with an</span>
112
- 379: <span class="ruby-comment cmt"># argument of more than 100000000, then MRI will become</span>
113
- 380: <span class="ruby-comment cmt"># stuck in an infite loop, blocking all threads. It seems</span>
114
- 381: <span class="ruby-comment cmt"># that MRI uses select() to implement sleeping.</span>
115
- 382: <span class="ruby-comment cmt"># I think that a value of more than 100000000 overflows</span>
116
- 383: <span class="ruby-comment cmt"># select()'s data structures, causing it to behave incorrectly.</span>
117
- 384: <span class="ruby-comment cmt"># So we just make sure we can't sleep more than 100000000</span>
118
- 385: <span class="ruby-comment cmt"># seconds.</span>
119
- 386: <span class="ruby-identifier">secs</span> = <span class="ruby-value">100000000</span>
120
- 387: <span class="ruby-keyword kw">end</span>
121
- 388: <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">defined?</span>(<span class="ruby-constant">RUBY_ENGINE</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-constant">RUBY_ENGINE</span> <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;jruby&quot;</span>
122
- 389: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">secs</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
123
- 390: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">wait</span>(<span class="ruby-identifier">mutex</span>, <span class="ruby-identifier">secs</span>)
124
- 391: <span class="ruby-keyword kw">else</span>
125
- 392: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">wait</span>(<span class="ruby-identifier">mutex</span>)
126
- 393: <span class="ruby-keyword kw">end</span>
127
- 394: <span class="ruby-keyword kw">else</span>
128
- 395: <span class="ruby-identifier">require</span> <span class="ruby-value str">'timeout'</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-keyword kw">defined?</span>(<span class="ruby-constant">Timeout</span>)
129
- 396: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">secs</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
130
- 397: <span class="ruby-constant">Timeout</span>.<span class="ruby-identifier">timeout</span>(<span class="ruby-identifier">secs</span>) <span class="ruby-keyword kw">do</span>
131
- 398: <span class="ruby-identifier">wait</span>(<span class="ruby-identifier">mutex</span>)
132
- 399: <span class="ruby-keyword kw">end</span>
133
- 400: <span class="ruby-keyword kw">else</span>
134
- 401: <span class="ruby-identifier">wait</span>(<span class="ruby-identifier">mutex</span>)
135
- 402: <span class="ruby-keyword kw">end</span>
136
- 403: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span>
137
- 404: <span class="ruby-keyword kw">end</span>
138
- 405: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Timeout</span><span class="ruby-operator">::</span><span class="ruby-constant">Error</span>
139
- 406: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
140
- 407: <span class="ruby-keyword kw">end</span>
108
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/utils.rb, line 381</span>
109
+ 381: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">timed_wait</span>(<span class="ruby-identifier">mutex</span>, <span class="ruby-identifier">secs</span>)
110
+ 382: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">secs</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">100000000</span>
111
+ 383: <span class="ruby-comment cmt"># NOTE: If one calls timeout() on FreeBSD 5 with an</span>
112
+ 384: <span class="ruby-comment cmt"># argument of more than 100000000, then MRI will become</span>
113
+ 385: <span class="ruby-comment cmt"># stuck in an infite loop, blocking all threads. It seems</span>
114
+ 386: <span class="ruby-comment cmt"># that MRI uses select() to implement sleeping.</span>
115
+ 387: <span class="ruby-comment cmt"># I think that a value of more than 100000000 overflows</span>
116
+ 388: <span class="ruby-comment cmt"># select()'s data structures, causing it to behave incorrectly.</span>
117
+ 389: <span class="ruby-comment cmt"># So we just make sure we can't sleep more than 100000000</span>
118
+ 390: <span class="ruby-comment cmt"># seconds.</span>
119
+ 391: <span class="ruby-identifier">secs</span> = <span class="ruby-value">100000000</span>
120
+ 392: <span class="ruby-keyword kw">end</span>
121
+ 393: <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">defined?</span>(<span class="ruby-constant">RUBY_ENGINE</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-constant">RUBY_ENGINE</span> <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;jruby&quot;</span>
122
+ 394: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">secs</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
123
+ 395: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">wait</span>(<span class="ruby-identifier">mutex</span>, <span class="ruby-identifier">secs</span>)
124
+ 396: <span class="ruby-keyword kw">else</span>
125
+ 397: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">wait</span>(<span class="ruby-identifier">mutex</span>)
126
+ 398: <span class="ruby-keyword kw">end</span>
127
+ 399: <span class="ruby-keyword kw">else</span>
128
+ 400: <span class="ruby-identifier">require</span> <span class="ruby-value str">'timeout'</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-keyword kw">defined?</span>(<span class="ruby-constant">Timeout</span>)
129
+ 401: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">secs</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
130
+ 402: <span class="ruby-constant">Timeout</span>.<span class="ruby-identifier">timeout</span>(<span class="ruby-identifier">secs</span>) <span class="ruby-keyword kw">do</span>
131
+ 403: <span class="ruby-identifier">wait</span>(<span class="ruby-identifier">mutex</span>)
132
+ 404: <span class="ruby-keyword kw">end</span>
133
+ 405: <span class="ruby-keyword kw">else</span>
134
+ 406: <span class="ruby-identifier">wait</span>(<span class="ruby-identifier">mutex</span>)
135
+ 407: <span class="ruby-keyword kw">end</span>
136
+ 408: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span>
137
+ 409: <span class="ruby-keyword kw">end</span>
138
+ 410: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Timeout</span><span class="ruby-operator">::</span><span class="ruby-constant">Error</span>
139
+ 411: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
140
+ 412: <span class="ruby-keyword kw">end</span>
141
141
  </pre>
142
142
  </div>
143
143
  </div>
@@ -156,32 +156,32 @@ amount of time. Raises Timeout::Error if the timeout has elapsed.
156
156
  <p class="source-link">[ <a href="javascript:toggleSource('M000004_source')" id="l_M000004_source">show source</a> ]</p>
157
157
  <div id="M000004_source" class="dyn-source">
158
158
  <pre>
159
- <span class="ruby-comment cmt"># File lib/phusion_passenger/utils.rb, line 411</span>
160
- 411: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">timed_wait!</span>(<span class="ruby-identifier">mutex</span>, <span class="ruby-identifier">secs</span>)
161
- 412: <span class="ruby-identifier">require</span> <span class="ruby-value str">'timeout'</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-keyword kw">defined?</span>(<span class="ruby-constant">Timeout</span>)
162
- 413: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">secs</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">100000000</span>
163
- 414: <span class="ruby-comment cmt"># See the corresponding note for timed_wait().</span>
164
- 415: <span class="ruby-identifier">secs</span> = <span class="ruby-value">100000000</span>
165
- 416: <span class="ruby-keyword kw">end</span>
166
- 417: <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">defined?</span>(<span class="ruby-constant">RUBY_ENGINE</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-constant">RUBY_ENGINE</span> <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;jruby&quot;</span>
167
- 418: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">secs</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
168
- 419: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">wait</span>(<span class="ruby-identifier">mutex</span>, <span class="ruby-identifier">secs</span>)
169
- 420: <span class="ruby-identifier">raise</span> <span class="ruby-constant">Timeout</span><span class="ruby-operator">::</span><span class="ruby-constant">Error</span>, <span class="ruby-value str">&quot;Timeout&quot;</span>
170
- 421: <span class="ruby-keyword kw">end</span>
171
- 422: <span class="ruby-keyword kw">else</span>
172
- 423: <span class="ruby-identifier">wait</span>(<span class="ruby-identifier">mutex</span>)
173
- 424: <span class="ruby-keyword kw">end</span>
174
- 425: <span class="ruby-keyword kw">else</span>
175
- 426: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">secs</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
176
- 427: <span class="ruby-constant">Timeout</span>.<span class="ruby-identifier">timeout</span>(<span class="ruby-identifier">secs</span>) <span class="ruby-keyword kw">do</span>
177
- 428: <span class="ruby-identifier">wait</span>(<span class="ruby-identifier">mutex</span>)
178
- 429: <span class="ruby-keyword kw">end</span>
179
- 430: <span class="ruby-keyword kw">else</span>
180
- 431: <span class="ruby-identifier">wait</span>(<span class="ruby-identifier">mutex</span>)
181
- 432: <span class="ruby-keyword kw">end</span>
182
- 433: <span class="ruby-keyword kw">end</span>
183
- 434: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
184
- 435: <span class="ruby-keyword kw">end</span>
159
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/utils.rb, line 416</span>
160
+ 416: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">timed_wait!</span>(<span class="ruby-identifier">mutex</span>, <span class="ruby-identifier">secs</span>)
161
+ 417: <span class="ruby-identifier">require</span> <span class="ruby-value str">'timeout'</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-keyword kw">defined?</span>(<span class="ruby-constant">Timeout</span>)
162
+ 418: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">secs</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">100000000</span>
163
+ 419: <span class="ruby-comment cmt"># See the corresponding note for timed_wait().</span>
164
+ 420: <span class="ruby-identifier">secs</span> = <span class="ruby-value">100000000</span>
165
+ 421: <span class="ruby-keyword kw">end</span>
166
+ 422: <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">defined?</span>(<span class="ruby-constant">RUBY_ENGINE</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-constant">RUBY_ENGINE</span> <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;jruby&quot;</span>
167
+ 423: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">secs</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
168
+ 424: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">wait</span>(<span class="ruby-identifier">mutex</span>, <span class="ruby-identifier">secs</span>)
169
+ 425: <span class="ruby-identifier">raise</span> <span class="ruby-constant">Timeout</span><span class="ruby-operator">::</span><span class="ruby-constant">Error</span>, <span class="ruby-value str">&quot;Timeout&quot;</span>
170
+ 426: <span class="ruby-keyword kw">end</span>
171
+ 427: <span class="ruby-keyword kw">else</span>
172
+ 428: <span class="ruby-identifier">wait</span>(<span class="ruby-identifier">mutex</span>)
173
+ 429: <span class="ruby-keyword kw">end</span>
174
+ 430: <span class="ruby-keyword kw">else</span>
175
+ 431: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">secs</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
176
+ 432: <span class="ruby-constant">Timeout</span>.<span class="ruby-identifier">timeout</span>(<span class="ruby-identifier">secs</span>) <span class="ruby-keyword kw">do</span>
177
+ 433: <span class="ruby-identifier">wait</span>(<span class="ruby-identifier">mutex</span>)
178
+ 434: <span class="ruby-keyword kw">end</span>
179
+ 435: <span class="ruby-keyword kw">else</span>
180
+ 436: <span class="ruby-identifier">wait</span>(<span class="ruby-identifier">mutex</span>)
181
+ 437: <span class="ruby-keyword kw">end</span>
182
+ 438: <span class="ruby-keyword kw">end</span>
183
+ 439: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
184
+ 440: <span class="ruby-keyword kw">end</span>
185
185
  </pre>
186
186
  </div>
187
187
  </div>
@@ -97,17 +97,17 @@ Object
97
97
  <p class="source-link">[ <a href="javascript:toggleSource('M000008_source')" id="l_M000008_source">show source</a> ]</p>
98
98
  <div id="M000008_source" class="dyn-source">
99
99
  <pre>
100
- <span class="ruby-comment cmt"># File lib/phusion_passenger/utils.rb, line 360</span>
101
- 360: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">backtrace_string</span>(<span class="ruby-identifier">current_location</span> = <span class="ruby-keyword kw">nil</span>)
102
- 361: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">current_location</span>.<span class="ruby-identifier">nil?</span>
103
- 362: <span class="ruby-identifier">location</span> = <span class="ruby-keyword kw">nil</span>
104
- 363: <span class="ruby-keyword kw">else</span>
105
- 364: <span class="ruby-identifier">location</span> = <span class="ruby-node">&quot;in #{current_location} &quot;</span>
106
- 365: <span class="ruby-keyword kw">end</span>
107
- 366: <span class="ruby-keyword kw">return</span> <span class="ruby-node">&quot;*** Exception #{self.class} #{location}&quot;</span> <span class="ruby-operator">&lt;&lt;</span>
108
- 367: <span class="ruby-node">&quot;(#{self}) (process #{$$}):\n&quot;</span> <span class="ruby-operator">&lt;&lt;</span>
109
- 368: <span class="ruby-value str">&quot;\tfrom &quot;</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">backtrace</span>.<span class="ruby-identifier">join</span>(<span class="ruby-value str">&quot;\n\tfrom &quot;</span>)
110
- 369: <span class="ruby-keyword kw">end</span>
100
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/utils.rb, line 365</span>
101
+ 365: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">backtrace_string</span>(<span class="ruby-identifier">current_location</span> = <span class="ruby-keyword kw">nil</span>)
102
+ 366: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">current_location</span>.<span class="ruby-identifier">nil?</span>
103
+ 367: <span class="ruby-identifier">location</span> = <span class="ruby-keyword kw">nil</span>
104
+ 368: <span class="ruby-keyword kw">else</span>
105
+ 369: <span class="ruby-identifier">location</span> = <span class="ruby-node">&quot;in #{current_location} &quot;</span>
106
+ 370: <span class="ruby-keyword kw">end</span>
107
+ 371: <span class="ruby-keyword kw">return</span> <span class="ruby-node">&quot;*** Exception #{self.class} #{location}&quot;</span> <span class="ruby-operator">&lt;&lt;</span>
108
+ 372: <span class="ruby-node">&quot;(#{self}) (process #{$$}):\n&quot;</span> <span class="ruby-operator">&lt;&lt;</span>
109
+ 373: <span class="ruby-value str">&quot;\tfrom &quot;</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">backtrace</span>.<span class="ruby-identifier">join</span>(<span class="ruby-value str">&quot;\n\tfrom &quot;</span>)
110
+ 374: <span class="ruby-keyword kw">end</span>
111
111
  </pre>
112
112
  </div>
113
113
  </div>
@@ -97,10 +97,10 @@ copy-on-write friendly.
97
97
  <p class="source-link">[ <a href="javascript:toggleSource('M000033_source')" id="l_M000033_source">show source</a> ]</p>
98
98
  <div id="M000033_source" class="dyn-source">
99
99
  <pre>
100
- <span class="ruby-comment cmt"># File lib/phusion_passenger/utils.rb, line 513</span>
101
- 513: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">copy_on_write_friendly?</span>
102
- 514: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
103
- 515: <span class="ruby-keyword kw">end</span>
100
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/utils.rb, line 518</span>
101
+ 518: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">copy_on_write_friendly?</span>
102
+ 519: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
103
+ 520: <span class="ruby-keyword kw">end</span>
104
104
  </pre>
105
105
  </div>
106
106
  </div>
@@ -99,12 +99,12 @@ Object
99
99
  <p class="source-link">[ <a href="javascript:toggleSource('M000007_source')" id="l_M000007_source">show source</a> ]</p>
100
100
  <div id="M000007_source" class="dyn-source">
101
101
  <pre>
102
- <span class="ruby-comment cmt"># File lib/phusion_passenger/utils.rb, line 457</span>
103
- 457: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">close_on_exec!</span>
104
- 458: <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">defined?</span>(<span class="ruby-constant">Fcntl</span><span class="ruby-operator">::</span><span class="ruby-constant">F_SETFD</span>)
105
- 459: <span class="ruby-identifier">fcntl</span>(<span class="ruby-constant">Fcntl</span><span class="ruby-operator">::</span><span class="ruby-constant">F_SETFD</span>, <span class="ruby-constant">Fcntl</span><span class="ruby-operator">::</span><span class="ruby-constant">FD_CLOEXEC</span>)
106
- 460: <span class="ruby-keyword kw">end</span>
107
- 461: <span class="ruby-keyword kw">end</span>
102
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/utils.rb, line 462</span>
103
+ 462: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">close_on_exec!</span>
104
+ 463: <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">defined?</span>(<span class="ruby-constant">Fcntl</span><span class="ruby-operator">::</span><span class="ruby-constant">F_SETFD</span>)
105
+ 464: <span class="ruby-identifier">fcntl</span>(<span class="ruby-constant">Fcntl</span><span class="ruby-operator">::</span><span class="ruby-constant">F_SETFD</span>, <span class="ruby-constant">Fcntl</span><span class="ruby-operator">::</span><span class="ruby-constant">FD_CLOEXEC</span>)
106
+ 465: <span class="ruby-keyword kw">end</span>
107
+ 466: <span class="ruby-keyword kw">end</span>
108
108
  </pre>
109
109
  </div>
110
110
  </div>
@@ -127,10 +127,10 @@ Raises SystemCallError if something went wrong.
127
127
  <p class="source-link">[ <a href="javascript:toggleSource('M000006_source')" id="l_M000006_source">show source</a> ]</p>
128
128
  <div id="M000006_source" class="dyn-source">
129
129
  <pre>
130
- <span class="ruby-comment cmt"># File lib/phusion_passenger/utils.rb, line 452</span>
131
- 452: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">recv_io</span>
132
- 453: <span class="ruby-keyword kw">return</span> <span class="ruby-constant">IO</span>.<span class="ruby-identifier">new</span>(<span class="ruby-constant">PhusionPassenger</span><span class="ruby-operator">::</span><span class="ruby-constant">NativeSupport</span>.<span class="ruby-identifier">recv_fd</span>(<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">fileno</span>))
133
- 454: <span class="ruby-keyword kw">end</span>
130
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/utils.rb, line 457</span>
131
+ 457: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">recv_io</span>
132
+ 458: <span class="ruby-keyword kw">return</span> <span class="ruby-constant">IO</span>.<span class="ruby-identifier">new</span>(<span class="ruby-constant">PhusionPassenger</span><span class="ruby-operator">::</span><span class="ruby-constant">NativeSupport</span>.<span class="ruby-identifier">recv_fd</span>(<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">fileno</span>))
133
+ 459: <span class="ruby-keyword kw">end</span>
134
134
  </pre>
135
135
  </div>
136
136
  </div>
@@ -153,10 +153,10 @@ Raises SystemCallError if something went wrong.
153
153
  <p class="source-link">[ <a href="javascript:toggleSource('M000005_source')" id="l_M000005_source">show source</a> ]</p>
154
154
  <div id="M000005_source" class="dyn-source">
155
155
  <pre>
156
- <span class="ruby-comment cmt"># File lib/phusion_passenger/utils.rb, line 444</span>
157
- 444: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">send_io</span>(<span class="ruby-identifier">io</span>)
158
- 445: <span class="ruby-constant">PhusionPassenger</span><span class="ruby-operator">::</span><span class="ruby-constant">NativeSupport</span>.<span class="ruby-identifier">send_fd</span>(<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">fileno</span>, <span class="ruby-identifier">io</span>.<span class="ruby-identifier">fileno</span>)
159
- 446: <span class="ruby-keyword kw">end</span>
156
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/utils.rb, line 449</span>
157
+ 449: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">send_io</span>(<span class="ruby-identifier">io</span>)
158
+ 450: <span class="ruby-constant">PhusionPassenger</span><span class="ruby-operator">::</span><span class="ruby-constant">NativeSupport</span>.<span class="ruby-identifier">send_fd</span>(<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">fileno</span>, <span class="ruby-identifier">io</span>.<span class="ruby-identifier">fileno</span>)
159
+ 451: <span class="ruby-keyword kw">end</span>
160
160
  </pre>
161
161
  </div>
162
162
  </div>
@@ -57,28 +57,30 @@
57
57
  <tr valign="top">
58
58
  <td>In:</td>
59
59
  <td>
60
+ <a href="../files/lib/phusion_passenger/abstract_installer_rb.html">lib/phusion_passenger/abstract_installer.rb</a>
61
+ <a href="../files/lib/phusion_passenger/abstract_request_handler_rb.html">lib/phusion_passenger/abstract_request_handler.rb</a>
60
62
  <a href="../files/lib/phusion_passenger/abstract_server_rb.html">lib/phusion_passenger/abstract_server.rb</a>
61
- <a href="../files/lib/phusion_passenger/exceptions_rb.html">lib/phusion_passenger/exceptions.rb</a>
62
- <a href="../files/lib/phusion_passenger/dependencies_rb.html">lib/phusion_passenger/dependencies.rb</a>
63
63
  <a href="../files/lib/phusion_passenger/abstract_server_collection_rb.html">lib/phusion_passenger/abstract_server_collection.rb</a>
64
- <a href="../files/lib/phusion_passenger/console_text_template_rb.html">lib/phusion_passenger/console_text_template.rb</a>
64
+ <a href="../files/lib/phusion_passenger/admin_tools_rb.html">lib/phusion_passenger/admin_tools.rb</a>
65
65
  <a href="../files/lib/phusion_passenger/application_rb.html">lib/phusion_passenger/application.rb</a>
66
- <a href="../files/lib/phusion_passenger/message_channel_rb.html">lib/phusion_passenger/message_channel.rb</a>
66
+ <a href="../files/lib/phusion_passenger/console_text_template_rb.html">lib/phusion_passenger/console_text_template.rb</a>
67
67
  <a href="../files/lib/phusion_passenger/constants_rb.html">lib/phusion_passenger/constants.rb</a>
68
- <a href="../files/lib/phusion_passenger/spawn_manager_rb.html">lib/phusion_passenger/spawn_manager.rb</a>
69
- <a href="../files/lib/phusion_passenger/utils_rb.html">lib/phusion_passenger/utils.rb</a>
68
+ <a href="../files/lib/phusion_passenger/dependencies_rb.html">lib/phusion_passenger/dependencies.rb</a>
70
69
  <a href="../files/lib/phusion_passenger/events_rb.html">lib/phusion_passenger/events.rb</a>
71
- <a href="../files/lib/phusion_passenger/admin_tools_rb.html">lib/phusion_passenger/admin_tools.rb</a>
70
+ <a href="../files/lib/phusion_passenger/exceptions_rb.html">lib/phusion_passenger/exceptions.rb</a>
72
71
  <a href="../files/lib/phusion_passenger/html_template_rb.html">lib/phusion_passenger/html_template.rb</a>
73
- <a href="../files/lib/phusion_passenger/abstract_request_handler_rb.html">lib/phusion_passenger/abstract_request_handler.rb</a>
74
- <a href="../files/lib/phusion_passenger/wsgi/application_spawner_rb.html">lib/phusion_passenger/wsgi/application_spawner.rb</a>
72
+ <a href="../files/lib/phusion_passenger/message_channel_rb.html">lib/phusion_passenger/message_channel.rb</a>
73
+ <a href="../files/lib/phusion_passenger/packaging_rb.html">lib/phusion_passenger/packaging.rb</a>
74
+ <a href="../files/lib/phusion_passenger/spawn_manager_rb.html">lib/phusion_passenger/spawn_manager.rb</a>
75
+ <a href="../files/lib/phusion_passenger/utils_rb.html">lib/phusion_passenger/utils.rb</a>
75
76
  <a href="../files/lib/phusion_passenger/admin_tools/control_process_rb.html">lib/phusion_passenger/admin_tools/control_process.rb</a>
76
77
  <a href="../files/lib/phusion_passenger/rack/application_spawner_rb.html">lib/phusion_passenger/rack/application_spawner.rb</a>
77
78
  <a href="../files/lib/phusion_passenger/rack/request_handler_rb.html">lib/phusion_passenger/rack/request_handler.rb</a>
78
79
  <a href="../files/lib/phusion_passenger/railz/application_spawner_rb.html">lib/phusion_passenger/railz/application_spawner.rb</a>
79
- <a href="../files/lib/phusion_passenger/railz/request_handler_rb.html">lib/phusion_passenger/railz/request_handler.rb</a>
80
80
  <a href="../files/lib/phusion_passenger/railz/cgi_fixed_rb.html">lib/phusion_passenger/railz/cgi_fixed.rb</a>
81
81
  <a href="../files/lib/phusion_passenger/railz/framework_spawner_rb.html">lib/phusion_passenger/railz/framework_spawner.rb</a>
82
+ <a href="../files/lib/phusion_passenger/railz/request_handler_rb.html">lib/phusion_passenger/railz/request_handler.rb</a>
83
+ <a href="../files/lib/phusion_passenger/wsgi/application_spawner_rb.html">lib/phusion_passenger/wsgi/application_spawner.rb</a>
82
84
  <a href="../files/ext/phusion_passenger/native_support_c.html">ext/phusion_passenger/native_support.c</a>
83
85
  </td>
84
86
  </tr>
@@ -97,6 +99,7 @@
97
99
  <div class="sectiontitle">Methods</div>
98
100
  <ul>
99
101
  <li><a href="#M000035">call_event</a></li>
102
+ <li><a href="#M000036">natively_packaged?</a></li>
100
103
  <li><a href="#M000034">on_event</a></li>
101
104
  </ul>
102
105
 
@@ -109,6 +112,7 @@ Module <a href="PhusionPassenger/Rack.html" class="link">PhusionPassenger::Rack<
109
112
  Module <a href="PhusionPassenger/Railz.html" class="link">PhusionPassenger::Railz</a><br />
110
113
  Module <a href="PhusionPassenger/Utils.html" class="link">PhusionPassenger::Utils</a><br />
111
114
  Module <a href="PhusionPassenger/WSGI.html" class="link">PhusionPassenger::WSGI</a><br />
115
+ Class <a href="PhusionPassenger/AbstractInstaller.html" class="link">PhusionPassenger::AbstractInstaller</a><br />
112
116
  Class <a href="PhusionPassenger/AbstractRequestHandler.html" class="link">PhusionPassenger::AbstractRequestHandler</a><br />
113
117
  Class <a href="PhusionPassenger/AbstractServer.html" class="link">PhusionPassenger::AbstractServer</a><br />
114
118
  Class <a href="PhusionPassenger/AbstractServerCollection.html" class="link">PhusionPassenger::AbstractServerCollection</a><br />
@@ -127,6 +131,19 @@ Class <a href="PhusionPassenger/VersionNotFound.html" class="link">PhusionPassen
127
131
 
128
132
  <div class="sectiontitle">Constants</div>
129
133
  <table border='0' cellpadding='5'>
134
+ <tr valign='top'>
135
+ <td class="attr-name">VERSION_STRING</td>
136
+ <td>=</td>
137
+ <td class="attr-value">'2.2.0'</td>
138
+ </tr>
139
+ <tr valign='top'>
140
+ <td>&nbsp;</td>
141
+ <td colspan="2" class="attr-desc">
142
+ Phusion Passenger version number. Don&#8216;t forget to edit
143
+ Configuration.h too.
144
+
145
+ </td>
146
+ </tr>
130
147
  <tr valign='top'>
131
148
  <td class="attr-name">DEFAULT_FRAMEWORK_SPAWNER_MAX_IDLE_TIME</td>
132
149
  <td>=</td>
@@ -137,6 +154,21 @@ Class <a href="PhusionPassenger/VersionNotFound.html" class="link">PhusionPassen
137
154
  <td>=</td>
138
155
  <td class="attr-value">10 * 60</td>
139
156
  </tr>
157
+ <tr valign='top'>
158
+ <td class="attr-name">LIBDIR</td>
159
+ <td>=</td>
160
+ <td class="attr-value">File.expand_path(File.join(File.dirname(__FILE__), &quot;..&quot;))</td>
161
+ </tr>
162
+ <tr valign='top'>
163
+ <td class="attr-name">DOCDIR</td>
164
+ <td>=</td>
165
+ <td class="attr-value">&quot;/usr/share/doc/phusion_passenger&quot;</td>
166
+ </tr>
167
+ <tr valign='top'>
168
+ <td class="attr-name">DOCDIR</td>
169
+ <td>=</td>
170
+ <td class="attr-value">File.expand_path(File.join(LIBDIR, &quot;..&quot;, &quot;doc&quot;))</td>
171
+ </tr>
140
172
  </table>
141
173
 
142
174
 
@@ -149,12 +181,35 @@ Class <a href="PhusionPassenger/VersionNotFound.html" class="link">PhusionPassen
149
181
  <p class="source-link">[ <a href="javascript:toggleSource('M000035_source')" id="l_M000035_source">show source</a> ]</p>
150
182
  <div id="M000035_source" class="dyn-source">
151
183
  <pre>
152
- <span class="ruby-comment cmt"># File lib/phusion_passenger/events.rb, line 27</span>
153
- 27: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">call_event</span>(<span class="ruby-identifier">name</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
154
- 28: <span class="ruby-identifier">callback_list_for_event</span>(<span class="ruby-identifier">name</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">callback</span><span class="ruby-operator">|</span>
155
- 29: <span class="ruby-identifier">callback</span>.<span class="ruby-identifier">call</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
156
- 30: <span class="ruby-keyword kw">end</span>
157
- 31: <span class="ruby-keyword kw">end</span>
184
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/events.rb, line 32</span>
185
+ 32: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">call_event</span>(<span class="ruby-identifier">name</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
186
+ 33: <span class="ruby-identifier">callback_list_for_event</span>(<span class="ruby-identifier">name</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">callback</span><span class="ruby-operator">|</span>
187
+ 34: <span class="ruby-identifier">callback</span>.<span class="ruby-identifier">call</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
188
+ 35: <span class="ruby-keyword kw">end</span>
189
+ 36: <span class="ruby-keyword kw">end</span>
190
+ </pre>
191
+ </div>
192
+ </div>
193
+ </div>
194
+ <div class="method">
195
+ <div class="title">
196
+ <a name="M000036"></a><b>natively_packaged?</b>()
197
+ </div>
198
+ <div class="description">
199
+ <p>
200
+ Returns whether this Phusion Passenger installation is packaged using the
201
+ OS&#8216;s native package management system, i.e. as opposed to being
202
+ installed from source or with RubyGems.
203
+ </p>
204
+ </div>
205
+ <div class="sourcecode">
206
+ <p class="source-link">[ <a href="javascript:toggleSource('M000036_source')" id="l_M000036_source">show source</a> ]</p>
207
+ <div id="M000036_source" class="dyn-source">
208
+ <pre>
209
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/packaging.rb, line 30</span>
210
+ 30: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">natively_packaged?</span>
211
+ 31: <span class="ruby-keyword kw">return</span> <span class="ruby-operator">!</span><span class="ruby-constant">File</span>.<span class="ruby-identifier">exist?</span>(<span class="ruby-node">&quot;#{LIBDIR}/../Rakefile&quot;</span>)
212
+ 32: <span class="ruby-keyword kw">end</span>
158
213
  </pre>
159
214
  </div>
160
215
  </div>
@@ -167,10 +222,10 @@ Class <a href="PhusionPassenger/VersionNotFound.html" class="link">PhusionPassen
167
222
  <p class="source-link">[ <a href="javascript:toggleSource('M000034_source')" id="l_M000034_source">show source</a> ]</p>
168
223
  <div id="M000034_source" class="dyn-source">
169
224
  <pre>
170
- <span class="ruby-comment cmt"># File lib/phusion_passenger/events.rb, line 23</span>
171
- 23: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">on_event</span>(<span class="ruby-identifier">name</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
172
- 24: <span class="ruby-identifier">callback_list_for_event</span>(<span class="ruby-identifier">name</span>) <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">block</span>
173
- 25: <span class="ruby-keyword kw">end</span>
225
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/events.rb, line 28</span>
226
+ 28: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">on_event</span>(<span class="ruby-identifier">name</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
227
+ 29: <span class="ruby-identifier">callback_list_for_event</span>(<span class="ruby-identifier">name</span>) <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">block</span>
228
+ 30: <span class="ruby-keyword kw">end</span>
174
229
  </pre>
175
230
  </div>
176
231
  </div>