passenger 2.0.6 → 2.1.2

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 (497) hide show
  1. data/DEVELOPERS.TXT +10 -4
  2. data/LICENSE +1 -1
  3. data/NEWS +0 -0
  4. data/Rakefile +183 -117
  5. data/benchmark/dispatcher.rb +5 -9
  6. data/bin/passenger-install-apache2-module +52 -18
  7. data/bin/passenger-memory-stats +67 -13
  8. data/bin/passenger-spawn-server +8 -4
  9. data/bin/passenger-status +21 -46
  10. data/bin/passenger-stress-test +5 -5
  11. data/debian/postinst +1 -1
  12. data/doc/ApplicationPool algorithm.txt +180 -128
  13. data/doc/Architectural overview.html +1 -778
  14. data/doc/Security of user switching support.html +1 -643
  15. data/doc/Users guide Apache.html +3127 -0
  16. data/doc/Users guide Nginx.html +1458 -0
  17. data/doc/Users guide.html +1404 -467
  18. data/doc/Users guide.txt +843 -105
  19. data/doc/cxxapi/ApplicationPoolServer_8h-source.html +751 -641
  20. data/doc/cxxapi/ApplicationPool_8h-source.html +168 -171
  21. data/doc/cxxapi/Application_8h-source.html +494 -394
  22. data/doc/cxxapi/Bucket_8h-source.html +21 -15
  23. data/doc/cxxapi/CachedFileStat_8h-source.html +191 -0
  24. data/doc/cxxapi/Configuration_8h-source.html +311 -149
  25. data/doc/cxxapi/DirectoryMapper_8h-source.html +309 -0
  26. data/doc/cxxapi/DummySpawnManager_8h-source.html +3 -4
  27. data/doc/cxxapi/Exceptions_8h-source.html +182 -165
  28. data/doc/cxxapi/FileChecker_8h-source.html +130 -0
  29. data/doc/cxxapi/Hooks_8h-source.html +2 -3
  30. data/doc/cxxapi/Logging_8h-source.html +92 -89
  31. data/doc/cxxapi/MessageChannel_8h-source.html +585 -477
  32. data/doc/cxxapi/PoolOptions_8h-source.html +305 -0
  33. data/doc/cxxapi/SpawnManager_8h-source.html +515 -540
  34. data/doc/cxxapi/StandardApplicationPool_8h-source.html +779 -679
  35. data/doc/cxxapi/SystemTime_8h-source.html +104 -0
  36. data/doc/cxxapi/Utils_8h-source.html +331 -227
  37. data/doc/cxxapi/annotated.html +6 -7
  38. data/doc/cxxapi/classClient-members.html +1 -2
  39. data/doc/cxxapi/classClient.html +1 -2
  40. data/doc/cxxapi/classHooks-members.html +5 -2
  41. data/doc/cxxapi/classHooks.html +112 -2
  42. data/doc/cxxapi/classPassenger_1_1Application-members.html +2 -3
  43. data/doc/cxxapi/classPassenger_1_1Application.html +8 -9
  44. data/doc/cxxapi/classPassenger_1_1ApplicationPool-members.html +4 -4
  45. data/doc/cxxapi/classPassenger_1_1ApplicationPool.html +42 -81
  46. data/doc/cxxapi/classPassenger_1_1ApplicationPoolServer-members.html +1 -2
  47. data/doc/cxxapi/classPassenger_1_1ApplicationPoolServer.html +3 -4
  48. data/doc/cxxapi/classPassenger_1_1ApplicationPool__inherit__graph.png +0 -0
  49. data/doc/cxxapi/classPassenger_1_1Application_1_1Session-members.html +3 -2
  50. data/doc/cxxapi/classPassenger_1_1Application_1_1Session.html +74 -3
  51. data/doc/cxxapi/classPassenger_1_1BusyException-members.html +1 -2
  52. data/doc/cxxapi/classPassenger_1_1BusyException.html +2 -3
  53. data/doc/cxxapi/classPassenger_1_1ConfigurationException-members.html +1 -2
  54. data/doc/cxxapi/classPassenger_1_1ConfigurationException.html +2 -3
  55. data/doc/cxxapi/classPassenger_1_1DirectoryMapper-members.html +38 -0
  56. data/doc/cxxapi/classPassenger_1_1DirectoryMapper.html +256 -0
  57. data/doc/cxxapi/classPassenger_1_1DummySpawnManager-members.html +1 -2
  58. data/doc/cxxapi/classPassenger_1_1DummySpawnManager.html +2 -3
  59. data/doc/cxxapi/{classPassenger_1_1Thread-members.html → classPassenger_1_1FileChecker-members.html} +4 -5
  60. data/doc/cxxapi/classPassenger_1_1FileChecker.html +121 -0
  61. data/doc/cxxapi/classPassenger_1_1FileNotFoundException-members.html +1 -2
  62. data/doc/cxxapi/classPassenger_1_1FileNotFoundException.html +2 -3
  63. data/doc/cxxapi/classPassenger_1_1FileNotFoundException__inherit__graph.png +0 -0
  64. data/doc/cxxapi/classPassenger_1_1FileSystemException-members.html +2 -3
  65. data/doc/cxxapi/classPassenger_1_1FileSystemException.html +2 -3
  66. data/doc/cxxapi/classPassenger_1_1FileSystemException__inherit__graph.png +0 -0
  67. data/doc/cxxapi/classPassenger_1_1IOException-members.html +1 -2
  68. data/doc/cxxapi/classPassenger_1_1IOException.html +2 -3
  69. data/doc/cxxapi/classPassenger_1_1IOException__inherit__graph.png +0 -0
  70. data/doc/cxxapi/classPassenger_1_1MessageChannel-members.html +5 -2
  71. data/doc/cxxapi/classPassenger_1_1MessageChannel.html +155 -5
  72. data/doc/cxxapi/{classboost_1_1this__thread_1_1enable__syscall__interruption-members.html → classPassenger_1_1RuntimeException-members.html} +2 -3
  73. data/doc/cxxapi/{classboost_1_1this__thread_1_1enable__syscall__interruption.html → classPassenger_1_1RuntimeException.html} +10 -8
  74. data/doc/cxxapi/classPassenger_1_1SpawnException-members.html +1 -2
  75. data/doc/cxxapi/classPassenger_1_1SpawnException.html +2 -3
  76. data/doc/cxxapi/classPassenger_1_1SpawnManager-members.html +2 -3
  77. data/doc/cxxapi/classPassenger_1_1SpawnManager.html +15 -56
  78. data/doc/cxxapi/classPassenger_1_1StandardApplicationPool-members.html +5 -4
  79. data/doc/cxxapi/classPassenger_1_1StandardApplicationPool.html +20 -81
  80. data/doc/cxxapi/classPassenger_1_1StandardApplicationPool__inherit__graph.png +0 -0
  81. data/doc/cxxapi/classPassenger_1_1SystemException-members.html +2 -3
  82. data/doc/cxxapi/classPassenger_1_1SystemException.html +9 -10
  83. data/doc/cxxapi/classPassenger_1_1SystemException__inherit__graph.png +0 -0
  84. data/doc/cxxapi/{classboost_1_1this__thread_1_1disable__syscall__interruption-members.html → classPassenger_1_1SystemTime-members.html} +5 -3
  85. data/doc/cxxapi/classPassenger_1_1SystemTime.html +86 -0
  86. data/doc/cxxapi/classPassenger_1_1TempFile-members.html +2 -3
  87. data/doc/cxxapi/classPassenger_1_1TempFile.html +17 -9
  88. data/doc/cxxapi/definitions_8h-source.html +1 -2
  89. data/doc/cxxapi/files.html +6 -3
  90. data/doc/cxxapi/functions.html +98 -35
  91. data/doc/cxxapi/functions_func.html +60 -32
  92. data/doc/cxxapi/functions_type.html +1 -2
  93. data/doc/cxxapi/functions_vars.html +27 -2
  94. data/doc/cxxapi/graph_legend.html +1 -2
  95. data/doc/cxxapi/graph_legend.png +0 -0
  96. data/doc/cxxapi/group__Configuration.html +3 -4
  97. data/doc/cxxapi/group__Configuration.png +0 -0
  98. data/doc/cxxapi/group__Core.html +3 -4
  99. data/doc/cxxapi/group__Core.png +0 -0
  100. data/doc/cxxapi/group__Exceptions.html +4 -2
  101. data/doc/cxxapi/group__Hooks.html +1 -6
  102. data/doc/cxxapi/group__Hooks.png +0 -0
  103. data/doc/cxxapi/group__Support.html +259 -36
  104. data/doc/cxxapi/hierarchy.html +6 -7
  105. data/doc/cxxapi/inherit__graph__0.map +1 -1
  106. data/doc/cxxapi/inherit__graph__0.md5 +1 -1
  107. data/doc/cxxapi/inherit__graph__0.png +0 -0
  108. data/doc/cxxapi/inherit__graph__1.map +1 -1
  109. data/doc/cxxapi/inherit__graph__1.md5 +1 -1
  110. data/doc/cxxapi/inherit__graph__1.png +0 -0
  111. data/doc/cxxapi/inherit__graph__10.map +1 -1
  112. data/doc/cxxapi/inherit__graph__10.md5 +1 -1
  113. data/doc/cxxapi/inherit__graph__10.png +0 -0
  114. data/doc/cxxapi/inherit__graph__11.map +1 -1
  115. data/doc/cxxapi/inherit__graph__11.md5 +1 -1
  116. data/doc/cxxapi/inherit__graph__11.png +0 -0
  117. data/doc/cxxapi/inherit__graph__12.map +2 -1
  118. data/doc/cxxapi/inherit__graph__12.md5 +1 -1
  119. data/doc/cxxapi/inherit__graph__12.png +0 -0
  120. data/doc/cxxapi/inherit__graph__13.map +1 -1
  121. data/doc/cxxapi/inherit__graph__13.md5 +1 -1
  122. data/doc/cxxapi/inherit__graph__13.png +0 -0
  123. data/doc/cxxapi/inherit__graph__14.map +1 -2
  124. data/doc/cxxapi/inherit__graph__14.md5 +1 -1
  125. data/doc/cxxapi/inherit__graph__14.png +0 -0
  126. data/doc/cxxapi/inherit__graph__15.map +1 -1
  127. data/doc/cxxapi/inherit__graph__15.md5 +1 -1
  128. data/doc/cxxapi/inherit__graph__15.png +0 -0
  129. data/doc/cxxapi/inherit__graph__16.map +1 -1
  130. data/doc/cxxapi/inherit__graph__16.md5 +1 -1
  131. data/doc/cxxapi/inherit__graph__16.png +0 -0
  132. data/doc/cxxapi/inherit__graph__17.png +0 -0
  133. data/doc/cxxapi/inherit__graph__18.png +0 -0
  134. data/doc/cxxapi/inherit__graph__19.png +0 -0
  135. data/doc/cxxapi/inherit__graph__2.map +1 -1
  136. data/doc/cxxapi/inherit__graph__2.md5 +1 -1
  137. data/doc/cxxapi/inherit__graph__2.png +0 -0
  138. data/doc/cxxapi/inherit__graph__20.map +1 -1
  139. data/doc/cxxapi/inherit__graph__20.md5 +1 -1
  140. data/doc/cxxapi/inherit__graph__20.png +0 -0
  141. data/doc/cxxapi/inherit__graph__21.map +1 -1
  142. data/doc/cxxapi/inherit__graph__21.md5 +1 -1
  143. data/doc/cxxapi/inherit__graph__21.png +0 -0
  144. data/doc/cxxapi/inherit__graph__3.map +1 -1
  145. data/doc/cxxapi/inherit__graph__3.md5 +1 -1
  146. data/doc/cxxapi/inherit__graph__3.png +0 -0
  147. data/doc/cxxapi/inherit__graph__4.map +1 -1
  148. data/doc/cxxapi/inherit__graph__4.md5 +1 -1
  149. data/doc/cxxapi/inherit__graph__4.png +0 -0
  150. data/doc/cxxapi/inherit__graph__5.map +2 -1
  151. data/doc/cxxapi/inherit__graph__5.md5 +1 -1
  152. data/doc/cxxapi/inherit__graph__5.png +0 -0
  153. data/doc/cxxapi/inherit__graph__6.map +1 -1
  154. data/doc/cxxapi/inherit__graph__6.md5 +1 -1
  155. data/doc/cxxapi/inherit__graph__6.png +0 -0
  156. data/doc/cxxapi/inherit__graph__7.map +1 -1
  157. data/doc/cxxapi/inherit__graph__7.md5 +1 -1
  158. data/doc/cxxapi/inherit__graph__7.png +0 -0
  159. data/doc/cxxapi/inherit__graph__8.map +1 -1
  160. data/doc/cxxapi/inherit__graph__8.md5 +1 -1
  161. data/doc/cxxapi/inherit__graph__8.png +0 -0
  162. data/doc/cxxapi/inherit__graph__9.map +1 -2
  163. data/doc/cxxapi/inherit__graph__9.md5 +1 -1
  164. data/doc/cxxapi/inherit__graph__9.png +0 -0
  165. data/doc/cxxapi/inherits.html +30 -31
  166. data/doc/cxxapi/main.html +1 -2
  167. data/doc/cxxapi/modules.html +1 -2
  168. data/doc/cxxapi/structPassenger_1_1AnythingToString-members.html +1 -2
  169. data/doc/cxxapi/structPassenger_1_1AnythingToString.html +2 -3
  170. data/doc/cxxapi/structPassenger_1_1AnythingToString_3_01vector_3_01string_01_4_01_4-members.html +1 -2
  171. data/doc/cxxapi/structPassenger_1_1AnythingToString_3_01vector_3_01string_01_4_01_4.html +2 -3
  172. data/doc/cxxapi/structPassenger_1_1PoolOptions-members.html +49 -0
  173. data/doc/cxxapi/structPassenger_1_1PoolOptions.html +404 -0
  174. data/doc/cxxapi/tree.html +18 -20
  175. data/doc/images/conservative_spawning.png +0 -0
  176. data/doc/images/conservative_spawning.svg +248 -0
  177. data/doc/images/smart-lv2.png +0 -0
  178. data/doc/images/smart-lv2.svg +320 -0
  179. data/doc/rdoc/classes/ConditionVariable.html +68 -34
  180. data/doc/rdoc/classes/Exception.html +16 -16
  181. data/doc/rdoc/classes/GC.html +9 -9
  182. data/doc/rdoc/classes/IO.html +36 -17
  183. data/doc/rdoc/classes/PhusionPassenger.html +183 -0
  184. data/doc/rdoc/classes/PhusionPassenger/AbstractRequestHandler.html +511 -0
  185. data/doc/rdoc/classes/{Passenger → PhusionPassenger}/AbstractServer.html +285 -242
  186. data/doc/rdoc/classes/{Passenger → PhusionPassenger}/AbstractServer/ServerAlreadyStarted.html +3 -3
  187. data/doc/rdoc/classes/{Passenger → PhusionPassenger}/AbstractServer/ServerError.html +3 -3
  188. data/doc/rdoc/classes/{Passenger → PhusionPassenger}/AbstractServer/ServerNotStarted.html +3 -3
  189. data/doc/rdoc/classes/{Passenger → PhusionPassenger}/AbstractServer/UnknownMessage.html +3 -3
  190. data/doc/rdoc/classes/PhusionPassenger/AbstractServerCollection.html +598 -0
  191. data/doc/rdoc/classes/PhusionPassenger/AdminTools.html +140 -0
  192. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ControlProcess.html +247 -0
  193. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ControlProcess/Instance.html +138 -0
  194. data/doc/rdoc/classes/{Passenger → PhusionPassenger}/AppInitError.html +36 -19
  195. data/doc/rdoc/classes/{Passenger → PhusionPassenger}/Application.html +81 -96
  196. data/doc/rdoc/classes/{Passenger → PhusionPassenger}/ConsoleTextTemplate.html +18 -18
  197. data/doc/rdoc/classes/{Passenger → PhusionPassenger}/FrameworkInitError.html +20 -18
  198. data/doc/rdoc/classes/{Passenger → PhusionPassenger}/HTMLTemplate.html +18 -18
  199. data/doc/rdoc/classes/{Passenger → PhusionPassenger}/InitializationError.html +9 -9
  200. data/doc/rdoc/classes/PhusionPassenger/InvalidPath.html +92 -0
  201. data/doc/rdoc/classes/{Passenger → PhusionPassenger}/MessageChannel.html +93 -92
  202. data/doc/rdoc/classes/{Passenger → PhusionPassenger}/NativeSupport.html +55 -25
  203. data/doc/rdoc/classes/PhusionPassenger/Rack.html +91 -0
  204. data/doc/rdoc/classes/PhusionPassenger/Rack/ApplicationSpawner.html +185 -0
  205. data/doc/rdoc/classes/PhusionPassenger/Rack/RequestHandler.html +182 -0
  206. data/doc/rdoc/classes/PhusionPassenger/Railz.html +95 -0
  207. data/doc/rdoc/classes/PhusionPassenger/Railz/ApplicationSpawner.html +424 -0
  208. data/doc/rdoc/classes/PhusionPassenger/Railz/ApplicationSpawner/Error.html +98 -0
  209. data/doc/rdoc/classes/PhusionPassenger/Railz/CGIFixed.html +200 -0
  210. data/doc/rdoc/classes/PhusionPassenger/Railz/FrameworkSpawner.html +444 -0
  211. data/doc/rdoc/classes/PhusionPassenger/Railz/FrameworkSpawner/Error.html +98 -0
  212. data/doc/rdoc/classes/PhusionPassenger/Railz/RequestHandler.html +154 -0
  213. data/doc/rdoc/classes/PhusionPassenger/SpawnManager.html +408 -0
  214. data/doc/rdoc/classes/{Passenger → PhusionPassenger}/UnknownError.html +13 -13
  215. data/doc/rdoc/classes/PhusionPassenger/Utils.html +687 -0
  216. data/doc/rdoc/classes/{Passenger → PhusionPassenger}/VersionNotFound.html +8 -8
  217. data/doc/rdoc/classes/PhusionPassenger/WSGI.html +89 -0
  218. data/doc/rdoc/classes/PhusionPassenger/WSGI/ApplicationSpawner.html +188 -0
  219. data/doc/rdoc/classes/PlatformInfo.html +663 -159
  220. data/doc/rdoc/classes/RakeExtensions.html +4 -4
  221. data/doc/rdoc/classes/Signal.html +134 -0
  222. data/doc/rdoc/created.rid +1 -1
  223. data/doc/rdoc/files/DEVELOPERS_TXT.html +15 -10
  224. data/doc/rdoc/files/README.html +5 -7
  225. data/doc/rdoc/files/ext/{passenger → phusion_passenger}/native_support_c.html +2 -2
  226. data/doc/rdoc/files/lib/{passenger → phusion_passenger}/abstract_request_handler_rb.html +7 -9
  227. data/doc/rdoc/files/lib/phusion_passenger/abstract_server_collection_rb.html +120 -0
  228. data/doc/rdoc/files/lib/{passenger → phusion_passenger}/abstract_server_rb.html +7 -10
  229. data/doc/rdoc/files/lib/phusion_passenger/admin_tools/control_process_rb.html +99 -0
  230. data/doc/rdoc/files/lib/phusion_passenger/admin_tools_rb.html +92 -0
  231. data/doc/rdoc/files/lib/{passenger → phusion_passenger}/application_rb.html +6 -8
  232. data/doc/rdoc/files/lib/{passenger → phusion_passenger}/console_text_template_rb.html +5 -7
  233. data/doc/rdoc/files/lib/{passenger → phusion_passenger}/constants_rb.html +4 -5
  234. data/doc/rdoc/files/lib/{passenger → phusion_passenger}/dependencies_rb.html +6 -8
  235. data/doc/rdoc/files/lib/phusion_passenger/events_rb.html +116 -0
  236. data/doc/rdoc/files/lib/{passenger → phusion_passenger}/exceptions_rb.html +5 -7
  237. data/doc/rdoc/files/lib/{passenger → phusion_passenger}/html_template_rb.html +5 -7
  238. data/doc/rdoc/files/lib/{passenger → phusion_passenger}/message_channel_rb.html +5 -7
  239. data/doc/rdoc/files/lib/{passenger → phusion_passenger}/platform_info_rb.html +6 -7
  240. data/doc/rdoc/files/lib/phusion_passenger/rack/application_spawner_rb.html +123 -0
  241. data/doc/rdoc/files/lib/phusion_passenger/rack/request_handler_rb.html +117 -0
  242. data/doc/rdoc/files/lib/{passenger/utils_rb.html → phusion_passenger/railz/application_spawner_rb.html} +24 -17
  243. data/doc/rdoc/files/lib/phusion_passenger/railz/cgi_fixed_rb.html +126 -0
  244. data/doc/rdoc/files/lib/phusion_passenger/railz/framework_spawner_rb.html +139 -0
  245. data/doc/rdoc/files/lib/phusion_passenger/railz/request_handler_rb.html +118 -0
  246. data/doc/rdoc/files/lib/{passenger → phusion_passenger}/simple_benchmarking_rb.html +5 -7
  247. data/doc/rdoc/files/lib/{passenger → phusion_passenger}/spawn_manager_rb.html +40 -24
  248. data/doc/rdoc/files/lib/phusion_passenger/utils_rb.html +169 -0
  249. data/doc/rdoc/files/lib/phusion_passenger/wsgi/application_spawner_rb.html +120 -0
  250. data/doc/rdoc/files/lib/rake/extensions_rb.html +3 -4
  251. data/doc/rdoc/fr_class_index.html +37 -19
  252. data/doc/rdoc/fr_file_index.html +25 -14
  253. data/doc/rdoc/fr_method_index.html +145 -74
  254. data/ext/apache2/Application.h +145 -44
  255. data/ext/apache2/ApplicationPool.h +27 -29
  256. data/ext/apache2/ApplicationPoolServer.h +183 -72
  257. data/ext/apache2/ApplicationPoolServerExecutable.cpp +249 -42
  258. data/ext/apache2/Bucket.cpp +61 -9
  259. data/ext/apache2/Bucket.h +15 -8
  260. data/ext/apache2/CachedFileStat.cpp +114 -0
  261. data/ext/apache2/CachedFileStat.h +169 -0
  262. data/ext/apache2/Configuration.cpp +213 -22
  263. data/ext/apache2/Configuration.h +176 -13
  264. data/ext/apache2/DirectoryMapper.h +287 -0
  265. data/ext/apache2/Exceptions.h +30 -12
  266. data/ext/apache2/FileChecker.h +108 -0
  267. data/ext/apache2/Hooks.cpp +709 -493
  268. data/ext/apache2/LICENSE-CNRI.TXT +15 -0
  269. data/ext/apache2/Logging.h +26 -22
  270. data/ext/apache2/MessageChannel.h +124 -15
  271. data/ext/apache2/PoolOptions.h +283 -0
  272. data/ext/apache2/SpawnManager.h +75 -99
  273. data/ext/apache2/StandardApplicationPool.h +296 -195
  274. data/ext/apache2/SystemTime.cpp +28 -0
  275. data/ext/apache2/SystemTime.h +82 -0
  276. data/ext/apache2/Utils.cpp +172 -18
  277. data/ext/apache2/Utils.h +124 -19
  278. data/ext/boost/cstdint.hpp +4 -2
  279. data/ext/boost/current_function.hpp +67 -0
  280. data/ext/boost/detail/sp_counted_base.hpp +4 -4
  281. data/ext/boost/thread/exceptions.hpp +2 -1
  282. data/ext/boost/thread/pthread/thread.hpp +11 -3
  283. data/ext/boost/thread/pthread/thread_data.hpp +2 -1
  284. data/ext/oxt/backtrace.cpp +172 -0
  285. data/ext/oxt/backtrace.hpp +135 -0
  286. data/ext/oxt/detail/backtrace_disabled.hpp +39 -0
  287. data/ext/oxt/detail/backtrace_enabled.hpp +155 -0
  288. data/ext/oxt/detail/spin_lock_gcc_x86.hpp +82 -0
  289. data/ext/oxt/detail/spin_lock_portable.hpp +38 -0
  290. data/ext/oxt/detail/spin_lock_pthreads.hpp +97 -0
  291. data/ext/oxt/detail/tracable_exception_disabled.hpp +46 -0
  292. data/ext/oxt/detail/tracable_exception_enabled.hpp +48 -0
  293. data/ext/oxt/macros.hpp +58 -0
  294. data/ext/oxt/spin_lock.hpp +55 -0
  295. data/ext/{apache2/System.cpp → oxt/system_calls.cpp} +87 -52
  296. data/ext/oxt/system_calls.hpp +234 -0
  297. data/ext/oxt/thread.cpp +32 -0
  298. data/ext/oxt/thread.hpp +223 -0
  299. data/ext/oxt/tracable_exception.cpp +87 -0
  300. data/ext/oxt/tracable_exception.hpp +35 -0
  301. data/{lib/passenger/constants.rb → ext/phusion_passenger/extconf.rb} +14 -9
  302. data/ext/{passenger → phusion_passenger}/native_support.c +33 -6
  303. data/lib/{passenger → phusion_passenger}/abstract_request_handler.rb +209 -93
  304. data/lib/{passenger → phusion_passenger}/abstract_server.rb +23 -8
  305. data/lib/phusion_passenger/abstract_server_collection.rb +301 -0
  306. data/lib/phusion_passenger/admin_tools.rb +25 -0
  307. data/lib/phusion_passenger/admin_tools/control_process.rb +107 -0
  308. data/lib/{passenger → phusion_passenger}/application.rb +13 -16
  309. data/lib/{passenger → phusion_passenger}/console_text_template.rb +2 -2
  310. data/{ext/passenger/extconf.rb → lib/phusion_passenger/constants.rb} +5 -5
  311. data/lib/{passenger → phusion_passenger}/dependencies.rb +38 -32
  312. data/lib/phusion_passenger/events.rb +45 -0
  313. data/lib/{passenger → phusion_passenger}/exceptions.rb +12 -5
  314. data/lib/{passenger → phusion_passenger}/html_template.rb +2 -2
  315. data/lib/{passenger → phusion_passenger}/message_channel.rb +3 -2
  316. data/lib/phusion_passenger/platform_info.rb +500 -0
  317. data/lib/{passenger → phusion_passenger}/rack/application_spawner.rb +29 -22
  318. data/lib/{passenger → phusion_passenger}/rack/request_handler.rb +14 -9
  319. data/lib/{passenger → phusion_passenger}/railz/application_spawner.rb +94 -74
  320. data/lib/{passenger → phusion_passenger}/railz/cgi_fixed.rb +2 -2
  321. data/lib/{passenger → phusion_passenger}/railz/framework_spawner.rb +86 -98
  322. data/lib/{passenger → phusion_passenger}/railz/request_handler.rb +6 -6
  323. data/lib/{passenger → phusion_passenger}/simple_benchmarking.rb +0 -0
  324. data/lib/{passenger → phusion_passenger}/spawn_manager.rb +136 -128
  325. data/lib/{passenger → phusion_passenger}/templates/apache2_config_snippets.txt.erb +0 -0
  326. data/lib/{passenger → phusion_passenger}/templates/apache_must_be_compiled_with_compatible_mpm.txt.erb +0 -0
  327. data/lib/phusion_passenger/templates/app_exited_during_initialization.html.erb +38 -0
  328. data/lib/{passenger → phusion_passenger}/templates/app_init_error.html.erb +0 -0
  329. data/lib/{passenger → phusion_passenger}/templates/database_error.html.erb +0 -0
  330. data/lib/{passenger → phusion_passenger}/templates/deployment_example.txt.erb +1 -1
  331. data/lib/{passenger → phusion_passenger}/templates/error_layout.css +0 -0
  332. data/lib/{passenger → phusion_passenger}/templates/error_layout.html.erb +0 -0
  333. data/lib/{passenger → phusion_passenger}/templates/framework_init_error.html.erb +0 -0
  334. data/lib/{passenger → phusion_passenger}/templates/general_error.html.erb +0 -0
  335. data/lib/{passenger → phusion_passenger}/templates/invalid_app_root.html.erb +1 -1
  336. data/lib/{passenger → phusion_passenger}/templates/load_error.html.erb +0 -0
  337. data/lib/{passenger → phusion_passenger}/templates/no_write_permission_to_passenger_root.txt.erb +0 -0
  338. data/lib/{passenger → phusion_passenger}/templates/possible_solutions_for_compilation_and_installation_problems.txt.erb +0 -0
  339. data/lib/{passenger → phusion_passenger}/templates/run_installer_as_root.txt.erb +0 -0
  340. data/lib/{passenger → phusion_passenger}/templates/version_not_found.html.erb +0 -0
  341. data/lib/{passenger → phusion_passenger}/templates/welcome.txt.erb +0 -0
  342. data/lib/{passenger → phusion_passenger}/utils.rb +210 -44
  343. data/lib/{passenger → phusion_passenger}/wsgi/application_spawner.rb +18 -15
  344. data/lib/{passenger → phusion_passenger}/wsgi/request_handler.py +7 -1
  345. data/man/passenger-memory-stats.8 +1 -1
  346. data/misc/render_error_pages.rb +1 -1
  347. data/test/ApplicationPoolServerTest.cpp +0 -28
  348. data/test/ApplicationPoolServer_ApplicationPoolTest.cpp +4 -0
  349. data/test/ApplicationPoolTest.cpp +307 -69
  350. data/test/CachedFileStatTest.cpp +262 -0
  351. data/test/FileCheckerTest.cpp +79 -0
  352. data/test/MessageChannelTest.cpp +3 -3
  353. data/test/PoolOptionsTest.cpp +37 -0
  354. data/test/SpawnManagerTest.cpp +4 -4
  355. data/test/StandardApplicationPoolTest.cpp +4 -0
  356. data/test/SystemTimeTest.cpp +37 -0
  357. data/test/UtilsTest.cpp +137 -0
  358. data/test/integration_tests.rb +270 -23
  359. data/test/oxt/backtrace_test.cpp +128 -0
  360. data/test/oxt/oxt_test_main.cpp +25 -0
  361. data/test/oxt/syscall_interruption_test.cpp +50 -0
  362. data/test/ruby/abstract_request_handler_spec.rb +83 -0
  363. data/test/ruby/abstract_server_collection_spec.rb +246 -0
  364. data/test/ruby/application_spec.rb +3 -3
  365. data/test/ruby/message_channel_spec.rb +2 -2
  366. data/test/ruby/rack/application_spawner_spec.rb +3 -5
  367. data/test/ruby/rails/application_spawner_spec.rb +54 -15
  368. data/test/ruby/rails/framework_spawner_spec.rb +6 -8
  369. data/test/ruby/rails/minimal_spawner_spec.rb +29 -0
  370. data/test/ruby/rails/spawner_error_handling_spec.rb +1 -1
  371. data/test/ruby/rails/spawner_privilege_lowering_spec.rb +3 -3
  372. data/test/ruby/spawn_manager_spec.rb +23 -12
  373. data/test/ruby/utils_spec.rb +36 -2
  374. data/test/ruby/wsgi/application_spawner_spec.rb +47 -0
  375. data/test/stub/apache2/httpd.conf.erb +3 -5
  376. data/test/stub/message_channel.rb +2 -2
  377. data/test/stub/message_channel_2.rb +2 -2
  378. data/test/stub/message_channel_3.rb +3 -3
  379. data/test/stub/minimal-railsapp/README +0 -0
  380. data/test/stub/minimal-railsapp/config/application.rb +0 -0
  381. data/test/stub/minimal-railsapp/config/environment.rb +0 -0
  382. data/test/stub/minimal-railsapp/vendor/rails/actionmailer/lib/action_mailer.rb +0 -0
  383. data/test/stub/minimal-railsapp/vendor/rails/actionpack/lib/action_controller.rb +0 -0
  384. data/test/stub/minimal-railsapp/vendor/rails/actionpack/lib/action_pack.rb +0 -0
  385. data/test/stub/minimal-railsapp/vendor/rails/actionpack/lib/action_view.rb +0 -0
  386. data/test/stub/minimal-railsapp/vendor/rails/activerecord/lib/active_record.rb +0 -0
  387. data/test/stub/minimal-railsapp/vendor/rails/activeresource/lib/active_resource.rb +0 -0
  388. data/test/stub/minimal-railsapp/vendor/rails/activesupport/lib/active_support.rb +0 -0
  389. data/test/stub/minimal-railsapp/vendor/rails/activesupport/lib/active_support/whiny_nil.rb +0 -0
  390. data/test/stub/minimal-railsapp/vendor/rails/railties/lib/dispatcher.rb +0 -0
  391. data/test/stub/minimal-railsapp/vendor/rails/railties/lib/initializer.rb +0 -0
  392. data/test/stub/minimal-railsapp/vendor/rails/railties/lib/ruby_version_check.rb +0 -0
  393. data/test/stub/rails_apps/foobar/app/controllers/foo_controller.rb +8 -0
  394. data/test/stub/rails_apps/foobar/config/environments/development.rb +1 -2
  395. data/test/stub/rails_apps/mycook/app/controllers/welcome_controller.rb +21 -1
  396. data/test/stub/rails_apps/mycook/sites/some.site/public/uploads.html +26 -0
  397. data/test/stub/rails_apps/mycook/sites/some.site/public/welcome/cached.html +26 -0
  398. data/test/stub/railsapp/app/controllers/application.rb +0 -0
  399. data/test/stub/railsapp/app/controllers/bar_controller_1.rb +0 -0
  400. data/test/stub/railsapp/app/controllers/bar_controller_2.rb +1 -1
  401. data/test/stub/railsapp/app/controllers/foo_controller.rb +4 -0
  402. data/test/stub/railsapp/app/helpers/application_helper.rb +0 -0
  403. data/test/stub/railsapp/config/boot.rb +0 -0
  404. data/test/stub/railsapp/config/database.yml +0 -0
  405. data/test/stub/railsapp/config/environment.rb +0 -0
  406. data/test/stub/railsapp/config/environments/development.rb +0 -0
  407. data/test/stub/railsapp/config/environments/production.rb +0 -0
  408. data/test/stub/railsapp/config/initializers/inflections.rb +0 -0
  409. data/test/stub/railsapp/config/initializers/mime_types.rb +0 -0
  410. data/test/stub/railsapp/config/routes.rb +0 -0
  411. data/test/stub/railsapp/public/useless.txt +0 -0
  412. data/test/stub/spawn_server.rb +3 -4
  413. data/test/stub/wsgi/passenger_wsgi.pyc +0 -0
  414. data/test/support/apache2_controller.rb +57 -7
  415. data/test/support/tut.h +15 -0
  416. data/vendor/README +12 -0
  417. data/vendor/README_FOR_PACKAGERS +1 -0
  418. data/vendor/rack-0.9.1/AUTHORS +8 -0
  419. data/vendor/rack-0.9.1/COPYING +18 -0
  420. data/vendor/rack-0.9.1/ChangeLog +1423 -0
  421. data/vendor/rack-0.9.1/KNOWN-ISSUES +18 -0
  422. data/vendor/rack-0.9.1/README +306 -0
  423. data/vendor/rack-0.9.1/Rakefile +188 -0
  424. data/vendor/rack-0.9.1/SPEC +129 -0
  425. data/vendor/rack-0.9.1/lib/rack.rb +86 -0
  426. data/vendor/rack-0.9.1/lib/rack/adapter/camping.rb +22 -0
  427. data/vendor/rack-0.9.1/lib/rack/auth/abstract/handler.rb +28 -0
  428. data/vendor/rack-0.9.1/lib/rack/auth/abstract/request.rb +37 -0
  429. data/vendor/rack-0.9.1/lib/rack/auth/basic.rb +58 -0
  430. data/vendor/rack-0.9.1/lib/rack/auth/digest/md5.rb +124 -0
  431. data/vendor/rack-0.9.1/lib/rack/auth/digest/nonce.rb +51 -0
  432. data/vendor/rack-0.9.1/lib/rack/auth/digest/params.rb +55 -0
  433. data/vendor/rack-0.9.1/lib/rack/auth/digest/request.rb +40 -0
  434. data/vendor/rack-0.9.1/lib/rack/auth/openid.rb +438 -0
  435. data/vendor/rack-0.9.1/lib/rack/builder.rb +67 -0
  436. data/vendor/rack-0.9.1/lib/rack/cascade.rb +36 -0
  437. data/vendor/rack-0.9.1/lib/rack/commonlogger.rb +61 -0
  438. data/vendor/rack-0.9.1/lib/rack/conditionalget.rb +43 -0
  439. data/vendor/rack-0.9.1/lib/rack/content_length.rb +25 -0
  440. data/vendor/rack-0.9.1/lib/rack/deflater.rb +87 -0
  441. data/vendor/rack-0.9.1/lib/rack/directory.rb +150 -0
  442. data/vendor/rack-0.9.1/lib/rack/file.rb +85 -0
  443. data/vendor/rack-0.9.1/lib/rack/handler.rb +48 -0
  444. data/vendor/rack-0.9.1/lib/rack/handler/cgi.rb +57 -0
  445. data/vendor/rack-0.9.1/lib/rack/handler/evented_mongrel.rb +8 -0
  446. data/vendor/rack-0.9.1/lib/rack/handler/fastcgi.rb +86 -0
  447. data/vendor/rack-0.9.1/lib/rack/handler/lsws.rb +52 -0
  448. data/vendor/rack-0.9.1/lib/rack/handler/mongrel.rb +82 -0
  449. data/vendor/rack-0.9.1/lib/rack/handler/scgi.rb +57 -0
  450. data/vendor/rack-0.9.1/lib/rack/handler/swiftiplied_mongrel.rb +8 -0
  451. data/vendor/rack-0.9.1/lib/rack/handler/thin.rb +15 -0
  452. data/vendor/rack-0.9.1/lib/rack/handler/webrick.rb +61 -0
  453. data/vendor/rack-0.9.1/lib/rack/head.rb +19 -0
  454. data/vendor/rack-0.9.1/lib/rack/lint.rb +465 -0
  455. data/vendor/rack-0.9.1/lib/rack/lobster.rb +65 -0
  456. data/vendor/rack-0.9.1/lib/rack/methodoverride.rb +27 -0
  457. data/vendor/rack-0.9.1/lib/rack/mime.rb +204 -0
  458. data/vendor/rack-0.9.1/lib/rack/mock.rb +160 -0
  459. data/vendor/rack-0.9.1/lib/rack/recursive.rb +57 -0
  460. data/vendor/rack-0.9.1/lib/rack/reloader.rb +64 -0
  461. data/vendor/rack-0.9.1/lib/rack/request.rb +218 -0
  462. data/vendor/rack-0.9.1/lib/rack/response.rb +171 -0
  463. data/vendor/rack-0.9.1/lib/rack/session/abstract/id.rb +153 -0
  464. data/vendor/rack-0.9.1/lib/rack/session/cookie.rb +89 -0
  465. data/vendor/rack-0.9.1/lib/rack/session/memcache.rb +97 -0
  466. data/vendor/rack-0.9.1/lib/rack/session/pool.rb +73 -0
  467. data/vendor/rack-0.9.1/lib/rack/showexceptions.rb +348 -0
  468. data/vendor/rack-0.9.1/lib/rack/showstatus.rb +106 -0
  469. data/vendor/rack-0.9.1/lib/rack/static.rb +38 -0
  470. data/vendor/rack-0.9.1/lib/rack/urlmap.rb +48 -0
  471. data/vendor/rack-0.9.1/lib/rack/utils.rb +347 -0
  472. metadata +1197 -1055
  473. data/doc/cxxapi/System_8h-source.html +0 -251
  474. data/doc/cxxapi/classDirectoryMapper-members.html +0 -38
  475. data/doc/cxxapi/classDirectoryMapper.html +0 -203
  476. data/doc/cxxapi/classPassenger_1_1Thread.html +0 -100
  477. data/doc/cxxapi/classboost_1_1this__thread_1_1disable__syscall__interruption.html +0 -46
  478. data/doc/cxxapi/classboost_1_1this__thread_1_1restore__syscall__interruption-members.html +0 -33
  479. data/doc/cxxapi/classboost_1_1this__thread_1_1restore__syscall__interruption.html +0 -44
  480. data/doc/cxxapi/namespacePassenger.html +0 -208
  481. data/doc/cxxapi/namespacePassenger_1_1InterruptableCalls.html +0 -43
  482. data/doc/cxxapi/namespacemembers.html +0 -70
  483. data/doc/cxxapi/namespacemembers_func.html +0 -66
  484. data/doc/cxxapi/namespacemembers_type.html +0 -46
  485. data/doc/cxxapi/namespaces.html +0 -35
  486. data/doc/rdoc/classes/Passenger.html +0 -136
  487. data/doc/rdoc/classes/Passenger/AbstractRequestHandler.html +0 -402
  488. data/doc/rdoc/classes/Passenger/SpawnManager.html +0 -379
  489. data/doc/rdoc/classes/Passenger/Utils.html +0 -578
  490. data/ext/apache2/System.h +0 -228
  491. data/lib/passenger/platform_info.rb +0 -302
  492. data/lib/passenger/templates/app_exited_during_initialization.html.erb +0 -19
  493. data/test/stub/apache2/httpd.conf +0 -75
  494. data/test/stub/rails_apps/foobar/config/environments/test.rb +0 -22
  495. data/test/stub/rails_apps/mycook/config/environments/test.rb +0 -22
  496. data/test/stub/railsapp/config/environments/test.rb +0 -22
  497. data/test/stub/railsapp2/config/environments/test.rb +0 -22
@@ -10,7 +10,6 @@
10
10
  <ul>
11
11
  <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
12
12
  <li><a href="modules.html"><span>Modules</span></a></li>
13
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
14
13
  <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
15
14
  <li><a href="files.html"><span>Files</span></a></li>
16
15
  </ul>
@@ -26,7 +25,7 @@
26
25
  <div class="contents">
27
26
  <h1>Passenger::Passenger::AnythingToString&lt; vector&lt; string &gt; &gt; Member List</h1>This is the complete list of members for <a class="el" href="structPassenger_1_1AnythingToString_3_01vector_3_01string_01_4_01_4.html">Passenger::Passenger::AnythingToString&lt; vector&lt; string &gt; &gt;</a>, including all inherited members.<p><table>
28
27
  </table></div>
29
- <hr size="1"><address style="text-align: right;"><small>Generated on Mon Dec 15 15:27:25 2008 for Passenger by&nbsp;
28
+ <hr size="1"><address style="text-align: right;"><small>Generated on Fri Mar 13 19:24:35 2009 for Passenger by&nbsp;
30
29
  <a href="http://www.doxygen.org/index.html">
31
30
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
32
31
  </body>
@@ -10,7 +10,6 @@
10
10
  <ul>
11
11
  <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
12
12
  <li><a href="modules.html"><span>Modules</span></a></li>
13
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
14
13
  <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
15
14
  <li><a href="files.html"><span>Files</span></a></li>
16
15
  </ul>
@@ -22,7 +21,7 @@
22
21
  <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
23
22
  </ul>
24
23
  </div>
25
- <div class="navpath"><a class="el" href="namespacePassenger.html">Passenger</a>::<a class="el" href="structPassenger_1_1AnythingToString_3_01vector_3_01string_01_4_01_4.html">Passenger::AnythingToString&lt; vector&lt; string &gt; &gt;</a>
24
+ <div class="navpath"><b>Passenger</b>::<a class="el" href="structPassenger_1_1AnythingToString_3_01vector_3_01string_01_4_01_4.html">Passenger::AnythingToString&lt; vector&lt; string &gt; &gt;</a>
26
25
  </div>
27
26
  </div>
28
27
  <div class="contents">
@@ -42,7 +41,7 @@ Do not use directly. <table border="0" cellpadding="0" cellspacing="0">
42
41
  <hr>The documentation for this struct was generated from the following file:<ul>
43
42
  <li><a class="el" href="Utils_8h-source.html">Utils.h</a></ul>
44
43
  </div>
45
- <hr size="1"><address style="text-align: right;"><small>Generated on Mon Dec 15 15:27:25 2008 for Passenger by&nbsp;
44
+ <hr size="1"><address style="text-align: right;"><small>Generated on Fri Mar 13 19:24:35 2009 for Passenger by&nbsp;
46
45
  <a href="http://www.doxygen.org/index.html">
47
46
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
48
47
  </body>
@@ -0,0 +1,49 @@
1
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
+ <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3
+ <title>Passenger: Member List</title>
4
+ <link href="doxygen.css" rel="stylesheet" type="text/css">
5
+ <link href="tabs.css" rel="stylesheet" type="text/css">
6
+ </head><body>
7
+ <!-- Generated by Doxygen 1.5.5 -->
8
+ <div class="navigation" id="top">
9
+ <div class="tabs">
10
+ <ul>
11
+ <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
12
+ <li><a href="modules.html"><span>Modules</span></a></li>
13
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
14
+ <li><a href="files.html"><span>Files</span></a></li>
15
+ </ul>
16
+ </div>
17
+ <div class="tabs">
18
+ <ul>
19
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
20
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
21
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
22
+ </ul>
23
+ </div>
24
+ </div>
25
+ <div class="contents">
26
+ <h1>Passenger::PoolOptions Member List</h1>This is the complete list of members for <a class="el" href="structPassenger_1_1PoolOptions.html">Passenger::PoolOptions</a>, including all inherited members.<p><table>
27
+ <tr class="memlist"><td><a class="el" href="structPassenger_1_1PoolOptions.html#822039d204b48d9ed49184646734acf3">appRoot</a></td><td><a class="el" href="structPassenger_1_1PoolOptions.html">Passenger::PoolOptions</a></td><td></td></tr>
28
+ <tr class="memlist"><td><a class="el" href="structPassenger_1_1PoolOptions.html#5a2f27a853e33c22da71430216d798cf">appSpawnerTimeout</a></td><td><a class="el" href="structPassenger_1_1PoolOptions.html">Passenger::PoolOptions</a></td><td></td></tr>
29
+ <tr class="memlist"><td><a class="el" href="structPassenger_1_1PoolOptions.html#5e1c129ae0b8be350c7ed238eec8a8c9">appType</a></td><td><a class="el" href="structPassenger_1_1PoolOptions.html">Passenger::PoolOptions</a></td><td></td></tr>
30
+ <tr class="memlist"><td><a class="el" href="structPassenger_1_1PoolOptions.html#4324bb724859905f9991faa9b90aedbc">environment</a></td><td><a class="el" href="structPassenger_1_1PoolOptions.html">Passenger::PoolOptions</a></td><td></td></tr>
31
+ <tr class="memlist"><td><a class="el" href="structPassenger_1_1PoolOptions.html#cbbea86958b42ffa7989680ed1587c70">frameworkSpawnerTimeout</a></td><td><a class="el" href="structPassenger_1_1PoolOptions.html">Passenger::PoolOptions</a></td><td></td></tr>
32
+ <tr class="memlist"><td><a class="el" href="structPassenger_1_1PoolOptions.html#7feed1c0a150ffc9bd003f5535d675db">lowerPrivilege</a></td><td><a class="el" href="structPassenger_1_1PoolOptions.html">Passenger::PoolOptions</a></td><td></td></tr>
33
+ <tr class="memlist"><td><a class="el" href="structPassenger_1_1PoolOptions.html#ec92a9f5d0a265a77fbfdb549f39557a">lowestUser</a></td><td><a class="el" href="structPassenger_1_1PoolOptions.html">Passenger::PoolOptions</a></td><td></td></tr>
34
+ <tr class="memlist"><td><a class="el" href="structPassenger_1_1PoolOptions.html#70251ed3cb3713cb26a0b166c6b015c0">maxRequests</a></td><td><a class="el" href="structPassenger_1_1PoolOptions.html">Passenger::PoolOptions</a></td><td></td></tr>
35
+ <tr class="memlist"><td><a class="el" href="structPassenger_1_1PoolOptions.html#f61aa527e17a4f2bb5d66260749d17cd">memoryLimit</a></td><td><a class="el" href="structPassenger_1_1PoolOptions.html">Passenger::PoolOptions</a></td><td></td></tr>
36
+ <tr class="memlist"><td><a class="el" href="structPassenger_1_1PoolOptions.html#b2b7c72144c108657e3ad4ac9f6e26f4">PoolOptions</a>()</td><td><a class="el" href="structPassenger_1_1PoolOptions.html">Passenger::PoolOptions</a></td><td><code> [inline]</code></td></tr>
37
+ <tr class="memlist"><td><a class="el" href="structPassenger_1_1PoolOptions.html#038861a1ee8bda738325c38ce511347d">PoolOptions</a>(const string &amp;appRoot, bool lowerPrivilege=true, const string &amp;lowestUser=&quot;nobody&quot;, const string &amp;environment=&quot;production&quot;, const string &amp;spawnMethod=&quot;smart&quot;, const string &amp;appType=&quot;rails&quot;, long frameworkSpawnerTimeout=-1, long appSpawnerTimeout=-1, unsigned long maxRequests=0, unsigned long memoryLimit=0, bool useGlobalQueue=false, unsigned long statThrottleRate=0, const string &amp;restartDir=&quot;&quot;)</td><td><a class="el" href="structPassenger_1_1PoolOptions.html">Passenger::PoolOptions</a></td><td><code> [inline]</code></td></tr>
38
+ <tr class="memlist"><td><a class="el" href="structPassenger_1_1PoolOptions.html#eaa4faa9716475b2592c7506d2834ba6">PoolOptions</a>(const vector&lt; string &gt; &amp;vec, unsigned int startIndex=0)</td><td><a class="el" href="structPassenger_1_1PoolOptions.html">Passenger::PoolOptions</a></td><td><code> [inline]</code></td></tr>
39
+ <tr class="memlist"><td><a class="el" href="structPassenger_1_1PoolOptions.html#b0f889f70a3ed22f2423d110ddaf26f5">restartDir</a></td><td><a class="el" href="structPassenger_1_1PoolOptions.html">Passenger::PoolOptions</a></td><td></td></tr>
40
+ <tr class="memlist"><td><a class="el" href="structPassenger_1_1PoolOptions.html#feb629e3ced79f5a2dbccc1beeeeab9e">spawnMethod</a></td><td><a class="el" href="structPassenger_1_1PoolOptions.html">Passenger::PoolOptions</a></td><td></td></tr>
41
+ <tr class="memlist"><td><a class="el" href="structPassenger_1_1PoolOptions.html#eaf5a998b4a5da2246685c2dfb8a8c6d">statThrottleRate</a></td><td><a class="el" href="structPassenger_1_1PoolOptions.html">Passenger::PoolOptions</a></td><td></td></tr>
42
+ <tr class="memlist"><td><a class="el" href="structPassenger_1_1PoolOptions.html#b5e62e9abf7b89b8d3e5cdfb14e9d2af">toVector</a>(vector&lt; string &gt; &amp;vec) const </td><td><a class="el" href="structPassenger_1_1PoolOptions.html">Passenger::PoolOptions</a></td><td><code> [inline]</code></td></tr>
43
+ <tr class="memlist"><td><a class="el" href="structPassenger_1_1PoolOptions.html#b610e568a7b5d3bb27460d6e35952b7e">useGlobalQueue</a></td><td><a class="el" href="structPassenger_1_1PoolOptions.html">Passenger::PoolOptions</a></td><td></td></tr>
44
+ </table></div>
45
+ <hr size="1"><address style="text-align: right;"><small>Generated on Fri Mar 13 19:24:35 2009 for Passenger by&nbsp;
46
+ <a href="http://www.doxygen.org/index.html">
47
+ <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
48
+ </body>
49
+ </html>
@@ -0,0 +1,404 @@
1
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
+ <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3
+ <title>Passenger: Passenger::PoolOptions Struct Reference</title>
4
+ <link href="doxygen.css" rel="stylesheet" type="text/css">
5
+ <link href="tabs.css" rel="stylesheet" type="text/css">
6
+ </head><body>
7
+ <!-- Generated by Doxygen 1.5.5 -->
8
+ <div class="navigation" id="top">
9
+ <div class="tabs">
10
+ <ul>
11
+ <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
12
+ <li><a href="modules.html"><span>Modules</span></a></li>
13
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
14
+ <li><a href="files.html"><span>Files</span></a></li>
15
+ </ul>
16
+ </div>
17
+ <div class="tabs">
18
+ <ul>
19
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
20
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
21
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
22
+ </ul>
23
+ </div>
24
+ <div class="navpath"><b>Passenger</b>::<a class="el" href="structPassenger_1_1PoolOptions.html">PoolOptions</a>
25
+ </div>
26
+ </div>
27
+ <div class="contents">
28
+ <h1>Passenger::PoolOptions Struct Reference</h1><!-- doxytag: class="Passenger::PoolOptions" --><code>#include &lt;<a class="el" href="PoolOptions_8h-source.html">PoolOptions.h</a>&gt;</code>
29
+ <p>
30
+
31
+ <p>
32
+ <a href="structPassenger_1_1PoolOptions-members.html">List of all members.</a><hr><a name="_details"></a><h2>Detailed Description</h2>
33
+ This struct encapsulates information for <a class="el" href="classPassenger_1_1ApplicationPool.html#0b206eb4eb2869423d75c042a0653c67" title="Open a new session with the application specified by PoolOptions.appRoot.">ApplicationPool::get()</a> and for <a class="el" href="classPassenger_1_1SpawnManager.html#af035d564cc4e6683508939c9d6dbb64" title="Spawn a new instance of an application.">SpawnManager::spawn()</a>, such as which application is to be spawned.
34
+ <p>
35
+ <h2>Notes on privilege lowering support</h2>
36
+ <p>
37
+ If <code>lowerPrivilege</code> is true, then it will be attempt to switch the spawned application instance to the user who owns the application's <code>config/environment.rb</code>, and to the default group of that user.<p>
38
+ If that user doesn't exist on the system, or if that user is root, then it will be attempted to switch to the username given by <code>lowestUser</code> (and to the default group of that user). If <code>lowestUser</code> doesn't exist either, or if switching user failed (because the spawn server process does not have the privilege to do so), then the application will be spawned anyway, without reporting an error.<p>
39
+ It goes without saying that lowering privilege is only possible if the spawn server is running as root (and thus, by induction, that Phusion Passenger and Apache's control process are also running as root). Note that if Apache is listening on port 80, then its control process must be running as root. See "doc/Security of user switching.txt" for a detailed explanation. <table border="0" cellpadding="0" cellspacing="0">
40
+ <tr><td></td></tr>
41
+ <tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
42
+ <tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structPassenger_1_1PoolOptions.html#b2b7c72144c108657e3ad4ac9f6e26f4">PoolOptions</a> ()</td></tr>
43
+
44
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Creates a new <a class="el" href="structPassenger_1_1PoolOptions.html" title="This struct encapsulates information for ApplicationPool::get() and for SpawnManager::spawn()...">PoolOptions</a> object with the default values filled in. <a href="#b2b7c72144c108657e3ad4ac9f6e26f4"></a><br></td></tr>
45
+ <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="038861a1ee8bda738325c38ce511347d"></a><!-- doxytag: member="Passenger::PoolOptions::PoolOptions" ref="038861a1ee8bda738325c38ce511347d" args="(const string &amp;appRoot, bool lowerPrivilege=true, const string &amp;lowestUser=&quot;nobody&quot;, const string &amp;environment=&quot;production&quot;, const string &amp;spawnMethod=&quot;smart&quot;, const string &amp;appType=&quot;rails&quot;, long frameworkSpawnerTimeout=-1, long appSpawnerTimeout=-1, unsigned long maxRequests=0, unsigned long memoryLimit=0, bool useGlobalQueue=false, unsigned long statThrottleRate=0, const string &amp;restartDir=&quot;&quot;)" -->
46
+ &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structPassenger_1_1PoolOptions.html#038861a1ee8bda738325c38ce511347d">PoolOptions</a> (const string &amp;<a class="el" href="structPassenger_1_1PoolOptions.html#822039d204b48d9ed49184646734acf3">appRoot</a>, bool <a class="el" href="structPassenger_1_1PoolOptions.html#7feed1c0a150ffc9bd003f5535d675db">lowerPrivilege</a>=true, const string &amp;<a class="el" href="structPassenger_1_1PoolOptions.html#ec92a9f5d0a265a77fbfdb549f39557a">lowestUser</a>=&quot;nobody&quot;, const string &amp;<a class="el" href="structPassenger_1_1PoolOptions.html#4324bb724859905f9991faa9b90aedbc">environment</a>=&quot;production&quot;, const string &amp;<a class="el" href="structPassenger_1_1PoolOptions.html#feb629e3ced79f5a2dbccc1beeeeab9e">spawnMethod</a>=&quot;smart&quot;, const string &amp;<a class="el" href="structPassenger_1_1PoolOptions.html#5e1c129ae0b8be350c7ed238eec8a8c9">appType</a>=&quot;rails&quot;, long <a class="el" href="structPassenger_1_1PoolOptions.html#cbbea86958b42ffa7989680ed1587c70">frameworkSpawnerTimeout</a>=-1, long <a class="el" href="structPassenger_1_1PoolOptions.html#5a2f27a853e33c22da71430216d798cf">appSpawnerTimeout</a>=-1, unsigned long <a class="el" href="structPassenger_1_1PoolOptions.html#70251ed3cb3713cb26a0b166c6b015c0">maxRequests</a>=0, unsigned long <a class="el" href="structPassenger_1_1PoolOptions.html#f61aa527e17a4f2bb5d66260749d17cd">memoryLimit</a>=0, bool <a class="el" href="structPassenger_1_1PoolOptions.html#b610e568a7b5d3bb27460d6e35952b7e">useGlobalQueue</a>=false, unsigned long <a class="el" href="structPassenger_1_1PoolOptions.html#eaf5a998b4a5da2246685c2dfb8a8c6d">statThrottleRate</a>=0, const string &amp;<a class="el" href="structPassenger_1_1PoolOptions.html#b0f889f70a3ed22f2423d110ddaf26f5">restartDir</a>=&quot;&quot;)</td></tr>
47
+
48
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Creates a new <a class="el" href="structPassenger_1_1PoolOptions.html" title="This struct encapsulates information for ApplicationPool::get() and for SpawnManager::spawn()...">PoolOptions</a> object with the given values. <br></td></tr>
49
+ <tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structPassenger_1_1PoolOptions.html#eaa4faa9716475b2592c7506d2834ba6">PoolOptions</a> (const vector&lt; string &gt; &amp;vec, unsigned int startIndex=0)</td></tr>
50
+
51
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Creates a new <a class="el" href="structPassenger_1_1PoolOptions.html" title="This struct encapsulates information for ApplicationPool::get() and for SpawnManager::spawn()...">PoolOptions</a> object from the given string vector. <a href="#eaa4faa9716475b2592c7506d2834ba6"></a><br></td></tr>
52
+ <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structPassenger_1_1PoolOptions.html#b5e62e9abf7b89b8d3e5cdfb14e9d2af">toVector</a> (vector&lt; string &gt; &amp;vec) const </td></tr>
53
+
54
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Append the information in this <a class="el" href="structPassenger_1_1PoolOptions.html" title="This struct encapsulates information for ApplicationPool::get() and for SpawnManager::spawn()...">PoolOptions</a> object to the given string vector. <a href="#b5e62e9abf7b89b8d3e5cdfb14e9d2af"></a><br></td></tr>
55
+ <tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
56
+ <tr><td class="memItemLeft" nowrap align="right" valign="top">string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structPassenger_1_1PoolOptions.html#822039d204b48d9ed49184646734acf3">appRoot</a></td></tr>
57
+
58
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The root directory of the application to spawn. <a href="#822039d204b48d9ed49184646734acf3"></a><br></td></tr>
59
+ <tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structPassenger_1_1PoolOptions.html#7feed1c0a150ffc9bd003f5535d675db">lowerPrivilege</a></td></tr>
60
+
61
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Whether to lower the application's privileges. <a href="#7feed1c0a150ffc9bd003f5535d675db"></a><br></td></tr>
62
+ <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ec92a9f5d0a265a77fbfdb549f39557a"></a><!-- doxytag: member="Passenger::PoolOptions::lowestUser" ref="ec92a9f5d0a265a77fbfdb549f39557a" args="" -->
63
+ string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structPassenger_1_1PoolOptions.html#ec92a9f5d0a265a77fbfdb549f39557a">lowestUser</a></td></tr>
64
+
65
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The user to fallback to if lowering privilege fails. <br></td></tr>
66
+ <tr><td class="memItemLeft" nowrap align="right" valign="top">string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structPassenger_1_1PoolOptions.html#4324bb724859905f9991faa9b90aedbc">environment</a></td></tr>
67
+
68
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The RAILS_ENV/RACK_ENV environment that should be used. <a href="#4324bb724859905f9991faa9b90aedbc"></a><br></td></tr>
69
+ <tr><td class="memItemLeft" nowrap align="right" valign="top">string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structPassenger_1_1PoolOptions.html#feb629e3ced79f5a2dbccc1beeeeab9e">spawnMethod</a></td></tr>
70
+
71
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The spawn method to use. <a href="#feb629e3ced79f5a2dbccc1beeeeab9e"></a><br></td></tr>
72
+ <tr><td class="memItemLeft" nowrap align="right" valign="top">string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structPassenger_1_1PoolOptions.html#5e1c129ae0b8be350c7ed238eec8a8c9">appType</a></td></tr>
73
+
74
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The application type. <a href="#5e1c129ae0b8be350c7ed238eec8a8c9"></a><br></td></tr>
75
+ <tr><td class="memItemLeft" nowrap align="right" valign="top">long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structPassenger_1_1PoolOptions.html#cbbea86958b42ffa7989680ed1587c70">frameworkSpawnerTimeout</a></td></tr>
76
+
77
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The idle timeout, in seconds, of Rails framework spawners. <a href="#cbbea86958b42ffa7989680ed1587c70"></a><br></td></tr>
78
+ <tr><td class="memItemLeft" nowrap align="right" valign="top">long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structPassenger_1_1PoolOptions.html#5a2f27a853e33c22da71430216d798cf">appSpawnerTimeout</a></td></tr>
79
+
80
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The idle timeout, in seconds, of Rails application spawners. <a href="#5a2f27a853e33c22da71430216d798cf"></a><br></td></tr>
81
+ <tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structPassenger_1_1PoolOptions.html#70251ed3cb3713cb26a0b166c6b015c0">maxRequests</a></td></tr>
82
+
83
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The maximum number of requests that the spawned application may process before exiting. <a href="#70251ed3cb3713cb26a0b166c6b015c0"></a><br></td></tr>
84
+ <tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structPassenger_1_1PoolOptions.html#f61aa527e17a4f2bb5d66260749d17cd">memoryLimit</a></td></tr>
85
+
86
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The maximum amount of memory (in MB) the spawned application may use. <a href="#f61aa527e17a4f2bb5d66260749d17cd"></a><br></td></tr>
87
+ <tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structPassenger_1_1PoolOptions.html#b610e568a7b5d3bb27460d6e35952b7e">useGlobalQueue</a></td></tr>
88
+
89
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Whether to use a global queue instead of a per-backend process queue. <a href="#b610e568a7b5d3bb27460d6e35952b7e"></a><br></td></tr>
90
+ <tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structPassenger_1_1PoolOptions.html#eaf5a998b4a5da2246685c2dfb8a8c6d">statThrottleRate</a></td></tr>
91
+
92
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A throttling rate for file stats. <a href="#eaf5a998b4a5da2246685c2dfb8a8c6d"></a><br></td></tr>
93
+ <tr><td class="memItemLeft" nowrap align="right" valign="top">string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structPassenger_1_1PoolOptions.html#b0f889f70a3ed22f2423d110ddaf26f5">restartDir</a></td></tr>
94
+
95
+ <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The directory which contains restart.txt and always_restart.txt. <a href="#b0f889f70a3ed22f2423d110ddaf26f5"></a><br></td></tr>
96
+ </table>
97
+ <hr><h2>Constructor &amp; Destructor Documentation</h2>
98
+ <a class="anchor" name="b2b7c72144c108657e3ad4ac9f6e26f4"></a><!-- doxytag: member="Passenger::PoolOptions::PoolOptions" ref="b2b7c72144c108657e3ad4ac9f6e26f4" args="()" -->
99
+ <div class="memitem">
100
+ <div class="memproto">
101
+ <table class="memname">
102
+ <tr>
103
+ <td class="memname">Passenger::PoolOptions::PoolOptions </td>
104
+ <td>(</td>
105
+ <td class="paramname"> </td>
106
+ <td>&nbsp;)&nbsp;</td>
107
+ <td width="100%"><code> [inline]</code></td>
108
+ </tr>
109
+ </table>
110
+ </div>
111
+ <div class="memdoc">
112
+
113
+ <p>
114
+ Creates a new <a class="el" href="structPassenger_1_1PoolOptions.html" title="This struct encapsulates information for ApplicationPool::get() and for SpawnManager::spawn()...">PoolOptions</a> object with the default values filled in.
115
+ <p>
116
+ One must still set appRoot manually, after having used this constructor.
117
+ </div>
118
+ </div><p>
119
+ <a class="anchor" name="eaa4faa9716475b2592c7506d2834ba6"></a><!-- doxytag: member="Passenger::PoolOptions::PoolOptions" ref="eaa4faa9716475b2592c7506d2834ba6" args="(const vector&lt; string &gt; &amp;vec, unsigned int startIndex=0)" -->
120
+ <div class="memitem">
121
+ <div class="memproto">
122
+ <table class="memname">
123
+ <tr>
124
+ <td class="memname">Passenger::PoolOptions::PoolOptions </td>
125
+ <td>(</td>
126
+ <td class="paramtype">const vector&lt; string &gt; &amp;&nbsp;</td>
127
+ <td class="paramname"> <em>vec</em>, </td>
128
+ </tr>
129
+ <tr>
130
+ <td class="paramkey"></td>
131
+ <td></td>
132
+ <td class="paramtype">unsigned int&nbsp;</td>
133
+ <td class="paramname"> <em>startIndex</em> = <code>0</code></td><td>&nbsp;</td>
134
+ </tr>
135
+ <tr>
136
+ <td></td>
137
+ <td>)</td>
138
+ <td></td><td></td><td width="100%"><code> [inline]</code></td>
139
+ </tr>
140
+ </table>
141
+ </div>
142
+ <div class="memdoc">
143
+
144
+ <p>
145
+ Creates a new <a class="el" href="structPassenger_1_1PoolOptions.html" title="This struct encapsulates information for ApplicationPool::get() and for SpawnManager::spawn()...">PoolOptions</a> object from the given string vector.
146
+ <p>
147
+ This vector contains information that's written to by <a class="el" href="structPassenger_1_1PoolOptions.html#b5e62e9abf7b89b8d3e5cdfb14e9d2af" title="Append the information in this PoolOptions object to the given string vector.">toVector()</a>.<p>
148
+ For example: <div class="fragment"><pre class="fragment"> <a class="code" href="structPassenger_1_1PoolOptions.html#b2b7c72144c108657e3ad4ac9f6e26f4" title="Creates a new PoolOptions object with the default values filled in.">PoolOptions</a> options(...);
149
+ vector&lt;string&gt; vec;
150
+
151
+ vec.push_back(<span class="stringliteral">"my"</span>);
152
+ vec.push_back(<span class="stringliteral">"data"</span>);
153
+ options.toVector(vec); <span class="comment">// PoolOptions information will start at index 2.</span>
154
+
155
+ <a class="code" href="structPassenger_1_1PoolOptions.html#b2b7c72144c108657e3ad4ac9f6e26f4" title="Creates a new PoolOptions object with the default values filled in.">PoolOptions</a> copy(vec, 2);
156
+ </pre></div><p>
157
+ <dl compact><dt><b>Parameters:</b></dt><dd>
158
+ <table border="0" cellspacing="2" cellpadding="0">
159
+ <tr><td valign="top"></td><td valign="top"><em>vec</em>&nbsp;</td><td>The vector containing spawn options information. </td></tr>
160
+ <tr><td valign="top"></td><td valign="top"><em>startIndex</em>&nbsp;</td><td>The index in vec at which the information starts. </td></tr>
161
+ </table>
162
+ </dl>
163
+
164
+ </div>
165
+ </div><p>
166
+ <hr><h2>Member Function Documentation</h2>
167
+ <a class="anchor" name="b5e62e9abf7b89b8d3e5cdfb14e9d2af"></a><!-- doxytag: member="Passenger::PoolOptions::toVector" ref="b5e62e9abf7b89b8d3e5cdfb14e9d2af" args="(vector&lt; string &gt; &amp;vec) const " -->
168
+ <div class="memitem">
169
+ <div class="memproto">
170
+ <table class="memname">
171
+ <tr>
172
+ <td class="memname">void Passenger::PoolOptions::toVector </td>
173
+ <td>(</td>
174
+ <td class="paramtype">vector&lt; string &gt; &amp;&nbsp;</td>
175
+ <td class="paramname"> <em>vec</em> </td>
176
+ <td>&nbsp;)&nbsp;</td>
177
+ <td width="100%"> const<code> [inline]</code></td>
178
+ </tr>
179
+ </table>
180
+ </div>
181
+ <div class="memdoc">
182
+
183
+ <p>
184
+ Append the information in this <a class="el" href="structPassenger_1_1PoolOptions.html" title="This struct encapsulates information for ApplicationPool::get() and for SpawnManager::spawn()...">PoolOptions</a> object to the given string vector.
185
+ <p>
186
+ The resulting array could, for example, be used as a message to be sent to the spawn server.
187
+ </div>
188
+ </div><p>
189
+ <hr><h2>Member Data Documentation</h2>
190
+ <a class="anchor" name="822039d204b48d9ed49184646734acf3"></a><!-- doxytag: member="Passenger::PoolOptions::appRoot" ref="822039d204b48d9ed49184646734acf3" args="" -->
191
+ <div class="memitem">
192
+ <div class="memproto">
193
+ <table class="memname">
194
+ <tr>
195
+ <td class="memname">string <a class="el" href="structPassenger_1_1PoolOptions.html#822039d204b48d9ed49184646734acf3">Passenger::PoolOptions::appRoot</a> </td>
196
+ </tr>
197
+ </table>
198
+ </div>
199
+ <div class="memdoc">
200
+
201
+ <p>
202
+ The root directory of the application to spawn.
203
+ <p>
204
+ In case of a Ruby on Rails application, this is the folder that contains 'app/', 'public/', 'config/', etc. This must be a valid directory, but the path does not have to be absolute.
205
+ </div>
206
+ </div><p>
207
+ <a class="anchor" name="7feed1c0a150ffc9bd003f5535d675db"></a><!-- doxytag: member="Passenger::PoolOptions::lowerPrivilege" ref="7feed1c0a150ffc9bd003f5535d675db" args="" -->
208
+ <div class="memitem">
209
+ <div class="memproto">
210
+ <table class="memname">
211
+ <tr>
212
+ <td class="memname">bool <a class="el" href="structPassenger_1_1PoolOptions.html#7feed1c0a150ffc9bd003f5535d675db">Passenger::PoolOptions::lowerPrivilege</a> </td>
213
+ </tr>
214
+ </table>
215
+ </div>
216
+ <div class="memdoc">
217
+
218
+ <p>
219
+ Whether to lower the application's privileges.
220
+ <p>
221
+
222
+ </div>
223
+ </div><p>
224
+ <a class="anchor" name="4324bb724859905f9991faa9b90aedbc"></a><!-- doxytag: member="Passenger::PoolOptions::environment" ref="4324bb724859905f9991faa9b90aedbc" args="" -->
225
+ <div class="memitem">
226
+ <div class="memproto">
227
+ <table class="memname">
228
+ <tr>
229
+ <td class="memname">string <a class="el" href="structPassenger_1_1PoolOptions.html#4324bb724859905f9991faa9b90aedbc">Passenger::PoolOptions::environment</a> </td>
230
+ </tr>
231
+ </table>
232
+ </div>
233
+ <div class="memdoc">
234
+
235
+ <p>
236
+ The RAILS_ENV/RACK_ENV environment that should be used.
237
+ <p>
238
+ May not be an empty string.
239
+ </div>
240
+ </div><p>
241
+ <a class="anchor" name="feb629e3ced79f5a2dbccc1beeeeab9e"></a><!-- doxytag: member="Passenger::PoolOptions::spawnMethod" ref="feb629e3ced79f5a2dbccc1beeeeab9e" args="" -->
242
+ <div class="memitem">
243
+ <div class="memproto">
244
+ <table class="memname">
245
+ <tr>
246
+ <td class="memname">string <a class="el" href="structPassenger_1_1PoolOptions.html#feb629e3ced79f5a2dbccc1beeeeab9e">Passenger::PoolOptions::spawnMethod</a> </td>
247
+ </tr>
248
+ </table>
249
+ </div>
250
+ <div class="memdoc">
251
+
252
+ <p>
253
+ The spawn method to use.
254
+ <p>
255
+ Either "smart" or "conservative". See the Ruby class <code><a class="el" href="classPassenger_1_1SpawnManager.html" title="Spawning of Ruby on Rails/Rack application instances.">SpawnManager</a></code> for details.
256
+ </div>
257
+ </div><p>
258
+ <a class="anchor" name="5e1c129ae0b8be350c7ed238eec8a8c9"></a><!-- doxytag: member="Passenger::PoolOptions::appType" ref="5e1c129ae0b8be350c7ed238eec8a8c9" args="" -->
259
+ <div class="memitem">
260
+ <div class="memproto">
261
+ <table class="memname">
262
+ <tr>
263
+ <td class="memname">string <a class="el" href="structPassenger_1_1PoolOptions.html#5e1c129ae0b8be350c7ed238eec8a8c9">Passenger::PoolOptions::appType</a> </td>
264
+ </tr>
265
+ </table>
266
+ </div>
267
+ <div class="memdoc">
268
+
269
+ <p>
270
+ The application type.
271
+ <p>
272
+ Either "rails", "rack" or "wsgi".
273
+ </div>
274
+ </div><p>
275
+ <a class="anchor" name="cbbea86958b42ffa7989680ed1587c70"></a><!-- doxytag: member="Passenger::PoolOptions::frameworkSpawnerTimeout" ref="cbbea86958b42ffa7989680ed1587c70" args="" -->
276
+ <div class="memitem">
277
+ <div class="memproto">
278
+ <table class="memname">
279
+ <tr>
280
+ <td class="memname">long <a class="el" href="structPassenger_1_1PoolOptions.html#cbbea86958b42ffa7989680ed1587c70">Passenger::PoolOptions::frameworkSpawnerTimeout</a> </td>
281
+ </tr>
282
+ </table>
283
+ </div>
284
+ <div class="memdoc">
285
+
286
+ <p>
287
+ The idle timeout, in seconds, of Rails framework spawners.
288
+ <p>
289
+ A timeout of 0 means that the framework spawner should never idle timeout. A timeout of -1 means that the default timeout value should be used.<p>
290
+ For more details about Rails framework spawners, please read the documentation on the Railz::FrameworkSpawner Ruby class.
291
+ </div>
292
+ </div><p>
293
+ <a class="anchor" name="5a2f27a853e33c22da71430216d798cf"></a><!-- doxytag: member="Passenger::PoolOptions::appSpawnerTimeout" ref="5a2f27a853e33c22da71430216d798cf" args="" -->
294
+ <div class="memitem">
295
+ <div class="memproto">
296
+ <table class="memname">
297
+ <tr>
298
+ <td class="memname">long <a class="el" href="structPassenger_1_1PoolOptions.html#5a2f27a853e33c22da71430216d798cf">Passenger::PoolOptions::appSpawnerTimeout</a> </td>
299
+ </tr>
300
+ </table>
301
+ </div>
302
+ <div class="memdoc">
303
+
304
+ <p>
305
+ The idle timeout, in seconds, of Rails application spawners.
306
+ <p>
307
+ A timeout of 0 means that the application spawner should never idle timeout. A timeout of -1 means that the default timeout value should be used.<p>
308
+ For more details about Rails application spawners, please read the documentation on the Railz::ApplicationSpawner Ruby class.
309
+ </div>
310
+ </div><p>
311
+ <a class="anchor" name="70251ed3cb3713cb26a0b166c6b015c0"></a><!-- doxytag: member="Passenger::PoolOptions::maxRequests" ref="70251ed3cb3713cb26a0b166c6b015c0" args="" -->
312
+ <div class="memitem">
313
+ <div class="memproto">
314
+ <table class="memname">
315
+ <tr>
316
+ <td class="memname">unsigned long <a class="el" href="structPassenger_1_1PoolOptions.html#70251ed3cb3713cb26a0b166c6b015c0">Passenger::PoolOptions::maxRequests</a> </td>
317
+ </tr>
318
+ </table>
319
+ </div>
320
+ <div class="memdoc">
321
+
322
+ <p>
323
+ The maximum number of requests that the spawned application may process before exiting.
324
+ <p>
325
+ A value of 0 means unlimited.
326
+ </div>
327
+ </div><p>
328
+ <a class="anchor" name="f61aa527e17a4f2bb5d66260749d17cd"></a><!-- doxytag: member="Passenger::PoolOptions::memoryLimit" ref="f61aa527e17a4f2bb5d66260749d17cd" args="" -->
329
+ <div class="memitem">
330
+ <div class="memproto">
331
+ <table class="memname">
332
+ <tr>
333
+ <td class="memname">unsigned long <a class="el" href="structPassenger_1_1PoolOptions.html#f61aa527e17a4f2bb5d66260749d17cd">Passenger::PoolOptions::memoryLimit</a> </td>
334
+ </tr>
335
+ </table>
336
+ </div>
337
+ <div class="memdoc">
338
+
339
+ <p>
340
+ The maximum amount of memory (in MB) the spawned application may use.
341
+ <p>
342
+ A value of 0 means unlimited.
343
+ </div>
344
+ </div><p>
345
+ <a class="anchor" name="b610e568a7b5d3bb27460d6e35952b7e"></a><!-- doxytag: member="Passenger::PoolOptions::useGlobalQueue" ref="b610e568a7b5d3bb27460d6e35952b7e" args="" -->
346
+ <div class="memitem">
347
+ <div class="memproto">
348
+ <table class="memname">
349
+ <tr>
350
+ <td class="memname">bool <a class="el" href="structPassenger_1_1PoolOptions.html#b610e568a7b5d3bb27460d6e35952b7e">Passenger::PoolOptions::useGlobalQueue</a> </td>
351
+ </tr>
352
+ </table>
353
+ </div>
354
+ <div class="memdoc">
355
+
356
+ <p>
357
+ Whether to use a global queue instead of a per-backend process queue.
358
+ <p>
359
+ This option is only used by <a class="el" href="classPassenger_1_1ApplicationPool.html#0b206eb4eb2869423d75c042a0653c67" title="Open a new session with the application specified by PoolOptions.appRoot.">ApplicationPool::get()</a>.<p>
360
+ If enabled, when all backend processes are active, get() will wait until there's at least one backend process that's idle, instead of queuing the request into a random process's private queue. This is especially useful if a website has one or more long-running requests.
361
+ </div>
362
+ </div><p>
363
+ <a class="anchor" name="eaf5a998b4a5da2246685c2dfb8a8c6d"></a><!-- doxytag: member="Passenger::PoolOptions::statThrottleRate" ref="eaf5a998b4a5da2246685c2dfb8a8c6d" args="" -->
364
+ <div class="memitem">
365
+ <div class="memproto">
366
+ <table class="memname">
367
+ <tr>
368
+ <td class="memname">unsigned long <a class="el" href="structPassenger_1_1PoolOptions.html#eaf5a998b4a5da2246685c2dfb8a8c6d">Passenger::PoolOptions::statThrottleRate</a> </td>
369
+ </tr>
370
+ </table>
371
+ </div>
372
+ <div class="memdoc">
373
+
374
+ <p>
375
+ A throttling rate for file stats.
376
+ <p>
377
+ When set to a non-zero value N, restart.txt and other files which are usually stat()ted on every <a class="el" href="classPassenger_1_1ApplicationPool.html#0b206eb4eb2869423d75c042a0653c67" title="Open a new session with the application specified by PoolOptions.appRoot.">ApplicationPool::get()</a> call will be stat()ed at most every N seconds.
378
+ </div>
379
+ </div><p>
380
+ <a class="anchor" name="b0f889f70a3ed22f2423d110ddaf26f5"></a><!-- doxytag: member="Passenger::PoolOptions::restartDir" ref="b0f889f70a3ed22f2423d110ddaf26f5" args="" -->
381
+ <div class="memitem">
382
+ <div class="memproto">
383
+ <table class="memname">
384
+ <tr>
385
+ <td class="memname">string <a class="el" href="structPassenger_1_1PoolOptions.html#b0f889f70a3ed22f2423d110ddaf26f5">Passenger::PoolOptions::restartDir</a> </td>
386
+ </tr>
387
+ </table>
388
+ </div>
389
+ <div class="memdoc">
390
+
391
+ <p>
392
+ The directory which contains restart.txt and always_restart.txt.
393
+ <p>
394
+ An empty string means that the default directory should be used.
395
+ </div>
396
+ </div><p>
397
+ <hr>The documentation for this struct was generated from the following file:<ul>
398
+ <li><a class="el" href="PoolOptions_8h-source.html">PoolOptions.h</a></ul>
399
+ </div>
400
+ <hr size="1"><address style="text-align: right;"><small>Generated on Fri Mar 13 19:24:35 2009 for Passenger by&nbsp;
401
+ <a href="http://www.doxygen.org/index.html">
402
+ <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
403
+ </body>
404
+ </html>