passenger_dudemeister 3.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1565) hide show
  1. data/DEVELOPERS.TXT +113 -0
  2. data/INSTALL +6 -0
  3. data/LICENSE +19 -0
  4. data/NEWS +429 -0
  5. data/PACKAGING.TXT +25 -0
  6. data/README +45 -0
  7. data/Rakefile +56 -0
  8. data/bin/passenger +32 -0
  9. data/bin/passenger-config +46 -0
  10. data/bin/passenger-install-apache2-module +237 -0
  11. data/bin/passenger-install-nginx-module +476 -0
  12. data/bin/passenger-make-enterprisey +82 -0
  13. data/bin/passenger-memory-stats +171 -0
  14. data/bin/passenger-status +211 -0
  15. data/build/agents.rb +80 -0
  16. data/build/apache2.rb +168 -0
  17. data/build/basics.rb +105 -0
  18. data/build/common_library.rb +268 -0
  19. data/build/config.rb +42 -0
  20. data/build/cplusplus_support.rb +61 -0
  21. data/build/cxx_tests.rb +219 -0
  22. data/build/documentation.rb +84 -0
  23. data/build/gempackagetask.rb +99 -0
  24. data/build/integration_tests.rb +64 -0
  25. data/build/misc.rb +153 -0
  26. data/build/nginx.rb +72 -0
  27. data/build/oxt_tests.rb +59 -0
  28. data/build/packagetask.rb +186 -0
  29. data/build/packaging.rb +194 -0
  30. data/build/rake_extensions.rb +182 -0
  31. data/build/rdoctask.rb +209 -0
  32. data/build/rpm.rb +98 -0
  33. data/build/ruby_extension.rb +52 -0
  34. data/build/ruby_tests.rb +49 -0
  35. data/build/test_basics.rb +43 -0
  36. data/debian/README.Debian +15 -0
  37. data/debian/changelog +185 -0
  38. data/debian/compat +1 -0
  39. data/debian/control +49 -0
  40. data/debian/copyright +20 -0
  41. data/debian/libapache2-mod-passenger.install +1 -0
  42. data/debian/libapache2-mod-passenger.postinst +36 -0
  43. data/debian/libapache2-mod-passenger.prerm +15 -0
  44. data/debian/passenger-common.install +4 -0
  45. data/debian/passenger.conf +4 -0
  46. data/debian/passenger.load +1 -0
  47. data/debian/prerm +2 -0
  48. data/debian/rules +37 -0
  49. data/debian/watch +3 -0
  50. data/dev/copy_boost_headers.rb +155 -0
  51. data/dev/find_owner_pipe_leaks.rb +128 -0
  52. data/dev/render_error_pages.rb +116 -0
  53. data/doc/ApplicationPool algorithm.txt +615 -0
  54. data/doc/Architectural overview.html +1 -0
  55. data/doc/Architectural overview.txt +334 -0
  56. data/doc/Doxyfile +241 -0
  57. data/doc/Security of user switching support.html +1 -0
  58. data/doc/Security of user switching support.txt +197 -0
  59. data/doc/Users guide Apache.html +1 -0
  60. data/doc/Users guide Apache.txt +2208 -0
  61. data/doc/Users guide Nginx.html +1 -0
  62. data/doc/Users guide Nginx.txt +1394 -0
  63. data/doc/Users guide Standalone.html +1 -0
  64. data/doc/Users guide Standalone.txt +40 -0
  65. data/doc/definitions.h +5 -0
  66. data/doc/images/by_sa.png +0 -0
  67. data/doc/images/conservative_spawning.png +0 -0
  68. data/doc/images/conservative_spawning.svg +248 -0
  69. data/doc/images/icons/README +5 -0
  70. data/doc/images/icons/callouts/1.png +0 -0
  71. data/doc/images/icons/callouts/10.png +0 -0
  72. data/doc/images/icons/callouts/11.png +0 -0
  73. data/doc/images/icons/callouts/12.png +0 -0
  74. data/doc/images/icons/callouts/13.png +0 -0
  75. data/doc/images/icons/callouts/14.png +0 -0
  76. data/doc/images/icons/callouts/15.png +0 -0
  77. data/doc/images/icons/callouts/2.png +0 -0
  78. data/doc/images/icons/callouts/3.png +0 -0
  79. data/doc/images/icons/callouts/4.png +0 -0
  80. data/doc/images/icons/callouts/5.png +0 -0
  81. data/doc/images/icons/callouts/6.png +0 -0
  82. data/doc/images/icons/callouts/7.png +0 -0
  83. data/doc/images/icons/callouts/8.png +0 -0
  84. data/doc/images/icons/callouts/9.png +0 -0
  85. data/doc/images/icons/caution.png +0 -0
  86. data/doc/images/icons/example.png +0 -0
  87. data/doc/images/icons/home.png +0 -0
  88. data/doc/images/icons/important.png +0 -0
  89. data/doc/images/icons/next.png +0 -0
  90. data/doc/images/icons/note.png +0 -0
  91. data/doc/images/icons/prev.png +0 -0
  92. data/doc/images/icons/tip.png +0 -0
  93. data/doc/images/icons/up.png +0 -0
  94. data/doc/images/icons/warning.png +0 -0
  95. data/doc/images/passenger_architecture.png +0 -0
  96. data/doc/images/passenger_architecture.svg +401 -0
  97. data/doc/images/phusion_banner.png +0 -0
  98. data/doc/images/smart-lv2.png +0 -0
  99. data/doc/images/smart-lv2.svg +320 -0
  100. data/doc/images/spawn_server_architecture.png +0 -0
  101. data/doc/images/spawn_server_architecture.svg +655 -0
  102. data/doc/images/typical_isolated_web_application.png +0 -0
  103. data/doc/images/typical_isolated_web_application.svg +213 -0
  104. data/doc/rdoc/classes/ConditionVariable.html +215 -0
  105. data/doc/rdoc/classes/Exception.html +120 -0
  106. data/doc/rdoc/classes/GC.html +113 -0
  107. data/doc/rdoc/classes/IO.html +221 -0
  108. data/doc/rdoc/classes/PhusionPassenger.html +397 -0
  109. data/doc/rdoc/classes/PhusionPassenger/AbstractInstaller.html +180 -0
  110. data/doc/rdoc/classes/PhusionPassenger/AbstractRequestHandler.html +647 -0
  111. data/doc/rdoc/classes/PhusionPassenger/AbstractServer.html +654 -0
  112. data/doc/rdoc/classes/PhusionPassenger/AbstractServer/InvalidPassword.html +92 -0
  113. data/doc/rdoc/classes/PhusionPassenger/AbstractServer/ServerAlreadyStarted.html +97 -0
  114. data/doc/rdoc/classes/PhusionPassenger/AbstractServer/ServerError.html +96 -0
  115. data/doc/rdoc/classes/PhusionPassenger/AbstractServer/ServerNotStarted.html +97 -0
  116. data/doc/rdoc/classes/PhusionPassenger/AbstractServer/UnknownMessage.html +96 -0
  117. data/doc/rdoc/classes/PhusionPassenger/AbstractServerCollection.html +619 -0
  118. data/doc/rdoc/classes/PhusionPassenger/AdminTools.html +142 -0
  119. data/doc/rdoc/classes/PhusionPassenger/AdminTools/MemoryStats.html +368 -0
  120. data/doc/rdoc/classes/PhusionPassenger/AdminTools/MemoryStats/Process.html +231 -0
  121. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance.html +588 -0
  122. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/CorruptedDirectoryError.html +92 -0
  123. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/GenerationsAbsentError.html +92 -0
  124. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/Group.html +147 -0
  125. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/Process.html +279 -0
  126. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/RoleDeniedError.html +92 -0
  127. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/StaleDirectoryError.html +92 -0
  128. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/Stats.html +123 -0
  129. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ServerInstance/UnsupportedGenerationStructureVersionError.html +92 -0
  130. data/doc/rdoc/classes/PhusionPassenger/AnalyticsLogger.html +341 -0
  131. data/doc/rdoc/classes/PhusionPassenger/AnalyticsLogger/Log.html +294 -0
  132. data/doc/rdoc/classes/PhusionPassenger/AnalyticsLogger/SharedData.html +199 -0
  133. data/doc/rdoc/classes/PhusionPassenger/AppInitError.html +155 -0
  134. data/doc/rdoc/classes/PhusionPassenger/AppProcess.html +367 -0
  135. data/doc/rdoc/classes/PhusionPassenger/ClassicRails.html +95 -0
  136. data/doc/rdoc/classes/PhusionPassenger/ClassicRails/ApplicationSpawner.html +351 -0
  137. data/doc/rdoc/classes/PhusionPassenger/ClassicRails/ApplicationSpawner/Error.html +98 -0
  138. data/doc/rdoc/classes/PhusionPassenger/ClassicRails/CGIFixed.html +200 -0
  139. data/doc/rdoc/classes/PhusionPassenger/ClassicRails/FrameworkSpawner.html +410 -0
  140. data/doc/rdoc/classes/PhusionPassenger/ClassicRails/FrameworkSpawner/Error.html +98 -0
  141. data/doc/rdoc/classes/PhusionPassenger/ClassicRails/RequestHandler.html +156 -0
  142. data/doc/rdoc/classes/PhusionPassenger/ClassicRailsExtensions.html +115 -0
  143. data/doc/rdoc/classes/PhusionPassenger/ClassicRailsExtensions/AnalyticsLogging.html +202 -0
  144. data/doc/rdoc/classes/PhusionPassenger/ConsoleTextTemplate.html +172 -0
  145. data/doc/rdoc/classes/PhusionPassenger/DebugLogging.html +273 -0
  146. data/doc/rdoc/classes/PhusionPassenger/FrameworkInitError.html +145 -0
  147. data/doc/rdoc/classes/PhusionPassenger/HTMLTemplate.html +162 -0
  148. data/doc/rdoc/classes/PhusionPassenger/InitializationError.html +141 -0
  149. data/doc/rdoc/classes/PhusionPassenger/InvalidPath.html +92 -0
  150. data/doc/rdoc/classes/PhusionPassenger/MessageChannel.html +673 -0
  151. data/doc/rdoc/classes/PhusionPassenger/MessageChannel/InvalidHashError.html +92 -0
  152. data/doc/rdoc/classes/PhusionPassenger/MessageClient.html +415 -0
  153. data/doc/rdoc/classes/PhusionPassenger/NativeSupportLoader.html +134 -0
  154. data/doc/rdoc/classes/PhusionPassenger/Packaging.html +129 -0
  155. data/doc/rdoc/classes/PhusionPassenger/PlatformInfo.html +1972 -0
  156. data/doc/rdoc/classes/PhusionPassenger/Plugin.html +237 -0
  157. data/doc/rdoc/classes/PhusionPassenger/Rack.html +91 -0
  158. data/doc/rdoc/classes/PhusionPassenger/Rack/ApplicationSpawner.html +312 -0
  159. data/doc/rdoc/classes/PhusionPassenger/Rack/ApplicationSpawner/Error.html +98 -0
  160. data/doc/rdoc/classes/PhusionPassenger/Rack/RequestHandler.html +218 -0
  161. data/doc/rdoc/classes/PhusionPassenger/Rails3Extensions.html +114 -0
  162. data/doc/rdoc/classes/PhusionPassenger/Rails3Extensions/AnalyticsLogging.html +259 -0
  163. data/doc/rdoc/classes/PhusionPassenger/Rails3Extensions/AnalyticsLogging/ACExtension.html +139 -0
  164. data/doc/rdoc/classes/PhusionPassenger/Rails3Extensions/AnalyticsLogging/ASBenchmarkableExtension.html +118 -0
  165. data/doc/rdoc/classes/PhusionPassenger/Rails3Extensions/AnalyticsLogging/ExceptionLogger.html +135 -0
  166. data/doc/rdoc/classes/PhusionPassenger/SpawnManager.html +378 -0
  167. data/doc/rdoc/classes/PhusionPassenger/Standalone.html +111 -0
  168. data/doc/rdoc/classes/PhusionPassenger/Standalone/AppFinder.html +252 -0
  169. data/doc/rdoc/classes/PhusionPassenger/Standalone/Command.html +161 -0
  170. data/doc/rdoc/classes/PhusionPassenger/Standalone/ConfigFile.html +368 -0
  171. data/doc/rdoc/classes/PhusionPassenger/Standalone/ConfigFile/DisallowedContextError.html +132 -0
  172. data/doc/rdoc/classes/PhusionPassenger/Standalone/HelpCommand.html +151 -0
  173. data/doc/rdoc/classes/PhusionPassenger/Standalone/Main.html +189 -0
  174. data/doc/rdoc/classes/PhusionPassenger/Standalone/PackageRuntimeCommand.html +177 -0
  175. data/doc/rdoc/classes/PhusionPassenger/Standalone/RuntimeInstaller.html +341 -0
  176. data/doc/rdoc/classes/PhusionPassenger/Standalone/StartCommand.html +203 -0
  177. data/doc/rdoc/classes/PhusionPassenger/Standalone/StatusCommand.html +156 -0
  178. data/doc/rdoc/classes/PhusionPassenger/Standalone/StopCommand.html +168 -0
  179. data/doc/rdoc/classes/PhusionPassenger/Standalone/Utils.html +86 -0
  180. data/doc/rdoc/classes/PhusionPassenger/Standalone/VersionCommand.html +135 -0
  181. data/doc/rdoc/classes/PhusionPassenger/UnknownError.html +125 -0
  182. data/doc/rdoc/classes/PhusionPassenger/Utils.html +1543 -0
  183. data/doc/rdoc/classes/PhusionPassenger/Utils/FileSystemWatcher.html +204 -0
  184. data/doc/rdoc/classes/PhusionPassenger/Utils/FileSystemWatcher/DirInfo.html +171 -0
  185. data/doc/rdoc/classes/PhusionPassenger/Utils/FileSystemWatcher/FileInfo.html +140 -0
  186. data/doc/rdoc/classes/PhusionPassenger/Utils/HostsFileParser.html +260 -0
  187. data/doc/rdoc/classes/PhusionPassenger/Utils/PseudoIO.html +169 -0
  188. data/doc/rdoc/classes/PhusionPassenger/Utils/RewindableInput.html +265 -0
  189. data/doc/rdoc/classes/PhusionPassenger/Utils/RewindableInput/Tempfile.html +120 -0
  190. data/doc/rdoc/classes/PhusionPassenger/Utils/UnseekableSocket.html +561 -0
  191. data/doc/rdoc/classes/PhusionPassenger/VersionNotFound.html +140 -0
  192. data/doc/rdoc/classes/PhusionPassenger/WSGI.html +89 -0
  193. data/doc/rdoc/classes/PhusionPassenger/WSGI/ApplicationSpawner.html +182 -0
  194. data/doc/rdoc/classes/Process.html +115 -0
  195. data/doc/rdoc/classes/Signal.html +139 -0
  196. data/doc/rdoc/created.rid +1 -0
  197. data/doc/rdoc/files/DEVELOPERS_TXT.html +280 -0
  198. data/doc/rdoc/files/README.html +157 -0
  199. data/doc/rdoc/files/lib/phusion_passenger/abstract_installer_rb.html +130 -0
  200. data/doc/rdoc/files/lib/phusion_passenger/abstract_request_handler_rb.html +135 -0
  201. data/doc/rdoc/files/lib/phusion_passenger/abstract_server_collection_rb.html +126 -0
  202. data/doc/rdoc/files/lib/phusion_passenger/abstract_server_rb.html +128 -0
  203. data/doc/rdoc/files/lib/phusion_passenger/admin_tools/memory_stats_rb.html +126 -0
  204. data/doc/rdoc/files/lib/phusion_passenger/admin_tools/server_instance_rb.html +132 -0
  205. data/doc/rdoc/files/lib/phusion_passenger/admin_tools_rb.html +122 -0
  206. data/doc/rdoc/files/lib/phusion_passenger/analytics_logger_rb.html +129 -0
  207. data/doc/rdoc/files/lib/phusion_passenger/app_process_rb.html +127 -0
  208. data/doc/rdoc/files/lib/phusion_passenger/classic_rails/application_spawner_rb.html +141 -0
  209. data/doc/rdoc/files/lib/phusion_passenger/classic_rails/cgi_fixed_rb.html +126 -0
  210. data/doc/rdoc/files/lib/phusion_passenger/classic_rails/framework_spawner_rb.html +146 -0
  211. data/doc/rdoc/files/lib/phusion_passenger/classic_rails/request_handler_rb.html +125 -0
  212. data/doc/rdoc/files/lib/phusion_passenger/classic_rails_extensions/init_rb.html +132 -0
  213. data/doc/rdoc/files/lib/phusion_passenger/console_text_template_rb.html +126 -0
  214. data/doc/rdoc/files/lib/phusion_passenger/constants_rb.html +122 -0
  215. data/doc/rdoc/files/lib/phusion_passenger/debug_logging_rb.html +122 -0
  216. data/doc/rdoc/files/lib/phusion_passenger/dependencies_rb.html +147 -0
  217. data/doc/rdoc/files/lib/phusion_passenger/exceptions_rb.html +122 -0
  218. data/doc/rdoc/files/lib/phusion_passenger/html_template_rb.html +127 -0
  219. data/doc/rdoc/files/lib/phusion_passenger/message_channel_rb.html +120 -0
  220. data/doc/rdoc/files/lib/phusion_passenger/message_client_rb.html +127 -0
  221. data/doc/rdoc/files/lib/phusion_passenger/native_support_rb.html +132 -0
  222. data/doc/rdoc/files/lib/phusion_passenger/packaging_rb.html +122 -0
  223. data/doc/rdoc/files/lib/phusion_passenger/platform_info/apache_rb.html +127 -0
  224. data/doc/rdoc/files/lib/phusion_passenger/platform_info/binary_compatibility_rb.html +129 -0
  225. data/doc/rdoc/files/lib/phusion_passenger/platform_info/compiler_rb.html +127 -0
  226. data/doc/rdoc/files/lib/phusion_passenger/platform_info/curl_rb.html +126 -0
  227. data/doc/rdoc/files/lib/phusion_passenger/platform_info/documentation_tools_rb.html +126 -0
  228. data/doc/rdoc/files/lib/phusion_passenger/platform_info/linux_rb.html +126 -0
  229. data/doc/rdoc/files/lib/phusion_passenger/platform_info/operating_system_rb.html +127 -0
  230. data/doc/rdoc/files/lib/phusion_passenger/platform_info/ruby_rb.html +128 -0
  231. data/doc/rdoc/files/lib/phusion_passenger/platform_info/zlib_rb.html +126 -0
  232. data/doc/rdoc/files/lib/phusion_passenger/platform_info_rb.html +122 -0
  233. data/doc/rdoc/files/lib/phusion_passenger/plugin_rb.html +127 -0
  234. data/doc/rdoc/files/lib/phusion_passenger/public_api_rb.html +127 -0
  235. data/doc/rdoc/files/lib/phusion_passenger/rack/application_spawner_rb.html +137 -0
  236. data/doc/rdoc/files/lib/phusion_passenger/rack/request_handler_rb.html +125 -0
  237. data/doc/rdoc/files/lib/phusion_passenger/rails3_extensions/init_rb.html +127 -0
  238. data/doc/rdoc/files/lib/phusion_passenger/simple_benchmarking_rb.html +122 -0
  239. data/doc/rdoc/files/lib/phusion_passenger/spawn_manager_rb.html +160 -0
  240. data/doc/rdoc/files/lib/phusion_passenger/standalone/app_finder_rb.html +127 -0
  241. data/doc/rdoc/files/lib/phusion_passenger/standalone/command_rb.html +136 -0
  242. data/doc/rdoc/files/lib/phusion_passenger/standalone/config_file_rb.html +126 -0
  243. data/doc/rdoc/files/lib/phusion_passenger/standalone/help_command_rb.html +126 -0
  244. data/doc/rdoc/files/lib/phusion_passenger/standalone/main_rb.html +126 -0
  245. data/doc/rdoc/files/lib/phusion_passenger/standalone/package_runtime_command_rb.html +127 -0
  246. data/doc/rdoc/files/lib/phusion_passenger/standalone/runtime_installer_rb.html +133 -0
  247. data/doc/rdoc/files/lib/phusion_passenger/standalone/start_command_rb.html +136 -0
  248. data/doc/rdoc/files/lib/phusion_passenger/standalone/status_command_rb.html +126 -0
  249. data/doc/rdoc/files/lib/phusion_passenger/standalone/stop_command_rb.html +126 -0
  250. data/doc/rdoc/files/lib/phusion_passenger/standalone/utils_rb.html +126 -0
  251. data/doc/rdoc/files/lib/phusion_passenger/standalone/version_command_rb.html +127 -0
  252. data/doc/rdoc/files/lib/phusion_passenger/utils/file_system_watcher_rb.html +126 -0
  253. data/doc/rdoc/files/lib/phusion_passenger/utils/hosts_file_parser_rb.html +120 -0
  254. data/doc/rdoc/files/lib/phusion_passenger/utils/rewindable_input_rb.html +100 -0
  255. data/doc/rdoc/files/lib/phusion_passenger/utils/tmpdir_rb.html +122 -0
  256. data/doc/rdoc/files/lib/phusion_passenger/utils/unseekable_socket_rb.html +126 -0
  257. data/doc/rdoc/files/lib/phusion_passenger/utils_rb.html +179 -0
  258. data/doc/rdoc/files/lib/phusion_passenger/wsgi/application_spawner_rb.html +132 -0
  259. data/doc/rdoc/fr_class_index.html +138 -0
  260. data/doc/rdoc/fr_file_index.html +108 -0
  261. data/doc/rdoc/fr_method_index.html +433 -0
  262. data/doc/rdoc/index.html +26 -0
  263. data/doc/rdoc/rdoc-style.css +187 -0
  264. data/doc/template/horo.rb +613 -0
  265. data/doc/users_guide_snippets/analysis_and_system_maintenance.txt +201 -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 +303 -0
  269. data/doc/users_guide_snippets/global_queueing_explained.txt +74 -0
  270. data/doc/users_guide_snippets/passenger_spawn_method.txt +49 -0
  271. data/doc/users_guide_snippets/rackup_specifications.txt +71 -0
  272. data/doc/users_guide_snippets/tips.txt +207 -0
  273. data/doc/users_guide_snippets/under_the_hood/page_caching_support.txt +22 -0
  274. data/ext/apache2/Bucket.cpp +190 -0
  275. data/ext/apache2/Bucket.h +87 -0
  276. data/ext/apache2/Configuration.cpp +717 -0
  277. data/ext/apache2/Configuration.h +51 -0
  278. data/ext/apache2/Configuration.hpp +462 -0
  279. data/ext/apache2/DirectoryMapper.h +280 -0
  280. data/ext/apache2/HelperAgent.cpp +365 -0
  281. data/ext/apache2/Hooks.cpp +1757 -0
  282. data/ext/apache2/Hooks.h +45 -0
  283. data/ext/apache2/mod_passenger.c +44 -0
  284. data/ext/boost/algorithm/string/case_conv.hpp +176 -0
  285. data/ext/boost/algorithm/string/compare.hpp +199 -0
  286. data/ext/boost/algorithm/string/concept.hpp +83 -0
  287. data/ext/boost/algorithm/string/config.hpp +28 -0
  288. data/ext/boost/algorithm/string/constants.hpp +36 -0
  289. data/ext/boost/algorithm/string/detail/case_conv.hpp +121 -0
  290. data/ext/boost/algorithm/string/detail/find_format.hpp +204 -0
  291. data/ext/boost/algorithm/string/detail/find_format_all.hpp +273 -0
  292. data/ext/boost/algorithm/string/detail/find_format_store.hpp +89 -0
  293. data/ext/boost/algorithm/string/detail/finder.hpp +646 -0
  294. data/ext/boost/algorithm/string/detail/formatter.hpp +94 -0
  295. data/ext/boost/algorithm/string/detail/replace_storage.hpp +159 -0
  296. data/ext/boost/algorithm/string/detail/sequence.hpp +200 -0
  297. data/ext/boost/algorithm/string/detail/util.hpp +106 -0
  298. data/ext/boost/algorithm/string/erase.hpp +844 -0
  299. data/ext/boost/algorithm/string/find_format.hpp +287 -0
  300. data/ext/boost/algorithm/string/finder.hpp +270 -0
  301. data/ext/boost/algorithm/string/formatter.hpp +103 -0
  302. data/ext/boost/algorithm/string/replace.hpp +928 -0
  303. data/ext/boost/algorithm/string/sequence_traits.hpp +193 -0
  304. data/ext/boost/algorithm/string/yes_no_type.hpp +33 -0
  305. data/ext/boost/assert.hpp +50 -0
  306. data/ext/boost/bind.hpp +24 -0
  307. data/ext/boost/bind/arg.hpp +62 -0
  308. data/ext/boost/bind/bind.hpp +1751 -0
  309. data/ext/boost/bind/bind_cc.hpp +117 -0
  310. data/ext/boost/bind/bind_mf2_cc.hpp +228 -0
  311. data/ext/boost/bind/bind_mf_cc.hpp +227 -0
  312. data/ext/boost/bind/bind_template.hpp +345 -0
  313. data/ext/boost/bind/mem_fn.hpp +389 -0
  314. data/ext/boost/bind/mem_fn_cc.hpp +103 -0
  315. data/ext/boost/bind/mem_fn_template.hpp +1047 -0
  316. data/ext/boost/bind/placeholders.hpp +69 -0
  317. data/ext/boost/bind/storage.hpp +475 -0
  318. data/ext/boost/call_traits.hpp +24 -0
  319. data/ext/boost/checked_delete.hpp +69 -0
  320. data/ext/boost/concept/assert.hpp +46 -0
  321. data/ext/boost/concept/detail/backward_compatibility.hpp +16 -0
  322. data/ext/boost/concept/detail/concept_def.hpp +51 -0
  323. data/ext/boost/concept/detail/concept_undef.hpp +5 -0
  324. data/ext/boost/concept/detail/general.hpp +75 -0
  325. data/ext/boost/concept/detail/has_constraints.hpp +50 -0
  326. data/ext/boost/concept/usage.hpp +44 -0
  327. data/ext/boost/concept_check.hpp +1007 -0
  328. data/ext/boost/config.hpp +70 -0
  329. data/ext/boost/config/abi/borland_prefix.hpp +27 -0
  330. data/ext/boost/config/abi/borland_suffix.hpp +12 -0
  331. data/ext/boost/config/abi/msvc_prefix.hpp +22 -0
  332. data/ext/boost/config/abi/msvc_suffix.hpp +8 -0
  333. data/ext/boost/config/abi_prefix.hpp +25 -0
  334. data/ext/boost/config/abi_suffix.hpp +27 -0
  335. data/ext/boost/config/auto_link.hpp +420 -0
  336. data/ext/boost/config/compiler/borland.hpp +275 -0
  337. data/ext/boost/config/compiler/clang.hpp +62 -0
  338. data/ext/boost/config/compiler/codegear.hpp +177 -0
  339. data/ext/boost/config/compiler/comeau.hpp +59 -0
  340. data/ext/boost/config/compiler/common_edg.hpp +99 -0
  341. data/ext/boost/config/compiler/compaq_cxx.hpp +19 -0
  342. data/ext/boost/config/compiler/digitalmars.hpp +93 -0
  343. data/ext/boost/config/compiler/gcc.hpp +243 -0
  344. data/ext/boost/config/compiler/gcc_xml.hpp +55 -0
  345. data/ext/boost/config/compiler/greenhills.hpp +28 -0
  346. data/ext/boost/config/compiler/hp_acc.hpp +127 -0
  347. data/ext/boost/config/compiler/intel.hpp +196 -0
  348. data/ext/boost/config/compiler/kai.hpp +33 -0
  349. data/ext/boost/config/compiler/metrowerks.hpp +139 -0
  350. data/ext/boost/config/compiler/mpw.hpp +81 -0
  351. data/ext/boost/config/compiler/nvcc.hpp +86 -0
  352. data/ext/boost/config/compiler/pgi.hpp +77 -0
  353. data/ext/boost/config/compiler/sgi_mipspro.hpp +29 -0
  354. data/ext/boost/config/compiler/sunpro_cc.hpp +144 -0
  355. data/ext/boost/config/compiler/vacpp.hpp +96 -0
  356. data/ext/boost/config/compiler/visualc.hpp +274 -0
  357. data/ext/boost/config/no_tr1/cmath.hpp +28 -0
  358. data/ext/boost/config/no_tr1/complex.hpp +28 -0
  359. data/ext/boost/config/no_tr1/functional.hpp +28 -0
  360. data/ext/boost/config/no_tr1/memory.hpp +28 -0
  361. data/ext/boost/config/no_tr1/utility.hpp +28 -0
  362. data/ext/boost/config/platform/aix.hpp +33 -0
  363. data/ext/boost/config/platform/amigaos.hpp +15 -0
  364. data/ext/boost/config/platform/beos.hpp +26 -0
  365. data/ext/boost/config/platform/bsd.hpp +86 -0
  366. data/ext/boost/config/platform/cygwin.hpp +48 -0
  367. data/ext/boost/config/platform/hpux.hpp +87 -0
  368. data/ext/boost/config/platform/irix.hpp +31 -0
  369. data/ext/boost/config/platform/linux.hpp +98 -0
  370. data/ext/boost/config/platform/macos.hpp +86 -0
  371. data/ext/boost/config/platform/qnxnto.hpp +31 -0
  372. data/ext/boost/config/platform/solaris.hpp +28 -0
  373. data/ext/boost/config/platform/symbian.hpp +94 -0
  374. data/ext/boost/config/platform/vxworks.hpp +31 -0
  375. data/ext/boost/config/platform/win32.hpp +65 -0
  376. data/ext/boost/config/posix_features.hpp +95 -0
  377. data/ext/boost/config/requires_threads.hpp +92 -0
  378. data/ext/boost/config/select_compiler_config.hpp +129 -0
  379. data/ext/boost/config/select_platform_config.hpp +98 -0
  380. data/ext/boost/config/select_stdlib_config.hpp +77 -0
  381. data/ext/boost/config/stdlib/dinkumware.hpp +148 -0
  382. data/ext/boost/config/stdlib/libcomo.hpp +72 -0
  383. data/ext/boost/config/stdlib/libstdcpp3.hpp +128 -0
  384. data/ext/boost/config/stdlib/modena.hpp +56 -0
  385. data/ext/boost/config/stdlib/msl.hpp +84 -0
  386. data/ext/boost/config/stdlib/roguewave.hpp +180 -0
  387. data/ext/boost/config/stdlib/sgi.hpp +137 -0
  388. data/ext/boost/config/stdlib/stlport.hpp +237 -0
  389. data/ext/boost/config/stdlib/vacpp.hpp +44 -0
  390. data/ext/boost/config/suffix.hpp +639 -0
  391. data/ext/boost/config/user.hpp +124 -0
  392. data/ext/boost/config/warning_disable.hpp +47 -0
  393. data/ext/boost/cstdint.hpp +504 -0
  394. data/ext/boost/current_function.hpp +67 -0
  395. data/ext/boost/date_time/adjust_functors.hpp +178 -0
  396. data/ext/boost/date_time/c_time.hpp +107 -0
  397. data/ext/boost/date_time/compiler_config.hpp +171 -0
  398. data/ext/boost/date_time/constrained_value.hpp +121 -0
  399. data/ext/boost/date_time/date.hpp +208 -0
  400. data/ext/boost/date_time/date_clock_device.hpp +77 -0
  401. data/ext/boost/date_time/date_defs.hpp +26 -0
  402. data/ext/boost/date_time/date_duration.hpp +146 -0
  403. data/ext/boost/date_time/date_duration_types.hpp +269 -0
  404. data/ext/boost/date_time/date_facet.hpp +764 -0
  405. data/ext/boost/date_time/date_format_simple.hpp +159 -0
  406. data/ext/boost/date_time/date_formatting.hpp +127 -0
  407. data/ext/boost/date_time/date_formatting_limited.hpp +121 -0
  408. data/ext/boost/date_time/date_formatting_locales.hpp +233 -0
  409. data/ext/boost/date_time/date_generator_formatter.hpp +265 -0
  410. data/ext/boost/date_time/date_generator_parser.hpp +330 -0
  411. data/ext/boost/date_time/date_generators.hpp +509 -0
  412. data/ext/boost/date_time/date_iterator.hpp +101 -0
  413. data/ext/boost/date_time/date_names_put.hpp +320 -0
  414. data/ext/boost/date_time/date_parsing.hpp +316 -0
  415. data/ext/boost/date_time/dst_rules.hpp +391 -0
  416. data/ext/boost/date_time/filetime_functions.hpp +170 -0
  417. data/ext/boost/date_time/format_date_parser.hpp +743 -0
  418. data/ext/boost/date_time/gregorian/conversion.hpp +68 -0
  419. data/ext/boost/date_time/gregorian/formatters.hpp +162 -0
  420. data/ext/boost/date_time/gregorian/formatters_limited.hpp +81 -0
  421. data/ext/boost/date_time/gregorian/greg_calendar.hpp +48 -0
  422. data/ext/boost/date_time/gregorian/greg_date.hpp +136 -0
  423. data/ext/boost/date_time/gregorian/greg_day.hpp +57 -0
  424. data/ext/boost/date_time/gregorian/greg_day_of_year.hpp +38 -0
  425. data/ext/boost/date_time/gregorian/greg_duration.hpp +134 -0
  426. data/ext/boost/date_time/gregorian/greg_duration_types.hpp +43 -0
  427. data/ext/boost/date_time/gregorian/greg_month.hpp +105 -0
  428. data/ext/boost/date_time/gregorian/greg_weekday.hpp +66 -0
  429. data/ext/boost/date_time/gregorian/greg_year.hpp +53 -0
  430. data/ext/boost/date_time/gregorian/greg_ymd.hpp +33 -0
  431. data/ext/boost/date_time/gregorian/gregorian.hpp +38 -0
  432. data/ext/boost/date_time/gregorian/gregorian_io.hpp +784 -0
  433. data/ext/boost/date_time/gregorian/gregorian_types.hpp +109 -0
  434. data/ext/boost/date_time/gregorian/parsers.hpp +91 -0
  435. data/ext/boost/date_time/gregorian_calendar.hpp +70 -0
  436. data/ext/boost/date_time/gregorian_calendar.ipp +219 -0
  437. data/ext/boost/date_time/int_adapter.hpp +509 -0
  438. data/ext/boost/date_time/iso_format.hpp +303 -0
  439. data/ext/boost/date_time/locale_config.hpp +31 -0
  440. data/ext/boost/date_time/microsec_time_clock.hpp +127 -0
  441. data/ext/boost/date_time/parse_format_base.hpp +29 -0
  442. data/ext/boost/date_time/period.hpp +377 -0
  443. data/ext/boost/date_time/period_formatter.hpp +196 -0
  444. data/ext/boost/date_time/period_parser.hpp +198 -0
  445. data/ext/boost/date_time/posix_time/conversion.hpp +94 -0
  446. data/ext/boost/date_time/posix_time/date_duration_operators.hpp +114 -0
  447. data/ext/boost/date_time/posix_time/posix_time.hpp +39 -0
  448. data/ext/boost/date_time/posix_time/posix_time_config.hpp +178 -0
  449. data/ext/boost/date_time/posix_time/posix_time_duration.hpp +82 -0
  450. data/ext/boost/date_time/posix_time/posix_time_io.hpp +239 -0
  451. data/ext/boost/date_time/posix_time/posix_time_system.hpp +68 -0
  452. data/ext/boost/date_time/posix_time/posix_time_types.hpp +55 -0
  453. data/ext/boost/date_time/posix_time/ptime.hpp +65 -0
  454. data/ext/boost/date_time/posix_time/time_formatters.hpp +289 -0
  455. data/ext/boost/date_time/posix_time/time_parsers.hpp +44 -0
  456. data/ext/boost/date_time/posix_time/time_period.hpp +29 -0
  457. data/ext/boost/date_time/special_defs.hpp +25 -0
  458. data/ext/boost/date_time/special_values_formatter.hpp +96 -0
  459. data/ext/boost/date_time/special_values_parser.hpp +159 -0
  460. data/ext/boost/date_time/string_convert.hpp +33 -0
  461. data/ext/boost/date_time/string_parse_tree.hpp +278 -0
  462. data/ext/boost/date_time/strings_from_facet.hpp +125 -0
  463. data/ext/boost/date_time/time.hpp +191 -0
  464. data/ext/boost/date_time/time_clock.hpp +83 -0
  465. data/ext/boost/date_time/time_defs.hpp +43 -0
  466. data/ext/boost/date_time/time_duration.hpp +282 -0
  467. data/ext/boost/date_time/time_facet.hpp +1367 -0
  468. data/ext/boost/date_time/time_formatting_streams.hpp +122 -0
  469. data/ext/boost/date_time/time_iterator.hpp +52 -0
  470. data/ext/boost/date_time/time_parsing.hpp +321 -0
  471. data/ext/boost/date_time/time_resolution_traits.hpp +144 -0
  472. data/ext/boost/date_time/time_system_counted.hpp +254 -0
  473. data/ext/boost/date_time/time_system_split.hpp +207 -0
  474. data/ext/boost/date_time/wrapping_int.hpp +169 -0
  475. data/ext/boost/date_time/year_month_day.hpp +45 -0
  476. data/ext/boost/detail/call_traits.hpp +164 -0
  477. data/ext/boost/detail/endian.hpp +76 -0
  478. data/ext/boost/detail/indirect_traits.hpp +487 -0
  479. data/ext/boost/detail/iterator.hpp +494 -0
  480. data/ext/boost/detail/lcast_precision.hpp +184 -0
  481. data/ext/boost/detail/limits.hpp +449 -0
  482. data/ext/boost/detail/no_exceptions_support.hpp +87 -0
  483. data/ext/boost/detail/reference_content.hpp +141 -0
  484. data/ext/boost/detail/sp_typeinfo.hpp +129 -0
  485. data/ext/boost/detail/workaround.hpp +267 -0
  486. data/ext/boost/enable_shared_from_this.hpp +18 -0
  487. data/ext/boost/exception/current_exception_cast.hpp +43 -0
  488. data/ext/boost/exception/detail/attribute_noreturn.hpp +17 -0
  489. data/ext/boost/exception/detail/error_info_impl.hpp +75 -0
  490. data/ext/boost/exception/detail/exception_ptr.hpp +431 -0
  491. data/ext/boost/exception/detail/is_output_streamable.hpp +60 -0
  492. data/ext/boost/exception/detail/object_hex_dump.hpp +50 -0
  493. data/ext/boost/exception/detail/type_info.hpp +83 -0
  494. data/ext/boost/exception/diagnostic_information.hpp +184 -0
  495. data/ext/boost/exception/exception.hpp +436 -0
  496. data/ext/boost/exception/get_error_info.hpp +130 -0
  497. data/ext/boost/exception/info.hpp +200 -0
  498. data/ext/boost/exception/to_string.hpp +83 -0
  499. data/ext/boost/exception/to_string_stub.hpp +109 -0
  500. data/ext/boost/exception_ptr.hpp +11 -0
  501. data/ext/boost/function.hpp +66 -0
  502. data/ext/boost/function/detail/function_iterate.hpp +16 -0
  503. data/ext/boost/function/detail/maybe_include.hpp +267 -0
  504. data/ext/boost/function/detail/prologue.hpp +26 -0
  505. data/ext/boost/function/function_base.hpp +904 -0
  506. data/ext/boost/function/function_fwd.hpp +70 -0
  507. data/ext/boost/function/function_template.hpp +1158 -0
  508. data/ext/boost/function_equal.hpp +28 -0
  509. data/ext/boost/get_pointer.hpp +33 -0
  510. data/ext/boost/implicit_cast.hpp +29 -0
  511. data/ext/boost/integer.hpp +257 -0
  512. data/ext/boost/integer_fwd.hpp +180 -0
  513. data/ext/boost/integer_traits.hpp +261 -0
  514. data/ext/boost/io/ios_state.hpp +439 -0
  515. data/ext/boost/io_fwd.hpp +67 -0
  516. data/ext/boost/is_placeholder.hpp +31 -0
  517. data/ext/boost/iterator.hpp +59 -0
  518. data/ext/boost/iterator/detail/config_def.hpp +137 -0
  519. data/ext/boost/iterator/detail/config_undef.hpp +25 -0
  520. data/ext/boost/iterator/detail/enable_if.hpp +86 -0
  521. data/ext/boost/iterator/detail/facade_iterator_category.hpp +200 -0
  522. data/ext/boost/iterator/detail/minimum_category.hpp +116 -0
  523. data/ext/boost/iterator/interoperable.hpp +50 -0
  524. data/ext/boost/iterator/iterator_adaptor.hpp +371 -0
  525. data/ext/boost/iterator/iterator_categories.hpp +188 -0
  526. data/ext/boost/iterator/iterator_concepts.hpp +284 -0
  527. data/ext/boost/iterator/iterator_facade.hpp +878 -0
  528. data/ext/boost/iterator/iterator_traits.hpp +92 -0
  529. data/ext/boost/iterator/reverse_iterator.hpp +69 -0
  530. data/ext/boost/iterator/transform_iterator.hpp +187 -0
  531. data/ext/boost/lexical_cast.hpp +1213 -0
  532. data/ext/boost/limits.hpp +146 -0
  533. data/ext/boost/make_shared.hpp +17 -0
  534. data/ext/boost/mem_fn.hpp +24 -0
  535. data/ext/boost/memory_order.hpp +53 -0
  536. data/ext/boost/mpl/always.hpp +39 -0
  537. data/ext/boost/mpl/and.hpp +60 -0
  538. data/ext/boost/mpl/apply.hpp +229 -0
  539. data/ext/boost/mpl/apply_fwd.hpp +107 -0
  540. data/ext/boost/mpl/apply_wrap.hpp +234 -0
  541. data/ext/boost/mpl/arg.hpp +131 -0
  542. data/ext/boost/mpl/arg_fwd.hpp +28 -0
  543. data/ext/boost/mpl/assert.hpp +370 -0
  544. data/ext/boost/mpl/aux_/adl_barrier.hpp +48 -0
  545. data/ext/boost/mpl/aux_/arg_typedef.hpp +31 -0
  546. data/ext/boost/mpl/aux_/arity.hpp +39 -0
  547. data/ext/boost/mpl/aux_/arity_spec.hpp +67 -0
  548. data/ext/boost/mpl/aux_/common_name_wknd.hpp +34 -0
  549. data/ext/boost/mpl/aux_/config/adl.hpp +40 -0
  550. data/ext/boost/mpl/aux_/config/arrays.hpp +30 -0
  551. data/ext/boost/mpl/aux_/config/bcc.hpp +28 -0
  552. data/ext/boost/mpl/aux_/config/bind.hpp +33 -0
  553. data/ext/boost/mpl/aux_/config/compiler.hpp +66 -0
  554. data/ext/boost/mpl/aux_/config/ctps.hpp +30 -0
  555. data/ext/boost/mpl/aux_/config/dtp.hpp +46 -0
  556. data/ext/boost/mpl/aux_/config/eti.hpp +47 -0
  557. data/ext/boost/mpl/aux_/config/gcc.hpp +23 -0
  558. data/ext/boost/mpl/aux_/config/has_apply.hpp +32 -0
  559. data/ext/boost/mpl/aux_/config/has_xxx.hpp +34 -0
  560. data/ext/boost/mpl/aux_/config/integral.hpp +38 -0
  561. data/ext/boost/mpl/aux_/config/intel.hpp +21 -0
  562. data/ext/boost/mpl/aux_/config/lambda.hpp +32 -0
  563. data/ext/boost/mpl/aux_/config/msvc.hpp +21 -0
  564. data/ext/boost/mpl/aux_/config/msvc_typename.hpp +26 -0
  565. data/ext/boost/mpl/aux_/config/nttp.hpp +41 -0
  566. data/ext/boost/mpl/aux_/config/overload_resolution.hpp +29 -0
  567. data/ext/boost/mpl/aux_/config/pp_counter.hpp +26 -0
  568. data/ext/boost/mpl/aux_/config/preprocessor.hpp +39 -0
  569. data/ext/boost/mpl/aux_/config/static_constant.hpp +25 -0
  570. data/ext/boost/mpl/aux_/config/ttp.hpp +41 -0
  571. data/ext/boost/mpl/aux_/config/use_preprocessed.hpp +19 -0
  572. data/ext/boost/mpl/aux_/config/workaround.hpp +19 -0
  573. data/ext/boost/mpl/aux_/full_lambda.hpp +354 -0
  574. data/ext/boost/mpl/aux_/has_apply.hpp +32 -0
  575. data/ext/boost/mpl/aux_/has_type.hpp +23 -0
  576. data/ext/boost/mpl/aux_/include_preprocessed.hpp +42 -0
  577. data/ext/boost/mpl/aux_/integral_wrapper.hpp +93 -0
  578. data/ext/boost/mpl/aux_/lambda_arity_param.hpp +25 -0
  579. data/ext/boost/mpl/aux_/lambda_support.hpp +169 -0
  580. data/ext/boost/mpl/aux_/msvc_never_true.hpp +34 -0
  581. data/ext/boost/mpl/aux_/na.hpp +95 -0
  582. data/ext/boost/mpl/aux_/na_assert.hpp +34 -0
  583. data/ext/boost/mpl/aux_/na_fwd.hpp +31 -0
  584. data/ext/boost/mpl/aux_/na_spec.hpp +175 -0
  585. data/ext/boost/mpl/aux_/nested_type_wknd.hpp +48 -0
  586. data/ext/boost/mpl/aux_/nttp_decl.hpp +35 -0
  587. data/ext/boost/mpl/aux_/preprocessed/gcc/and.hpp +69 -0
  588. data/ext/boost/mpl/aux_/preprocessed/gcc/apply.hpp +169 -0
  589. data/ext/boost/mpl/aux_/preprocessed/gcc/apply_fwd.hpp +52 -0
  590. data/ext/boost/mpl/aux_/preprocessed/gcc/apply_wrap.hpp +84 -0
  591. data/ext/boost/mpl/aux_/preprocessed/gcc/arg.hpp +123 -0
  592. data/ext/boost/mpl/aux_/preprocessed/gcc/bind.hpp +561 -0
  593. data/ext/boost/mpl/aux_/preprocessed/gcc/bind_fwd.hpp +52 -0
  594. data/ext/boost/mpl/aux_/preprocessed/gcc/full_lambda.hpp +558 -0
  595. data/ext/boost/mpl/aux_/preprocessed/gcc/or.hpp +69 -0
  596. data/ext/boost/mpl/aux_/preprocessed/gcc/placeholders.hpp +105 -0
  597. data/ext/boost/mpl/aux_/preprocessed/gcc/quote.hpp +123 -0
  598. data/ext/boost/mpl/aux_/preprocessed/gcc/template_arity.hpp +97 -0
  599. data/ext/boost/mpl/aux_/preprocessor/def_params_tail.hpp +105 -0
  600. data/ext/boost/mpl/aux_/preprocessor/enum.hpp +62 -0
  601. data/ext/boost/mpl/aux_/preprocessor/filter_params.hpp +28 -0
  602. data/ext/boost/mpl/aux_/preprocessor/params.hpp +65 -0
  603. data/ext/boost/mpl/aux_/preprocessor/sub.hpp +65 -0
  604. data/ext/boost/mpl/aux_/static_cast.hpp +27 -0
  605. data/ext/boost/mpl/aux_/template_arity.hpp +189 -0
  606. data/ext/boost/mpl/aux_/template_arity_fwd.hpp +23 -0
  607. data/ext/boost/mpl/aux_/type_wrapper.hpp +47 -0
  608. data/ext/boost/mpl/aux_/value_wknd.hpp +89 -0
  609. data/ext/boost/mpl/aux_/yes_no.hpp +58 -0
  610. data/ext/boost/mpl/bind.hpp +551 -0
  611. data/ext/boost/mpl/bind_fwd.hpp +99 -0
  612. data/ext/boost/mpl/bool.hpp +39 -0
  613. data/ext/boost/mpl/bool_fwd.hpp +33 -0
  614. data/ext/boost/mpl/eval_if.hpp +71 -0
  615. data/ext/boost/mpl/has_xxx.hpp +640 -0
  616. data/ext/boost/mpl/identity.hpp +45 -0
  617. data/ext/boost/mpl/if.hpp +135 -0
  618. data/ext/boost/mpl/int.hpp +22 -0
  619. data/ext/boost/mpl/int_fwd.hpp +27 -0
  620. data/ext/boost/mpl/integral_c.hpp +51 -0
  621. data/ext/boost/mpl/integral_c_fwd.hpp +32 -0
  622. data/ext/boost/mpl/integral_c_tag.hpp +26 -0
  623. data/ext/boost/mpl/lambda.hpp +29 -0
  624. data/ext/boost/mpl/lambda_fwd.hpp +57 -0
  625. data/ext/boost/mpl/limits/arity.hpp +21 -0
  626. data/ext/boost/mpl/logical.hpp +21 -0
  627. data/ext/boost/mpl/next.hpp +19 -0
  628. data/ext/boost/mpl/next_prior.hpp +49 -0
  629. data/ext/boost/mpl/not.hpp +51 -0
  630. data/ext/boost/mpl/or.hpp +61 -0
  631. data/ext/boost/mpl/placeholders.hpp +100 -0
  632. data/ext/boost/mpl/protect.hpp +55 -0
  633. data/ext/boost/mpl/quote.hpp +151 -0
  634. data/ext/boost/mpl/size_t.hpp +25 -0
  635. data/ext/boost/mpl/size_t_fwd.hpp +28 -0
  636. data/ext/boost/mpl/void.hpp +76 -0
  637. data/ext/boost/mpl/void_fwd.hpp +26 -0
  638. data/ext/boost/next_prior.hpp +51 -0
  639. data/ext/boost/non_type.hpp +27 -0
  640. data/ext/boost/noncopyable.hpp +36 -0
  641. data/ext/boost/none.hpp +28 -0
  642. data/ext/boost/none_t.hpp +24 -0
  643. data/ext/boost/operators.hpp +976 -0
  644. data/ext/boost/optional.hpp +18 -0
  645. data/ext/boost/optional/optional.hpp +924 -0
  646. data/ext/boost/optional/optional_fwd.hpp +22 -0
  647. data/ext/boost/preprocessor/arithmetic/add.hpp +51 -0
  648. data/ext/boost/preprocessor/arithmetic/dec.hpp +288 -0
  649. data/ext/boost/preprocessor/arithmetic/detail/div_base.hpp +61 -0
  650. data/ext/boost/preprocessor/arithmetic/inc.hpp +288 -0
  651. data/ext/boost/preprocessor/arithmetic/mod.hpp +39 -0
  652. data/ext/boost/preprocessor/arithmetic/sub.hpp +50 -0
  653. data/ext/boost/preprocessor/array/data.hpp +28 -0
  654. data/ext/boost/preprocessor/array/elem.hpp +29 -0
  655. data/ext/boost/preprocessor/array/size.hpp +28 -0
  656. data/ext/boost/preprocessor/cat.hpp +35 -0
  657. data/ext/boost/preprocessor/comma_if.hpp +17 -0
  658. data/ext/boost/preprocessor/comparison/less_equal.hpp +39 -0
  659. data/ext/boost/preprocessor/config/config.hpp +70 -0
  660. data/ext/boost/preprocessor/control/deduce_d.hpp +22 -0
  661. data/ext/boost/preprocessor/control/detail/while.hpp +536 -0
  662. data/ext/boost/preprocessor/control/expr_iif.hpp +31 -0
  663. data/ext/boost/preprocessor/control/if.hpp +30 -0
  664. data/ext/boost/preprocessor/control/iif.hpp +34 -0
  665. data/ext/boost/preprocessor/control/while.hpp +312 -0
  666. data/ext/boost/preprocessor/debug/error.hpp +33 -0
  667. data/ext/boost/preprocessor/detail/auto_rec.hpp +293 -0
  668. data/ext/boost/preprocessor/detail/check.hpp +48 -0
  669. data/ext/boost/preprocessor/detail/is_binary.hpp +30 -0
  670. data/ext/boost/preprocessor/empty.hpp +17 -0
  671. data/ext/boost/preprocessor/enum.hpp +17 -0
  672. data/ext/boost/preprocessor/enum_params.hpp +17 -0
  673. data/ext/boost/preprocessor/facilities/empty.hpp +21 -0
  674. data/ext/boost/preprocessor/facilities/identity.hpp +23 -0
  675. data/ext/boost/preprocessor/identity.hpp +17 -0
  676. data/ext/boost/preprocessor/inc.hpp +17 -0
  677. data/ext/boost/preprocessor/iterate.hpp +17 -0
  678. data/ext/boost/preprocessor/iteration/detail/bounds/lower1.hpp +99 -0
  679. data/ext/boost/preprocessor/iteration/detail/bounds/upper1.hpp +99 -0
  680. data/ext/boost/preprocessor/iteration/detail/iter/forward1.hpp +1342 -0
  681. data/ext/boost/preprocessor/iteration/iterate.hpp +82 -0
  682. data/ext/boost/preprocessor/list/adt.hpp +73 -0
  683. data/ext/boost/preprocessor/list/append.hpp +40 -0
  684. data/ext/boost/preprocessor/list/detail/fold_left.hpp +279 -0
  685. data/ext/boost/preprocessor/list/detail/fold_right.hpp +277 -0
  686. data/ext/boost/preprocessor/list/fold_left.hpp +303 -0
  687. data/ext/boost/preprocessor/list/fold_right.hpp +40 -0
  688. data/ext/boost/preprocessor/list/for_each_i.hpp +65 -0
  689. data/ext/boost/preprocessor/list/reverse.hpp +40 -0
  690. data/ext/boost/preprocessor/list/transform.hpp +49 -0
  691. data/ext/boost/preprocessor/logical/and.hpp +30 -0
  692. data/ext/boost/preprocessor/logical/bitand.hpp +38 -0
  693. data/ext/boost/preprocessor/logical/bool.hpp +288 -0
  694. data/ext/boost/preprocessor/logical/compl.hpp +36 -0
  695. data/ext/boost/preprocessor/logical/not.hpp +30 -0
  696. data/ext/boost/preprocessor/punctuation/comma.hpp +21 -0
  697. data/ext/boost/preprocessor/punctuation/comma_if.hpp +31 -0
  698. data/ext/boost/preprocessor/repeat.hpp +17 -0
  699. data/ext/boost/preprocessor/repetition/detail/for.hpp +536 -0
  700. data/ext/boost/preprocessor/repetition/enum.hpp +66 -0
  701. data/ext/boost/preprocessor/repetition/enum_binary_params.hpp +54 -0
  702. data/ext/boost/preprocessor/repetition/enum_params.hpp +41 -0
  703. data/ext/boost/preprocessor/repetition/enum_trailing_params.hpp +38 -0
  704. data/ext/boost/preprocessor/repetition/for.hpp +306 -0
  705. data/ext/boost/preprocessor/repetition/repeat.hpp +825 -0
  706. data/ext/boost/preprocessor/repetition/repeat_from_to.hpp +87 -0
  707. data/ext/boost/preprocessor/seq/cat.hpp +48 -0
  708. data/ext/boost/preprocessor/seq/elem.hpp +304 -0
  709. data/ext/boost/preprocessor/seq/enum.hpp +288 -0
  710. data/ext/boost/preprocessor/seq/fold_left.hpp +1070 -0
  711. data/ext/boost/preprocessor/seq/for_each_i.hpp +61 -0
  712. data/ext/boost/preprocessor/seq/seq.hpp +44 -0
  713. data/ext/boost/preprocessor/seq/size.hpp +548 -0
  714. data/ext/boost/preprocessor/seq/transform.hpp +48 -0
  715. data/ext/boost/preprocessor/slot/detail/def.hpp +49 -0
  716. data/ext/boost/preprocessor/slot/detail/shared.hpp +247 -0
  717. data/ext/boost/preprocessor/slot/slot.hpp +32 -0
  718. data/ext/boost/preprocessor/stringize.hpp +33 -0
  719. data/ext/boost/preprocessor/tuple/eat.hpp +57 -0
  720. data/ext/boost/preprocessor/tuple/elem.hpp +385 -0
  721. data/ext/boost/preprocessor/tuple/rem.hpp +72 -0
  722. data/ext/boost/preprocessor/tuple/to_list.hpp +62 -0
  723. data/ext/boost/range/algorithm/equal.hpp +188 -0
  724. data/ext/boost/range/as_literal.hpp +127 -0
  725. data/ext/boost/range/begin.hpp +132 -0
  726. data/ext/boost/range/concepts.hpp +331 -0
  727. data/ext/boost/range/config.hpp +54 -0
  728. data/ext/boost/range/const_iterator.hpp +67 -0
  729. data/ext/boost/range/detail/common.hpp +117 -0
  730. data/ext/boost/range/detail/extract_optional_type.hpp +52 -0
  731. data/ext/boost/range/detail/implementation_help.hpp +103 -0
  732. data/ext/boost/range/detail/misc_concept.hpp +33 -0
  733. data/ext/boost/range/detail/sfinae.hpp +77 -0
  734. data/ext/boost/range/detail/str_types.hpp +38 -0
  735. data/ext/boost/range/difference_type.hpp +29 -0
  736. data/ext/boost/range/distance.hpp +34 -0
  737. data/ext/boost/range/empty.hpp +34 -0
  738. data/ext/boost/range/end.hpp +131 -0
  739. data/ext/boost/range/functions.hpp +27 -0
  740. data/ext/boost/range/iterator.hpp +72 -0
  741. data/ext/boost/range/iterator_range.hpp +16 -0
  742. data/ext/boost/range/iterator_range_core.hpp +542 -0
  743. data/ext/boost/range/iterator_range_io.hpp +93 -0
  744. data/ext/boost/range/mutable_iterator.hpp +67 -0
  745. data/ext/boost/range/rbegin.hpp +65 -0
  746. data/ext/boost/range/rend.hpp +65 -0
  747. data/ext/boost/range/reverse_iterator.hpp +40 -0
  748. data/ext/boost/range/size.hpp +36 -0
  749. data/ext/boost/range/size_type.hpp +79 -0
  750. data/ext/boost/range/value_type.hpp +34 -0
  751. data/ext/boost/ref.hpp +189 -0
  752. data/ext/boost/scoped_array.hpp +16 -0
  753. data/ext/boost/scoped_ptr.hpp +16 -0
  754. data/ext/boost/shared_array.hpp +19 -0
  755. data/ext/boost/shared_ptr.hpp +19 -0
  756. data/ext/boost/smart_ptr/bad_weak_ptr.hpp +59 -0
  757. data/ext/boost/smart_ptr/detail/atomic_count.hpp +119 -0
  758. data/ext/boost/smart_ptr/detail/atomic_count_gcc.hpp +72 -0
  759. data/ext/boost/smart_ptr/detail/atomic_count_gcc_x86.hpp +77 -0
  760. data/ext/boost/smart_ptr/detail/atomic_count_pthreads.hpp +96 -0
  761. data/ext/boost/smart_ptr/detail/atomic_count_solaris.hpp +59 -0
  762. data/ext/boost/smart_ptr/detail/atomic_count_sync.hpp +61 -0
  763. data/ext/boost/smart_ptr/detail/atomic_count_win32.hpp +63 -0
  764. data/ext/boost/smart_ptr/detail/operator_bool.hpp +56 -0
  765. data/ext/boost/smart_ptr/detail/shared_count.hpp +444 -0
  766. data/ext/boost/smart_ptr/detail/sp_convertible.hpp +76 -0
  767. data/ext/boost/smart_ptr/detail/sp_counted_base.hpp +70 -0
  768. data/ext/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp +150 -0
  769. data/ext/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp +170 -0
  770. data/ext/boost/smart_ptr/detail/sp_counted_base_cw_x86.hpp +158 -0
  771. data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp +157 -0
  772. data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp +172 -0
  773. data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp +181 -0
  774. data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp +166 -0
  775. data/ext/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp +173 -0
  776. data/ext/boost/smart_ptr/detail/sp_counted_base_nt.hpp +107 -0
  777. data/ext/boost/smart_ptr/detail/sp_counted_base_pt.hpp +135 -0
  778. data/ext/boost/smart_ptr/detail/sp_counted_base_solaris.hpp +113 -0
  779. data/ext/boost/smart_ptr/detail/sp_counted_base_spin.hpp +131 -0
  780. data/ext/boost/smart_ptr/detail/sp_counted_base_sync.hpp +155 -0
  781. data/ext/boost/smart_ptr/detail/sp_counted_base_w32.hpp +130 -0
  782. data/ext/boost/smart_ptr/detail/sp_counted_impl.hpp +231 -0
  783. data/ext/boost/smart_ptr/detail/sp_has_sync.hpp +49 -0
  784. data/ext/boost/smart_ptr/detail/spinlock.hpp +53 -0
  785. data/ext/boost/smart_ptr/detail/spinlock_gcc_arm.hpp +85 -0
  786. data/ext/boost/smart_ptr/detail/spinlock_nt.hpp +89 -0
  787. data/ext/boost/smart_ptr/detail/spinlock_pool.hpp +87 -0
  788. data/ext/boost/smart_ptr/detail/spinlock_pt.hpp +79 -0
  789. data/ext/boost/smart_ptr/detail/spinlock_sync.hpp +87 -0
  790. data/ext/boost/smart_ptr/detail/yield_k.hpp +149 -0
  791. data/ext/boost/smart_ptr/enable_shared_from_this.hpp +79 -0
  792. data/ext/boost/smart_ptr/make_shared.hpp +508 -0
  793. data/ext/boost/smart_ptr/scoped_array.hpp +107 -0
  794. data/ext/boost/smart_ptr/scoped_ptr.hpp +131 -0
  795. data/ext/boost/smart_ptr/shared_array.hpp +147 -0
  796. data/ext/boost/smart_ptr/shared_ptr.hpp +701 -0
  797. data/ext/boost/smart_ptr/weak_ptr.hpp +230 -0
  798. data/ext/boost/src/pthread/once.cpp +51 -0
  799. data/ext/boost/src/pthread/thread.cpp +616 -0
  800. data/ext/boost/src/pthread/timeconv.inl +133 -0
  801. data/ext/boost/src/tss_null.cpp +34 -0
  802. data/ext/boost/static_assert.hpp +132 -0
  803. data/ext/boost/thread.hpp +26 -0
  804. data/ext/boost/thread/barrier.hpp +64 -0
  805. data/ext/boost/thread/condition.hpp +16 -0
  806. data/ext/boost/thread/condition_variable.hpp +21 -0
  807. data/ext/boost/thread/detail/config.hpp +100 -0
  808. data/ext/boost/thread/detail/force_cast.hpp +39 -0
  809. data/ext/boost/thread/detail/move.hpp +60 -0
  810. data/ext/boost/thread/detail/platform.hpp +71 -0
  811. data/ext/boost/thread/detail/singleton.hpp +59 -0
  812. data/ext/boost/thread/detail/thread.hpp +540 -0
  813. data/ext/boost/thread/detail/thread_group.hpp +108 -0
  814. data/ext/boost/thread/detail/thread_heap_alloc.hpp +23 -0
  815. data/ext/boost/thread/detail/thread_interruption.hpp +35 -0
  816. data/ext/boost/thread/detail/tss_hooks.hpp +65 -0
  817. data/ext/boost/thread/exceptions.hpp +223 -0
  818. data/ext/boost/thread/future.hpp +1375 -0
  819. data/ext/boost/thread/locks.hpp +1585 -0
  820. data/ext/boost/thread/mutex.hpp +21 -0
  821. data/ext/boost/thread/once.hpp +33 -0
  822. data/ext/boost/thread/pthread/condition_variable.hpp +179 -0
  823. data/ext/boost/thread/pthread/condition_variable_fwd.hpp +102 -0
  824. data/ext/boost/thread/pthread/mutex.hpp +236 -0
  825. data/ext/boost/thread/pthread/once.hpp +95 -0
  826. data/ext/boost/thread/pthread/pthread_mutex_scoped_lock.hpp +54 -0
  827. data/ext/boost/thread/pthread/recursive_mutex.hpp +345 -0
  828. data/ext/boost/thread/pthread/shared_mutex.hpp +303 -0
  829. data/ext/boost/thread/pthread/thread_data.hpp +129 -0
  830. data/ext/boost/thread/pthread/thread_heap_alloc.hpp +242 -0
  831. data/ext/boost/thread/pthread/timespec.hpp +36 -0
  832. data/ext/boost/thread/recursive_mutex.hpp +21 -0
  833. data/ext/boost/thread/shared_mutex.hpp +21 -0
  834. data/ext/boost/thread/thread.hpp +27 -0
  835. data/ext/boost/thread/thread_time.hpp +50 -0
  836. data/ext/boost/thread/tss.hpp +113 -0
  837. data/ext/boost/thread/xtime.hpp +92 -0
  838. data/ext/boost/throw_exception.hpp +91 -0
  839. data/ext/boost/token_functions.hpp +641 -0
  840. data/ext/boost/token_iterator.hpp +128 -0
  841. data/ext/boost/tokenizer.hpp +98 -0
  842. data/ext/boost/type.hpp +18 -0
  843. data/ext/boost/type_traits/add_const.hpp +47 -0
  844. data/ext/boost/type_traits/add_pointer.hpp +72 -0
  845. data/ext/boost/type_traits/add_reference.hpp +107 -0
  846. data/ext/boost/type_traits/add_volatile.hpp +47 -0
  847. data/ext/boost/type_traits/alignment_of.hpp +128 -0
  848. data/ext/boost/type_traits/broken_compiler_spec.hpp +117 -0
  849. data/ext/boost/type_traits/composite_traits.hpp +29 -0
  850. data/ext/boost/type_traits/config.hpp +76 -0
  851. data/ext/boost/type_traits/conversion_traits.hpp +17 -0
  852. data/ext/boost/type_traits/detail/bool_trait_def.hpp +173 -0
  853. data/ext/boost/type_traits/detail/bool_trait_undef.hpp +27 -0
  854. data/ext/boost/type_traits/detail/cv_traits_impl.hpp +97 -0
  855. data/ext/boost/type_traits/detail/false_result.hpp +28 -0
  856. data/ext/boost/type_traits/detail/ice_and.hpp +35 -0
  857. data/ext/boost/type_traits/detail/ice_eq.hpp +36 -0
  858. data/ext/boost/type_traits/detail/ice_not.hpp +31 -0
  859. data/ext/boost/type_traits/detail/ice_or.hpp +34 -0
  860. data/ext/boost/type_traits/detail/is_function_ptr_helper.hpp +220 -0
  861. data/ext/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp +817 -0
  862. data/ext/boost/type_traits/detail/size_t_trait_def.hpp +58 -0
  863. data/ext/boost/type_traits/detail/size_t_trait_undef.hpp +16 -0
  864. data/ext/boost/type_traits/detail/template_arity_spec.hpp +31 -0
  865. data/ext/boost/type_traits/detail/type_trait_def.hpp +61 -0
  866. data/ext/boost/type_traits/detail/type_trait_undef.hpp +19 -0
  867. data/ext/boost/type_traits/detail/yes_no_type.hpp +26 -0
  868. data/ext/boost/type_traits/function_traits.hpp +236 -0
  869. data/ext/boost/type_traits/has_nothrow_copy.hpp +39 -0
  870. data/ext/boost/type_traits/has_trivial_copy.hpp +49 -0
  871. data/ext/boost/type_traits/has_trivial_destructor.hpp +42 -0
  872. data/ext/boost/type_traits/ice.hpp +20 -0
  873. data/ext/boost/type_traits/integral_constant.hpp +53 -0
  874. data/ext/boost/type_traits/intrinsics.hpp +240 -0
  875. data/ext/boost/type_traits/is_abstract.hpp +153 -0
  876. data/ext/boost/type_traits/is_arithmetic.hpp +51 -0
  877. data/ext/boost/type_traits/is_array.hpp +91 -0
  878. data/ext/boost/type_traits/is_base_and_derived.hpp +254 -0
  879. data/ext/boost/type_traits/is_base_of.hpp +51 -0
  880. data/ext/boost/type_traits/is_class.hpp +140 -0
  881. data/ext/boost/type_traits/is_const.hpp +165 -0
  882. data/ext/boost/type_traits/is_convertible.hpp +430 -0
  883. data/ext/boost/type_traits/is_enum.hpp +189 -0
  884. data/ext/boost/type_traits/is_float.hpp +27 -0
  885. data/ext/boost/type_traits/is_function.hpp +106 -0
  886. data/ext/boost/type_traits/is_fundamental.hpp +45 -0
  887. data/ext/boost/type_traits/is_integral.hpp +78 -0
  888. data/ext/boost/type_traits/is_lvalue_reference.hpp +118 -0
  889. data/ext/boost/type_traits/is_member_function_pointer.hpp +136 -0
  890. data/ext/boost/type_traits/is_member_pointer.hpp +116 -0
  891. data/ext/boost/type_traits/is_pod.hpp +135 -0
  892. data/ext/boost/type_traits/is_pointer.hpp +162 -0
  893. data/ext/boost/type_traits/is_reference.hpp +45 -0
  894. data/ext/boost/type_traits/is_rvalue_reference.hpp +29 -0
  895. data/ext/boost/type_traits/is_same.hpp +103 -0
  896. data/ext/boost/type_traits/is_scalar.hpp +55 -0
  897. data/ext/boost/type_traits/is_signed.hpp +135 -0
  898. data/ext/boost/type_traits/is_union.hpp +49 -0
  899. data/ext/boost/type_traits/is_unsigned.hpp +130 -0
  900. data/ext/boost/type_traits/is_void.hpp +38 -0
  901. data/ext/boost/type_traits/is_volatile.hpp +152 -0
  902. data/ext/boost/type_traits/make_unsigned.hpp +137 -0
  903. data/ext/boost/type_traits/remove_const.hpp +90 -0
  904. data/ext/boost/type_traits/remove_cv.hpp +83 -0
  905. data/ext/boost/type_traits/remove_pointer.hpp +43 -0
  906. data/ext/boost/type_traits/remove_reference.hpp +70 -0
  907. data/ext/boost/type_traits/type_with_alignment.hpp +393 -0
  908. data/ext/boost/units/detail/utility.hpp +104 -0
  909. data/ext/boost/utility.hpp +20 -0
  910. data/ext/boost/utility/addressof.hpp +102 -0
  911. data/ext/boost/utility/base_from_member.hpp +87 -0
  912. data/ext/boost/utility/binary.hpp +708 -0
  913. data/ext/boost/utility/compare_pointees.hpp +68 -0
  914. data/ext/boost/utility/enable_if.hpp +119 -0
  915. data/ext/boost/visit_each.hpp +29 -0
  916. data/ext/boost/weak_ptr.hpp +18 -0
  917. data/ext/common/AbstractSpawnManager.h +110 -0
  918. data/ext/common/Account.h +175 -0
  919. data/ext/common/AccountsDatabase.cpp +81 -0
  920. data/ext/common/AccountsDatabase.h +130 -0
  921. data/ext/common/AgentBase.cpp +323 -0
  922. data/ext/common/AgentBase.h +39 -0
  923. data/ext/common/AgentsStarter.cpp +154 -0
  924. data/ext/common/AgentsStarter.h +81 -0
  925. data/ext/common/AgentsStarter.hpp +646 -0
  926. data/ext/common/ApplicationPool/Client.h +796 -0
  927. data/ext/common/ApplicationPool/Interface.h +295 -0
  928. data/ext/common/ApplicationPool/Pool.h +1327 -0
  929. data/ext/common/ApplicationPool/Server.h +475 -0
  930. data/ext/common/BCrypt.cpp +343 -0
  931. data/ext/common/BCrypt.h +73 -0
  932. data/ext/common/Blowfish.c +685 -0
  933. data/ext/common/Blowfish.h +103 -0
  934. data/ext/common/Constants.h +48 -0
  935. data/ext/common/EventedClient.h +702 -0
  936. data/ext/common/EventedMessageServer.h +327 -0
  937. data/ext/common/EventedServer.h +295 -0
  938. data/ext/common/Exceptions.h +348 -0
  939. data/ext/common/FileDescriptor.h +293 -0
  940. data/ext/common/HelperAgent/BacktracesServer.h +59 -0
  941. data/ext/common/IniFile.h +488 -0
  942. data/ext/common/Logging.cpp +64 -0
  943. data/ext/common/Logging.h +695 -0
  944. data/ext/common/LoggingAgent/ChangeNotifier.h +63 -0
  945. data/ext/common/LoggingAgent/DataStoreId.h +177 -0
  946. data/ext/common/LoggingAgent/LoggingServer.h +1343 -0
  947. data/ext/common/LoggingAgent/Main.cpp +278 -0
  948. data/ext/common/LoggingAgent/RemoteSender.h +468 -0
  949. data/ext/common/MessageChannel.h +737 -0
  950. data/ext/common/MessageClient.h +297 -0
  951. data/ext/common/MessageReadersWriters.h +508 -0
  952. data/ext/common/MessageServer.h +581 -0
  953. data/ext/common/PoolOptions.h +518 -0
  954. data/ext/common/Process.h +255 -0
  955. data/ext/common/RandomGenerator.h +160 -0
  956. data/ext/common/ResourceLocator.h +134 -0
  957. data/ext/common/SafeLibev.h +149 -0
  958. data/ext/common/ServerInstanceDir.h +347 -0
  959. data/ext/common/Session.h +470 -0
  960. data/ext/common/SpawnManager.h +616 -0
  961. data/ext/common/StaticString.h +298 -0
  962. data/ext/common/StringListCreator.h +83 -0
  963. data/ext/common/Utils.cpp +972 -0
  964. data/ext/common/Utils.h +428 -0
  965. data/ext/common/Utils/Base64.cpp +143 -0
  966. data/ext/common/Utils/Base64.h +83 -0
  967. data/ext/common/Utils/BlockingQueue.h +136 -0
  968. data/ext/common/Utils/BufferedIO.h +196 -0
  969. data/ext/common/Utils/CachedFileStat.cpp +62 -0
  970. data/ext/common/Utils/CachedFileStat.h +51 -0
  971. data/ext/common/Utils/CachedFileStat.hpp +243 -0
  972. data/ext/common/Utils/FileChangeChecker.h +209 -0
  973. data/ext/common/Utils/IOUtils.cpp +913 -0
  974. data/ext/common/Utils/IOUtils.h +370 -0
  975. data/ext/common/Utils/MD5.cpp +406 -0
  976. data/ext/common/Utils/MD5.h +98 -0
  977. data/ext/common/Utils/MemZeroGuard.h +103 -0
  978. data/ext/common/Utils/ProcessMetricsCollector.h +590 -0
  979. data/ext/common/Utils/ScopeGuard.h +72 -0
  980. data/ext/common/Utils/StrIntUtils.cpp +363 -0
  981. data/ext/common/Utils/StrIntUtils.h +231 -0
  982. data/ext/common/Utils/SystemTime.cpp +37 -0
  983. data/ext/common/Utils/SystemTime.h +201 -0
  984. data/ext/common/Utils/Timer.h +152 -0
  985. data/ext/common/Utils/VariantMap.h +363 -0
  986. data/ext/common/Utils/utf8.h +35 -0
  987. data/ext/common/Utils/utf8/checked.h +324 -0
  988. data/ext/common/Utils/utf8/core.h +359 -0
  989. data/ext/common/Utils/utf8/unchecked.h +229 -0
  990. data/ext/common/Watchdog.cpp +1001 -0
  991. data/ext/google/COPYING +28 -0
  992. data/ext/google/ChangeLog +167 -0
  993. data/ext/google/dense_hash_map +310 -0
  994. data/ext/google/dense_hash_set +287 -0
  995. data/ext/google/sparse_hash_map +294 -0
  996. data/ext/google/sparse_hash_set +275 -0
  997. data/ext/google/sparsehash/densehashtable.h +1062 -0
  998. data/ext/google/sparsehash/sparseconfig.h +55 -0
  999. data/ext/google/sparsehash/sparsehashtable.h +1015 -0
  1000. data/ext/google/sparsetable +1468 -0
  1001. data/ext/google/type_traits.h +250 -0
  1002. data/ext/libev/Changes +302 -0
  1003. data/ext/libev/LICENSE +36 -0
  1004. data/ext/libev/Makefile.am +18 -0
  1005. data/ext/libev/Makefile.in +685 -0
  1006. data/ext/libev/README +58 -0
  1007. data/ext/libev/aclocal.m4 +7549 -0
  1008. data/ext/libev/autogen.sh +6 -0
  1009. data/ext/libev/config.guess +1526 -0
  1010. data/ext/libev/config.h.in +121 -0
  1011. data/ext/libev/config.sub +1658 -0
  1012. data/ext/libev/configure +22156 -0
  1013. data/ext/libev/configure.ac +18 -0
  1014. data/ext/libev/ev++.h +800 -0
  1015. data/ext/libev/ev.c +3694 -0
  1016. data/ext/libev/ev.h +705 -0
  1017. data/ext/libev/ev_epoll.c +228 -0
  1018. data/ext/libev/ev_kqueue.c +196 -0
  1019. data/ext/libev/ev_poll.c +144 -0
  1020. data/ext/libev/ev_port.c +165 -0
  1021. data/ext/libev/ev_select.c +308 -0
  1022. data/ext/libev/ev_vars.h +187 -0
  1023. data/ext/libev/ev_win32.c +153 -0
  1024. data/ext/libev/ev_wrap.h +178 -0
  1025. data/ext/libev/event.c +401 -0
  1026. data/ext/libev/event.h +158 -0
  1027. data/ext/libev/install-sh +294 -0
  1028. data/ext/libev/libev.m4 +38 -0
  1029. data/ext/libev/ltmain.sh +6871 -0
  1030. data/ext/libev/missing +336 -0
  1031. data/ext/libev/mkinstalldirs +111 -0
  1032. data/ext/nginx/Configuration.c +1454 -0
  1033. data/ext/nginx/Configuration.h +94 -0
  1034. data/ext/nginx/ContentHandler.c +1360 -0
  1035. data/ext/nginx/ContentHandler.h +64 -0
  1036. data/ext/nginx/HelperAgent.cpp +988 -0
  1037. data/ext/nginx/HttpStatusExtractor.h +351 -0
  1038. data/ext/nginx/ScgiRequestParser.h +375 -0
  1039. data/ext/nginx/StaticContentHandler.c +256 -0
  1040. data/ext/nginx/StaticContentHandler.h +37 -0
  1041. data/ext/nginx/config +56 -0
  1042. data/ext/nginx/ngx_http_passenger_module.c +499 -0
  1043. data/ext/nginx/ngx_http_passenger_module.h +63 -0
  1044. data/ext/oxt/backtrace.cpp +185 -0
  1045. data/ext/oxt/backtrace.hpp +135 -0
  1046. data/ext/oxt/detail/backtrace_disabled.hpp +39 -0
  1047. data/ext/oxt/detail/backtrace_enabled.hpp +156 -0
  1048. data/ext/oxt/detail/spin_lock_darwin.hpp +69 -0
  1049. data/ext/oxt/detail/spin_lock_gcc_x86.hpp +81 -0
  1050. data/ext/oxt/detail/spin_lock_portable.hpp +38 -0
  1051. data/ext/oxt/detail/spin_lock_pthreads.hpp +97 -0
  1052. data/ext/oxt/detail/tracable_exception_disabled.hpp +46 -0
  1053. data/ext/oxt/detail/tracable_exception_enabled.hpp +48 -0
  1054. data/ext/oxt/dynamic_thread_group.hpp +195 -0
  1055. data/ext/oxt/macros.hpp +58 -0
  1056. data/ext/oxt/spin_lock.hpp +57 -0
  1057. data/ext/oxt/system_calls.cpp +477 -0
  1058. data/ext/oxt/system_calls.hpp +260 -0
  1059. data/ext/oxt/thread.cpp +32 -0
  1060. data/ext/oxt/thread.hpp +370 -0
  1061. data/ext/oxt/tracable_exception.cpp +87 -0
  1062. data/ext/oxt/tracable_exception.hpp +35 -0
  1063. data/ext/ruby/extconf.rb +41 -0
  1064. data/ext/ruby/passenger_native_support.c +1037 -0
  1065. data/helper-scripts/passenger-spawn-server +106 -0
  1066. data/helper-scripts/prespawn +63 -0
  1067. data/lib/phusion_passenger.rb +107 -0
  1068. data/lib/phusion_passenger/abstract_installer.rb +234 -0
  1069. data/lib/phusion_passenger/abstract_request_handler.rb +738 -0
  1070. data/lib/phusion_passenger/abstract_server.rb +372 -0
  1071. data/lib/phusion_passenger/abstract_server_collection.rb +335 -0
  1072. data/lib/phusion_passenger/admin_tools.rb +48 -0
  1073. data/lib/phusion_passenger/admin_tools/memory_stats.rb +299 -0
  1074. data/lib/phusion_passenger/admin_tools/server_instance.rb +334 -0
  1075. data/lib/phusion_passenger/analytics_logger.rb +342 -0
  1076. data/lib/phusion_passenger/app_process.rb +162 -0
  1077. data/lib/phusion_passenger/classic_rails/application_spawner.rb +344 -0
  1078. data/lib/phusion_passenger/classic_rails/cgi_fixed.rb +68 -0
  1079. data/lib/phusion_passenger/classic_rails/framework_spawner.rb +311 -0
  1080. data/lib/phusion_passenger/classic_rails/request_handler.rb +75 -0
  1081. data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/ac_base_extension.rb +65 -0
  1082. data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/ac_benchmarking_extension.rb +48 -0
  1083. data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/ac_rescue_extension.rb +59 -0
  1084. data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/ar_abstract_adapter_extension.rb +54 -0
  1085. data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/as_cache_extension.rb +130 -0
  1086. data/lib/phusion_passenger/classic_rails_extensions/analytics_logging/av_benchmark_helper_extension.rb +47 -0
  1087. data/lib/phusion_passenger/classic_rails_extensions/init.rb +123 -0
  1088. data/lib/phusion_passenger/console_text_template.rb +66 -0
  1089. data/lib/phusion_passenger/constants.rb +35 -0
  1090. data/lib/phusion_passenger/debug_logging.rb +104 -0
  1091. data/lib/phusion_passenger/dependencies.rb +633 -0
  1092. data/lib/phusion_passenger/exceptions.rb +103 -0
  1093. data/lib/phusion_passenger/html_template.rb +107 -0
  1094. data/lib/phusion_passenger/message_channel.rb +387 -0
  1095. data/lib/phusion_passenger/message_client.rb +173 -0
  1096. data/lib/phusion_passenger/native_support.rb +166 -0
  1097. data/lib/phusion_passenger/packaging.rb +108 -0
  1098. data/lib/phusion_passenger/platform_info.rb +248 -0
  1099. data/lib/phusion_passenger/platform_info/apache.rb +332 -0
  1100. data/lib/phusion_passenger/platform_info/binary_compatibility.rb +175 -0
  1101. data/lib/phusion_passenger/platform_info/compiler.rb +183 -0
  1102. data/lib/phusion_passenger/platform_info/curl.rb +61 -0
  1103. data/lib/phusion_passenger/platform_info/documentation_tools.rb +35 -0
  1104. data/lib/phusion_passenger/platform_info/linux.rb +77 -0
  1105. data/lib/phusion_passenger/platform_info/operating_system.rb +158 -0
  1106. data/lib/phusion_passenger/platform_info/ruby.rb +338 -0
  1107. data/lib/phusion_passenger/platform_info/zlib.rb +38 -0
  1108. data/lib/phusion_passenger/plugin.rb +96 -0
  1109. data/lib/phusion_passenger/public_api.rb +112 -0
  1110. data/lib/phusion_passenger/rack/application_spawner.rb +227 -0
  1111. data/lib/phusion_passenger/rack/request_handler.rb +145 -0
  1112. data/lib/phusion_passenger/rails3_extensions/init.rb +207 -0
  1113. data/lib/phusion_passenger/simple_benchmarking.rb +52 -0
  1114. data/lib/phusion_passenger/spawn_manager.rb +359 -0
  1115. data/lib/phusion_passenger/standalone/app_finder.rb +153 -0
  1116. data/lib/phusion_passenger/standalone/command.rb +241 -0
  1117. data/lib/phusion_passenger/standalone/config_file.rb +119 -0
  1118. data/lib/phusion_passenger/standalone/help_command.rb +57 -0
  1119. data/lib/phusion_passenger/standalone/main.rb +101 -0
  1120. data/lib/phusion_passenger/standalone/package_runtime_command.rb +92 -0
  1121. data/lib/phusion_passenger/standalone/runtime_installer.rb +479 -0
  1122. data/lib/phusion_passenger/standalone/start_command.rb +514 -0
  1123. data/lib/phusion_passenger/standalone/status_command.rb +62 -0
  1124. data/lib/phusion_passenger/standalone/stop_command.rb +74 -0
  1125. data/lib/phusion_passenger/standalone/utils.rb +46 -0
  1126. data/lib/phusion_passenger/standalone/version_command.rb +42 -0
  1127. data/lib/phusion_passenger/templates/apache2/apache_must_be_compiled_with_compatible_mpm.txt.erb +9 -0
  1128. data/lib/phusion_passenger/templates/apache2/config_snippets.txt.erb +13 -0
  1129. data/lib/phusion_passenger/templates/apache2/deployment_example.txt.erb +23 -0
  1130. data/lib/phusion_passenger/templates/apache2/no_write_permission_to_passenger_root.txt.erb +9 -0
  1131. data/lib/phusion_passenger/templates/apache2/possible_solutions_for_compilation_and_installation_problems.txt.erb +11 -0
  1132. data/lib/phusion_passenger/templates/apache2/run_installer_as_root.txt.erb +8 -0
  1133. data/lib/phusion_passenger/templates/apache2/welcome.txt.erb +15 -0
  1134. data/lib/phusion_passenger/templates/app_exited_during_initialization.html.erb +38 -0
  1135. data/lib/phusion_passenger/templates/app_init_error.html.erb +64 -0
  1136. data/lib/phusion_passenger/templates/database_error.html.erb +66 -0
  1137. data/lib/phusion_passenger/templates/error_layout.css +97 -0
  1138. data/lib/phusion_passenger/templates/error_layout.html.erb +39 -0
  1139. data/lib/phusion_passenger/templates/framework_init_error.html.erb +39 -0
  1140. data/lib/phusion_passenger/templates/general_error.html.erb +22 -0
  1141. data/lib/phusion_passenger/templates/load_error.html.erb +46 -0
  1142. data/lib/phusion_passenger/templates/nginx/ask_for_extra_configure_flags.txt.erb +8 -0
  1143. data/lib/phusion_passenger/templates/nginx/cannot_write_to_dir.txt.erb +11 -0
  1144. data/lib/phusion_passenger/templates/nginx/config_snippets.txt.erb +17 -0
  1145. data/lib/phusion_passenger/templates/nginx/config_snippets_inserted.txt.erb +20 -0
  1146. data/lib/phusion_passenger/templates/nginx/confirm_extra_configure_flags.txt.erb +5 -0
  1147. data/lib/phusion_passenger/templates/nginx/deployment_example.txt.erb +22 -0
  1148. data/lib/phusion_passenger/templates/nginx/pcre_could_not_be_downloaded.txt.erb +11 -0
  1149. data/lib/phusion_passenger/templates/nginx/pcre_could_not_be_extracted.txt.erb +11 -0
  1150. data/lib/phusion_passenger/templates/nginx/possible_solutions_for_compilation_and_installation_problems.txt.erb +11 -0
  1151. data/lib/phusion_passenger/templates/nginx/possible_solutions_for_download_and_extraction_problems.txt.erb +20 -0
  1152. data/lib/phusion_passenger/templates/nginx/query_download_and_install.txt.erb +21 -0
  1153. data/lib/phusion_passenger/templates/nginx/run_installer_as_root.txt.erb +8 -0
  1154. data/lib/phusion_passenger/templates/nginx/welcome.txt.erb +15 -0
  1155. data/lib/phusion_passenger/templates/standalone/cannot_write_to_dir.txt.erb +11 -0
  1156. data/lib/phusion_passenger/templates/standalone/config.erb +94 -0
  1157. data/lib/phusion_passenger/templates/standalone/possible_solutions_for_download_and_extraction_problems.txt.erb +17 -0
  1158. data/lib/phusion_passenger/templates/standalone/run_installer_as_root.txt.erb +8 -0
  1159. data/lib/phusion_passenger/templates/standalone/welcome.txt.erb +8 -0
  1160. data/lib/phusion_passenger/templates/standalone_default_root/index.html +1 -0
  1161. data/lib/phusion_passenger/templates/version_not_found.html.erb +34 -0
  1162. data/lib/phusion_passenger/utils.rb +1080 -0
  1163. data/lib/phusion_passenger/utils/file_system_watcher.rb +186 -0
  1164. data/lib/phusion_passenger/utils/hosts_file_parser.rb +130 -0
  1165. data/lib/phusion_passenger/utils/rewindable_input.rb +125 -0
  1166. data/lib/phusion_passenger/utils/tmpdir.rb +70 -0
  1167. data/lib/phusion_passenger/utils/unseekable_socket.rb +196 -0
  1168. data/lib/phusion_passenger/wsgi/application_spawner.rb +108 -0
  1169. data/lib/phusion_passenger/wsgi/request_handler.py +199 -0
  1170. data/man/passenger-config.1 +29 -0
  1171. data/man/passenger-make-enterprisey.8 +23 -0
  1172. data/man/passenger-memory-stats.8 +33 -0
  1173. data/man/passenger-status.8 +43 -0
  1174. data/man/passenger-stress-test.1 +43 -0
  1175. data/resources/mime.types +73 -0
  1176. data/resources/union_station_gateway.crt +32 -0
  1177. data/test/config.yml.example +41 -0
  1178. data/test/cxx/ApplicationPool_PoolTest.cpp +33 -0
  1179. data/test/cxx/ApplicationPool_PoolTestCases.cpp +1029 -0
  1180. data/test/cxx/ApplicationPool_ServerTest.cpp +308 -0
  1181. data/test/cxx/ApplicationPool_Server_PoolTest.cpp +80 -0
  1182. data/test/cxx/Base64Test.cpp +50 -0
  1183. data/test/cxx/BufferedIOTest.cpp +364 -0
  1184. data/test/cxx/CachedFileStatTest.cpp +402 -0
  1185. data/test/cxx/CxxTestMain.cpp +122 -0
  1186. data/test/cxx/EventedClientTest.cpp +523 -0
  1187. data/test/cxx/FileChangeCheckerTest.cpp +329 -0
  1188. data/test/cxx/FileDescriptorTest.cpp +69 -0
  1189. data/test/cxx/HttpStatusExtractorTest.cpp +198 -0
  1190. data/test/cxx/IOUtilsTest.cpp +796 -0
  1191. data/test/cxx/LoggingTest.cpp +914 -0
  1192. data/test/cxx/MessageChannelTest.cpp +557 -0
  1193. data/test/cxx/MessageReadersWritersTest.cpp +574 -0
  1194. data/test/cxx/MessageServerTest.cpp +383 -0
  1195. data/test/cxx/PoolOptionsTest.cpp +116 -0
  1196. data/test/cxx/ProcessMetricsCollectorTest.cpp +121 -0
  1197. data/test/cxx/ScgiRequestParserTest.cpp +389 -0
  1198. data/test/cxx/ServerInstanceDirTest.cpp +186 -0
  1199. data/test/cxx/SpawnManagerTest.cpp +161 -0
  1200. data/test/cxx/StaticStringTest.cpp +220 -0
  1201. data/test/cxx/SystemTimeTest.cpp +37 -0
  1202. data/test/cxx/TestSupport.cpp +166 -0
  1203. data/test/cxx/TestSupport.h +254 -0
  1204. data/test/cxx/UtilsTest.cpp +491 -0
  1205. data/test/cxx/VariantMapTest.cpp +179 -0
  1206. data/test/integration_tests/apache2_tests.rb +666 -0
  1207. data/test/integration_tests/cgi_environment_spec.rb +26 -0
  1208. data/test/integration_tests/hello_world_rack_spec.rb +36 -0
  1209. data/test/integration_tests/hello_world_wsgi_spec.rb +41 -0
  1210. data/test/integration_tests/mycook_spec.rb +166 -0
  1211. data/test/integration_tests/nginx_tests.rb +260 -0
  1212. data/test/integration_tests/spec_helper.rb +19 -0
  1213. data/test/oxt/backtrace_test.cpp +88 -0
  1214. data/test/oxt/counter.hpp +55 -0
  1215. data/test/oxt/dynamic_thread_group_test.cpp +131 -0
  1216. data/test/oxt/oxt_test_main.cpp +25 -0
  1217. data/test/oxt/spin_lock_test.cpp +59 -0
  1218. data/test/oxt/syscall_interruption_test.cpp +38 -0
  1219. data/test/ruby/abstract_request_handler_spec.rb +406 -0
  1220. data/test/ruby/abstract_server_collection_spec.rb +247 -0
  1221. data/test/ruby/abstract_server_spec.rb +61 -0
  1222. data/test/ruby/admin_tools_spec.rb +362 -0
  1223. data/test/ruby/analytics_logger_spec.rb +253 -0
  1224. data/test/ruby/app_process_spec.rb +43 -0
  1225. data/test/ruby/classic_rails/application_spawner_spec.rb +89 -0
  1226. data/test/ruby/classic_rails/framework_spawner_spec.rb +92 -0
  1227. data/test/ruby/debug_logging_spec.rb +141 -0
  1228. data/test/ruby/message_channel_spec.rb +196 -0
  1229. data/test/ruby/rack/application_spawner_spec.rb +116 -0
  1230. data/test/ruby/shared/abstract_server_spec.rb +23 -0
  1231. data/test/ruby/shared/rails/analytics_logging_extensions_spec.rb +375 -0
  1232. data/test/ruby/shared/spawners/classic_rails/framework_spawner_spec.rb +38 -0
  1233. data/test/ruby/shared/spawners/classic_rails/lack_of_rails_gem_version_spec.rb +19 -0
  1234. data/test/ruby/shared/spawners/classic_rails/spawner_spec.rb +15 -0
  1235. data/test/ruby/shared/spawners/non_preloading_spawner_spec.rb +27 -0
  1236. data/test/ruby/shared/spawners/preloading_spawner_spec.rb +29 -0
  1237. data/test/ruby/shared/spawners/reload_all_spec.rb +36 -0
  1238. data/test/ruby/shared/spawners/reload_single_spec.rb +52 -0
  1239. data/test/ruby/shared/spawners/spawn_server_spec.rb +28 -0
  1240. data/test/ruby/shared/spawners/spawner_spec.rb +273 -0
  1241. data/test/ruby/shared/utils/pseudo_io_spec.rb +60 -0
  1242. data/test/ruby/spawn_manager_spec.rb +134 -0
  1243. data/test/ruby/spec_helper.rb +104 -0
  1244. data/test/ruby/utils/file_system_watcher_spec.rb +221 -0
  1245. data/test/ruby/utils/hosts_file_parser.rb +258 -0
  1246. data/test/ruby/utils/unseekable_socket_spec.rb +66 -0
  1247. data/test/ruby/utils_spec.rb +748 -0
  1248. data/test/ruby/wsgi/application_spawner_spec.rb +50 -0
  1249. data/test/stub/apache2/httpd.conf.erb +86 -0
  1250. data/test/stub/apache2/mime.types +748 -0
  1251. data/test/stub/garbage1.dat +0 -0
  1252. data/test/stub/garbage2.dat +0 -0
  1253. data/test/stub/garbage3.dat +0 -0
  1254. data/test/stub/http_request.yml +23 -0
  1255. data/test/stub/message_channel.rb +11 -0
  1256. data/test/stub/message_channel_2.rb +12 -0
  1257. data/test/stub/message_channel_3.rb +19 -0
  1258. data/test/stub/nginx/koi-utf +109 -0
  1259. data/test/stub/nginx/koi-win +103 -0
  1260. data/test/stub/nginx/mime.types +70 -0
  1261. data/test/stub/nginx/nginx.conf.erb +58 -0
  1262. data/test/stub/nginx/win-utf +126 -0
  1263. data/test/stub/rack/config.ru +4 -0
  1264. data/test/stub/rack/public/rack.jpg +0 -0
  1265. data/test/stub/rails_apps/1.2/empty/Rakefile +10 -0
  1266. data/test/stub/rails_apps/1.2/empty/app/controllers/application.rb +7 -0
  1267. data/test/stub/rails_apps/1.2/empty/app/helpers/application_helper.rb +3 -0
  1268. data/test/stub/rails_apps/1.2/empty/config/boot.rb +108 -0
  1269. data/test/stub/rails_apps/1.2/empty/config/database.yml +31 -0
  1270. data/test/stub/rails_apps/1.2/empty/config/environment.rb +66 -0
  1271. data/test/stub/rails_apps/1.2/empty/config/environments/development.rb +21 -0
  1272. data/test/stub/rails_apps/1.2/empty/config/environments/production.rb +18 -0
  1273. data/test/stub/rails_apps/1.2/empty/config/environments/staging.rb +18 -0
  1274. data/test/stub/rails_apps/1.2/empty/config/environments/test.rb +19 -0
  1275. data/test/stub/rails_apps/1.2/empty/config/routes.rb +23 -0
  1276. data/test/stub/rails_apps/1.2/empty/doc/README_FOR_APP +2 -0
  1277. data/test/stub/rails_apps/1.2/empty/public/404.html +30 -0
  1278. data/test/stub/rails_apps/1.2/empty/public/500.html +30 -0
  1279. data/test/stub/rails_apps/1.2/empty/public/dispatch.cgi +10 -0
  1280. data/test/stub/rails_apps/1.2/empty/public/dispatch.fcgi +24 -0
  1281. data/test/stub/rails_apps/1.2/empty/public/dispatch.rb +10 -0
  1282. data/test/stub/rails_apps/1.2/empty/public/favicon.ico +0 -0
  1283. data/test/stub/rails_apps/1.2/empty/public/images/rails.png +0 -0
  1284. data/test/stub/rails_apps/1.2/empty/public/robots.txt +1 -0
  1285. data/test/stub/rails_apps/1.2/empty/script/about +3 -0
  1286. data/test/stub/rails_apps/1.2/empty/script/breakpointer +3 -0
  1287. data/test/stub/rails_apps/1.2/empty/script/console +3 -0
  1288. data/test/stub/rails_apps/1.2/empty/script/destroy +3 -0
  1289. data/test/stub/rails_apps/1.2/empty/script/generate +3 -0
  1290. data/test/stub/rails_apps/1.2/empty/script/performance/benchmarker +3 -0
  1291. data/test/stub/rails_apps/1.2/empty/script/performance/profiler +3 -0
  1292. data/test/stub/rails_apps/1.2/empty/script/plugin +3 -0
  1293. data/test/stub/rails_apps/1.2/empty/script/process/inspector +3 -0
  1294. data/test/stub/rails_apps/1.2/empty/script/process/reaper +3 -0
  1295. data/test/stub/rails_apps/1.2/empty/script/process/spawner +3 -0
  1296. data/test/stub/rails_apps/1.2/empty/script/runner +3 -0
  1297. data/test/stub/rails_apps/1.2/empty/script/server +3 -0
  1298. data/test/stub/rails_apps/1.2/empty/test/test_helper.rb +28 -0
  1299. data/test/stub/rails_apps/2.0/empty/Rakefile +10 -0
  1300. data/test/stub/rails_apps/2.0/empty/app/controllers/application.rb +10 -0
  1301. data/test/stub/rails_apps/2.0/empty/app/helpers/application_helper.rb +3 -0
  1302. data/test/stub/rails_apps/2.0/empty/config/boot.rb +108 -0
  1303. data/test/stub/rails_apps/2.0/empty/config/database.yml +31 -0
  1304. data/test/stub/rails_apps/2.0/empty/config/environment.rb +59 -0
  1305. data/test/stub/rails_apps/2.0/empty/config/environments/development.rb +18 -0
  1306. data/test/stub/rails_apps/2.0/empty/config/environments/production.rb +18 -0
  1307. data/test/stub/rails_apps/2.0/empty/config/environments/staging.rb +18 -0
  1308. data/test/stub/rails_apps/2.0/empty/config/environments/test.rb +22 -0
  1309. data/test/stub/rails_apps/2.0/empty/config/initializers/inflections.rb +10 -0
  1310. data/test/stub/rails_apps/2.0/empty/config/initializers/mime_types.rb +5 -0
  1311. data/test/stub/rails_apps/2.0/empty/config/routes.rb +35 -0
  1312. data/test/stub/rails_apps/2.0/empty/doc/README_FOR_APP +2 -0
  1313. data/test/stub/rails_apps/2.0/empty/public/404.html +30 -0
  1314. data/test/stub/rails_apps/2.0/empty/public/422.html +30 -0
  1315. data/test/stub/rails_apps/2.0/empty/public/500.html +30 -0
  1316. data/test/stub/rails_apps/2.0/empty/public/dispatch.cgi +10 -0
  1317. data/test/stub/rails_apps/2.0/empty/public/dispatch.fcgi +24 -0
  1318. data/test/stub/rails_apps/2.0/empty/public/dispatch.rb +10 -0
  1319. data/test/stub/rails_apps/2.0/empty/public/favicon.ico +0 -0
  1320. data/test/stub/rails_apps/2.0/empty/public/images/rails.png +0 -0
  1321. data/test/stub/rails_apps/2.0/empty/public/robots.txt +5 -0
  1322. data/test/stub/rails_apps/2.0/empty/script/about +3 -0
  1323. data/test/stub/rails_apps/2.0/empty/script/console +3 -0
  1324. data/test/stub/rails_apps/2.0/empty/script/destroy +3 -0
  1325. data/test/stub/rails_apps/2.0/empty/script/generate +3 -0
  1326. data/test/stub/rails_apps/2.0/empty/script/performance/benchmarker +3 -0
  1327. data/test/stub/rails_apps/2.0/empty/script/performance/profiler +3 -0
  1328. data/test/stub/rails_apps/2.0/empty/script/performance/request +3 -0
  1329. data/test/stub/rails_apps/2.0/empty/script/plugin +3 -0
  1330. data/test/stub/rails_apps/2.0/empty/script/process/inspector +3 -0
  1331. data/test/stub/rails_apps/2.0/empty/script/process/reaper +3 -0
  1332. data/test/stub/rails_apps/2.0/empty/script/process/spawner +3 -0
  1333. data/test/stub/rails_apps/2.0/empty/script/runner +3 -0
  1334. data/test/stub/rails_apps/2.0/empty/script/server +3 -0
  1335. data/test/stub/rails_apps/2.0/empty/test/test_helper.rb +38 -0
  1336. data/test/stub/rails_apps/2.2/empty/Rakefile +10 -0
  1337. data/test/stub/rails_apps/2.2/empty/app/controllers/application.rb +15 -0
  1338. data/test/stub/rails_apps/2.2/empty/app/helpers/application_helper.rb +3 -0
  1339. data/test/stub/rails_apps/2.2/empty/config/boot.rb +109 -0
  1340. data/test/stub/rails_apps/2.2/empty/config/database.yml +31 -0
  1341. data/test/stub/rails_apps/2.2/empty/config/environment.rb +75 -0
  1342. data/test/stub/rails_apps/2.2/empty/config/environments/development.rb +17 -0
  1343. data/test/stub/rails_apps/2.2/empty/config/environments/production.rb +24 -0
  1344. data/test/stub/rails_apps/2.2/empty/config/environments/staging.rb +24 -0
  1345. data/test/stub/rails_apps/2.2/empty/config/environments/test.rb +22 -0
  1346. data/test/stub/rails_apps/2.2/empty/config/initializers/inflections.rb +10 -0
  1347. data/test/stub/rails_apps/2.2/empty/config/initializers/mime_types.rb +5 -0
  1348. data/test/stub/rails_apps/2.2/empty/config/initializers/new_rails_defaults.rb +17 -0
  1349. data/test/stub/rails_apps/2.2/empty/config/locales/en.yml +5 -0
  1350. data/test/stub/rails_apps/2.2/empty/config/routes.rb +43 -0
  1351. data/test/stub/rails_apps/2.2/empty/doc/README_FOR_APP +5 -0
  1352. data/test/stub/rails_apps/2.2/empty/public/404.html +30 -0
  1353. data/test/stub/rails_apps/2.2/empty/public/422.html +30 -0
  1354. data/test/stub/rails_apps/2.2/empty/public/500.html +33 -0
  1355. data/test/stub/rails_apps/2.2/empty/public/dispatch.cgi +10 -0
  1356. data/test/stub/rails_apps/2.2/empty/public/dispatch.fcgi +24 -0
  1357. data/test/stub/rails_apps/2.2/empty/public/dispatch.rb +10 -0
  1358. data/test/stub/rails_apps/2.2/empty/public/favicon.ico +0 -0
  1359. data/test/stub/rails_apps/2.2/empty/public/images/rails.png +0 -0
  1360. data/test/stub/rails_apps/2.2/empty/public/robots.txt +5 -0
  1361. data/test/stub/rails_apps/2.2/empty/script/about +4 -0
  1362. data/test/stub/rails_apps/2.2/empty/script/console +3 -0
  1363. data/test/stub/rails_apps/2.2/empty/script/dbconsole +3 -0
  1364. data/test/stub/rails_apps/2.2/empty/script/destroy +3 -0
  1365. data/test/stub/rails_apps/2.2/empty/script/generate +3 -0
  1366. data/test/stub/rails_apps/2.2/empty/script/performance/benchmarker +3 -0
  1367. data/test/stub/rails_apps/2.2/empty/script/performance/profiler +3 -0
  1368. data/test/stub/rails_apps/2.2/empty/script/performance/request +3 -0
  1369. data/test/stub/rails_apps/2.2/empty/script/plugin +3 -0
  1370. data/test/stub/rails_apps/2.2/empty/script/process/inspector +3 -0
  1371. data/test/stub/rails_apps/2.2/empty/script/process/reaper +3 -0
  1372. data/test/stub/rails_apps/2.2/empty/script/process/spawner +3 -0
  1373. data/test/stub/rails_apps/2.2/empty/script/runner +3 -0
  1374. data/test/stub/rails_apps/2.2/empty/script/server +3 -0
  1375. data/test/stub/rails_apps/2.2/empty/test/performance/browsing_test.rb +9 -0
  1376. data/test/stub/rails_apps/2.2/empty/test/test_helper.rb +38 -0
  1377. data/test/stub/rails_apps/2.3/empty/Rakefile +10 -0
  1378. data/test/stub/rails_apps/2.3/empty/app/controllers/application_controller.rb +10 -0
  1379. data/test/stub/rails_apps/2.3/empty/app/helpers/application_helper.rb +3 -0
  1380. data/test/stub/rails_apps/2.3/empty/config/boot.rb +110 -0
  1381. data/test/stub/rails_apps/2.3/empty/config/database.yml +31 -0
  1382. data/test/stub/rails_apps/2.3/empty/config/environment.rb +41 -0
  1383. data/test/stub/rails_apps/2.3/empty/config/environments/development.rb +17 -0
  1384. data/test/stub/rails_apps/2.3/empty/config/environments/production.rb +28 -0
  1385. data/test/stub/rails_apps/2.3/empty/config/environments/staging.rb +28 -0
  1386. data/test/stub/rails_apps/2.3/empty/config/environments/test.rb +28 -0
  1387. data/test/stub/rails_apps/2.3/empty/config/initializers/backtrace_silencers.rb +7 -0
  1388. data/test/stub/rails_apps/2.3/empty/config/initializers/inflections.rb +10 -0
  1389. data/test/stub/rails_apps/2.3/empty/config/initializers/mime_types.rb +5 -0
  1390. data/test/stub/rails_apps/2.3/empty/config/initializers/new_rails_defaults.rb +21 -0
  1391. data/test/stub/rails_apps/2.3/empty/config/initializers/session_store.rb +15 -0
  1392. data/test/stub/rails_apps/2.3/empty/config/locales/en.yml +5 -0
  1393. data/test/stub/rails_apps/2.3/empty/config/routes.rb +43 -0
  1394. data/test/stub/rails_apps/2.3/empty/db/seeds.rb +7 -0
  1395. data/test/stub/rails_apps/2.3/empty/doc/README_FOR_APP +2 -0
  1396. data/test/stub/rails_apps/2.3/empty/public/404.html +30 -0
  1397. data/test/stub/rails_apps/2.3/empty/public/422.html +30 -0
  1398. data/test/stub/rails_apps/2.3/empty/public/500.html +30 -0
  1399. data/test/stub/rails_apps/2.3/empty/public/favicon.ico +0 -0
  1400. data/test/stub/rails_apps/2.3/empty/public/images/rails.png +0 -0
  1401. data/test/stub/rails_apps/2.3/empty/public/robots.txt +5 -0
  1402. data/test/stub/rails_apps/2.3/empty/script/about +4 -0
  1403. data/test/stub/rails_apps/2.3/empty/script/console +3 -0
  1404. data/test/stub/rails_apps/2.3/empty/script/dbconsole +3 -0
  1405. data/test/stub/rails_apps/2.3/empty/script/destroy +3 -0
  1406. data/test/stub/rails_apps/2.3/empty/script/generate +3 -0
  1407. data/test/stub/rails_apps/2.3/empty/script/performance/benchmarker +3 -0
  1408. data/test/stub/rails_apps/2.3/empty/script/performance/profiler +3 -0
  1409. data/test/stub/rails_apps/2.3/empty/script/plugin +3 -0
  1410. data/test/stub/rails_apps/2.3/empty/script/runner +3 -0
  1411. data/test/stub/rails_apps/2.3/empty/script/server +3 -0
  1412. data/test/stub/rails_apps/2.3/empty/test/performance/browsing_test.rb +9 -0
  1413. data/test/stub/rails_apps/2.3/empty/test/test_helper.rb +38 -0
  1414. data/test/stub/rails_apps/2.3/foobar/Rakefile +10 -0
  1415. data/test/stub/rails_apps/2.3/foobar/app/controllers/application_controller.rb +12 -0
  1416. data/test/stub/rails_apps/2.3/foobar/app/controllers/bar_controller_1.rb +5 -0
  1417. data/test/stub/rails_apps/2.3/foobar/app/controllers/bar_controller_2.rb +5 -0
  1418. data/test/stub/rails_apps/2.3/foobar/app/controllers/foo_controller.rb +21 -0
  1419. data/test/stub/rails_apps/2.3/foobar/app/helpers/application_helper.rb +3 -0
  1420. data/test/stub/rails_apps/2.3/foobar/config/boot.rb +110 -0
  1421. data/test/stub/rails_apps/2.3/foobar/config/database.yml +19 -0
  1422. data/test/stub/rails_apps/2.3/foobar/config/environment.rb +59 -0
  1423. data/test/stub/rails_apps/2.3/foobar/config/environments/development.rb +17 -0
  1424. data/test/stub/rails_apps/2.3/foobar/config/environments/production.rb +18 -0
  1425. data/test/stub/rails_apps/2.3/foobar/config/environments/staging.rb +18 -0
  1426. data/test/stub/rails_apps/2.3/foobar/config/initializers/inflections.rb +10 -0
  1427. data/test/stub/rails_apps/2.3/foobar/config/initializers/mime_types.rb +5 -0
  1428. data/test/stub/rails_apps/2.3/foobar/config/routes.rb +35 -0
  1429. data/test/stub/rails_apps/2.3/foobar/script/about +3 -0
  1430. data/test/stub/rails_apps/2.3/foobar/script/console +3 -0
  1431. data/test/stub/rails_apps/2.3/foobar/script/dbconsole +3 -0
  1432. data/test/stub/rails_apps/2.3/foobar/script/destroy +3 -0
  1433. data/test/stub/rails_apps/2.3/foobar/script/generate +3 -0
  1434. data/test/stub/rails_apps/2.3/foobar/script/performance/benchmarker +3 -0
  1435. data/test/stub/rails_apps/2.3/foobar/script/performance/profiler +3 -0
  1436. data/test/stub/rails_apps/2.3/foobar/script/performance/request +3 -0
  1437. data/test/stub/rails_apps/2.3/foobar/script/plugin +3 -0
  1438. data/test/stub/rails_apps/2.3/foobar/script/process/inspector +3 -0
  1439. data/test/stub/rails_apps/2.3/foobar/script/process/reaper +3 -0
  1440. data/test/stub/rails_apps/2.3/foobar/script/process/spawner +3 -0
  1441. data/test/stub/rails_apps/2.3/foobar/script/runner +3 -0
  1442. data/test/stub/rails_apps/2.3/foobar/script/server +3 -0
  1443. data/test/stub/rails_apps/2.3/mycook/Rakefile +10 -0
  1444. data/test/stub/rails_apps/2.3/mycook/app/controllers/application_controller.rb +12 -0
  1445. data/test/stub/rails_apps/2.3/mycook/app/controllers/recipes_controller.rb +5 -0
  1446. data/test/stub/rails_apps/2.3/mycook/app/controllers/uploads_controller.rb +15 -0
  1447. data/test/stub/rails_apps/2.3/mycook/app/controllers/welcome_controller.rb +71 -0
  1448. data/test/stub/rails_apps/2.3/mycook/app/helpers/application_helper.rb +3 -0
  1449. data/test/stub/rails_apps/2.3/mycook/app/views/layouts/default.rhtml +26 -0
  1450. data/test/stub/rails_apps/2.3/mycook/app/views/recipes/create.rhtml +13 -0
  1451. data/test/stub/rails_apps/2.3/mycook/app/views/recipes/index.rhtml +3 -0
  1452. data/test/stub/rails_apps/2.3/mycook/app/views/recipes/new.rhtml +8 -0
  1453. data/test/stub/rails_apps/2.3/mycook/app/views/uploads/index.rhtml +1 -0
  1454. data/test/stub/rails_apps/2.3/mycook/app/views/uploads/new.html.erb +8 -0
  1455. data/test/stub/rails_apps/2.3/mycook/app/views/welcome/cached.rhtml +1 -0
  1456. data/test/stub/rails_apps/2.3/mycook/app/views/welcome/index.rhtml +20 -0
  1457. data/test/stub/rails_apps/2.3/mycook/config/boot.rb +110 -0
  1458. data/test/stub/rails_apps/2.3/mycook/config/database.yml +19 -0
  1459. data/test/stub/rails_apps/2.3/mycook/config/environment.rb +61 -0
  1460. data/test/stub/rails_apps/2.3/mycook/config/environments/development.rb +18 -0
  1461. data/test/stub/rails_apps/2.3/mycook/config/environments/production.rb +19 -0
  1462. data/test/stub/rails_apps/2.3/mycook/config/initializers/inflections.rb +10 -0
  1463. data/test/stub/rails_apps/2.3/mycook/config/initializers/mime_types.rb +5 -0
  1464. data/test/stub/rails_apps/2.3/mycook/config/routes.rb +38 -0
  1465. data/test/stub/rails_apps/2.3/mycook/log/useless.txt +1 -0
  1466. data/test/stub/rails_apps/2.3/mycook/public/404.html +30 -0
  1467. data/test/stub/rails_apps/2.3/mycook/public/422.html +30 -0
  1468. data/test/stub/rails_apps/2.3/mycook/public/500.html +30 -0
  1469. data/test/stub/rails_apps/2.3/mycook/public/dispatch.cgi +10 -0
  1470. data/test/stub/rails_apps/2.3/mycook/public/dispatch.fcgi +24 -0
  1471. data/test/stub/rails_apps/2.3/mycook/public/dispatch.rb +10 -0
  1472. data/test/stub/rails_apps/2.3/mycook/public/favicon.ico +0 -0
  1473. data/test/stub/rails_apps/2.3/mycook/public/images/angrywizard.gif +0 -0
  1474. data/test/stub/rails_apps/2.3/mycook/public/images/cookbook.gif +0 -0
  1475. data/test/stub/rails_apps/2.3/mycook/public/images/header.png +0 -0
  1476. data/test/stub/rails_apps/2.3/mycook/public/images/rails.png +0 -0
  1477. data/test/stub/rails_apps/2.3/mycook/public/javascripts/application.js +2 -0
  1478. data/test/stub/rails_apps/2.3/mycook/public/javascripts/controls.js +963 -0
  1479. data/test/stub/rails_apps/2.3/mycook/public/javascripts/dragdrop.js +973 -0
  1480. data/test/stub/rails_apps/2.3/mycook/public/javascripts/effects.js +1128 -0
  1481. data/test/stub/rails_apps/2.3/mycook/public/javascripts/prototype.js +4320 -0
  1482. data/test/stub/rails_apps/2.3/mycook/public/robots.txt +5 -0
  1483. data/test/stub/rails_apps/2.3/mycook/public/uploads.html +26 -0
  1484. data/test/stub/rails_apps/2.3/mycook/public/welcome/cached.html +26 -0
  1485. data/test/stub/rails_apps/2.3/mycook/script/about +3 -0
  1486. data/test/stub/rails_apps/2.3/mycook/script/console +3 -0
  1487. data/test/stub/rails_apps/2.3/mycook/script/dbconsole +3 -0
  1488. data/test/stub/rails_apps/2.3/mycook/script/destroy +3 -0
  1489. data/test/stub/rails_apps/2.3/mycook/script/generate +3 -0
  1490. data/test/stub/rails_apps/2.3/mycook/script/performance/benchmarker +3 -0
  1491. data/test/stub/rails_apps/2.3/mycook/script/performance/profiler +3 -0
  1492. data/test/stub/rails_apps/2.3/mycook/script/performance/request +3 -0
  1493. data/test/stub/rails_apps/2.3/mycook/script/plugin +3 -0
  1494. data/test/stub/rails_apps/2.3/mycook/script/process/inspector +3 -0
  1495. data/test/stub/rails_apps/2.3/mycook/script/process/reaper +3 -0
  1496. data/test/stub/rails_apps/2.3/mycook/script/process/spawner +3 -0
  1497. data/test/stub/rails_apps/2.3/mycook/script/runner +3 -0
  1498. data/test/stub/rails_apps/2.3/mycook/script/server +3 -0
  1499. data/test/stub/rails_apps/2.3/mycook/sites/some.site/public/uploads.html +26 -0
  1500. data/test/stub/rails_apps/2.3/mycook/sites/some.site/public/welcome/cached.html +26 -0
  1501. data/test/stub/rails_apps/2.3/mycook/tmp/cache/useless.txt +1 -0
  1502. data/test/stub/rails_apps/2.3/mycook/tmp/pids/useless.txt +1 -0
  1503. data/test/stub/rails_apps/2.3/mycook/tmp/sessions/useless.txt +1 -0
  1504. data/test/stub/rails_apps/2.3/mycook/tmp/sockets/useless.txt +1 -0
  1505. data/test/stub/rails_apps/3.0/empty/Gemfile +22 -0
  1506. data/test/stub/rails_apps/3.0/empty/Gemfile.lock +73 -0
  1507. data/test/stub/rails_apps/3.0/empty/Rakefile +10 -0
  1508. data/test/stub/rails_apps/3.0/empty/app/controllers/application_controller.rb +4 -0
  1509. data/test/stub/rails_apps/3.0/empty/app/helpers/application_helper.rb +2 -0
  1510. data/test/stub/rails_apps/3.0/empty/app/views/layouts/application.html.erb +14 -0
  1511. data/test/stub/rails_apps/3.0/empty/config.ru +4 -0
  1512. data/test/stub/rails_apps/3.0/empty/config/application.rb +48 -0
  1513. data/test/stub/rails_apps/3.0/empty/config/boot.rb +13 -0
  1514. data/test/stub/rails_apps/3.0/empty/config/database.yml +22 -0
  1515. data/test/stub/rails_apps/3.0/empty/config/environment.rb +5 -0
  1516. data/test/stub/rails_apps/3.0/empty/config/environments/development.rb +19 -0
  1517. data/test/stub/rails_apps/3.0/empty/config/environments/production.rb +48 -0
  1518. data/test/stub/rails_apps/3.0/empty/config/environments/test.rb +32 -0
  1519. data/test/stub/rails_apps/3.0/empty/config/initializers/backtrace_silencers.rb +7 -0
  1520. data/test/stub/rails_apps/3.0/empty/config/initializers/inflections.rb +10 -0
  1521. data/test/stub/rails_apps/3.0/empty/config/initializers/mime_types.rb +5 -0
  1522. data/test/stub/rails_apps/3.0/empty/config/initializers/passenger.rb +1 -0
  1523. data/test/stub/rails_apps/3.0/empty/config/initializers/secret_token.rb +7 -0
  1524. data/test/stub/rails_apps/3.0/empty/config/initializers/session_store.rb +8 -0
  1525. data/test/stub/rails_apps/3.0/empty/config/locales/en.yml +5 -0
  1526. data/test/stub/rails_apps/3.0/empty/config/routes.rb +58 -0
  1527. data/test/stub/rails_apps/3.0/empty/db/seeds.rb +7 -0
  1528. data/test/stub/rails_apps/3.0/empty/doc/README_FOR_APP +2 -0
  1529. data/test/stub/rails_apps/3.0/empty/public/404.html +26 -0
  1530. data/test/stub/rails_apps/3.0/empty/public/422.html +26 -0
  1531. data/test/stub/rails_apps/3.0/empty/public/500.html +26 -0
  1532. data/test/stub/rails_apps/3.0/empty/public/favicon.ico +0 -0
  1533. data/test/stub/rails_apps/3.0/empty/public/index.html +279 -0
  1534. data/test/stub/rails_apps/3.0/empty/public/robots.txt +5 -0
  1535. data/test/stub/rails_apps/3.0/empty/script/rails +9 -0
  1536. data/test/stub/rails_apps/3.0/empty/test/performance/browsing_test.rb +9 -0
  1537. data/test/stub/rails_apps/3.0/empty/test/test_helper.rb +13 -0
  1538. data/test/stub/spawn_server.rb +22 -0
  1539. data/test/stub/upload_data.txt +494 -0
  1540. data/test/stub/vendor_rails/minimal/README +1 -0
  1541. data/test/stub/vendor_rails/minimal/actionmailer/lib/action_mailer.rb +0 -0
  1542. data/test/stub/vendor_rails/minimal/actionpack/lib/action_controller.rb +22 -0
  1543. data/test/stub/vendor_rails/minimal/actionpack/lib/action_pack.rb +0 -0
  1544. data/test/stub/vendor_rails/minimal/actionpack/lib/action_view.rb +0 -0
  1545. data/test/stub/vendor_rails/minimal/activerecord/lib/active_record.rb +7 -0
  1546. data/test/stub/vendor_rails/minimal/activeresource/lib/active_resource.rb +0 -0
  1547. data/test/stub/vendor_rails/minimal/activesupport/lib/active_support.rb +17 -0
  1548. data/test/stub/vendor_rails/minimal/activesupport/lib/active_support/whiny_nil.rb +0 -0
  1549. data/test/stub/vendor_rails/minimal/railties/lib/dispatcher.rb +0 -0
  1550. data/test/stub/vendor_rails/minimal/railties/lib/initializer.rb +57 -0
  1551. data/test/stub/vendor_rails/minimal/railties/lib/ruby_version_check.rb +1 -0
  1552. data/test/stub/wsgi/passenger_wsgi.py +3 -0
  1553. data/test/stub/wsgi/public/wsgi-snake.jpg +0 -0
  1554. data/test/stub/zsfa/header.png +0 -0
  1555. data/test/stub/zsfa/index.html +14 -0
  1556. data/test/stub/zsfa/zsfa.png +0 -0
  1557. data/test/support/allocate_memory.c +14 -0
  1558. data/test/support/apache2_controller.rb +258 -0
  1559. data/test/support/multipart.rb +62 -0
  1560. data/test/support/nginx_controller.rb +99 -0
  1561. data/test/support/test_helper.rb +448 -0
  1562. data/test/support/valgrind.h +2539 -0
  1563. data/test/tut/tut.h +1240 -0
  1564. data/test/tut/tut_reporter.h +256 -0
  1565. metadata +1703 -0
@@ -0,0 +1 @@
1
+ asciidoc required to build docs
@@ -0,0 +1,1394 @@
1
+ = Phusion Passenger users guide, Nginx version =
2
+
3
+ image:images/phusion_banner.png[link="http://www.phusion.nl/"]
4
+
5
+ Phusion Passenger is an Nginx module, which makes deploying Ruby and Ruby on
6
+ Rails applications on Nginx a breeze. It follows the usual Ruby on Rails
7
+ conventions, such as "Don't-Repeat-Yourself" and ease of setup, while at the
8
+ same time providing enough flexibility.
9
+
10
+ This users guide will teach you:
11
+
12
+ - How to install Nginx with Phusion Passenger support.
13
+ - How to configure Phusion Passenger.
14
+ - How to deploy a Ruby on Rails application.
15
+ - How to deploy a link:http://rack.rubyforge.org/[Rack]-based Ruby application.
16
+ - How to solve common problems.
17
+
18
+ This guide assumes that the reader is somewhat familiar with Nginx and with
19
+ using the commandline.
20
+
21
+
22
+ == Support information ==
23
+
24
+ === Supported operating systems ===
25
+
26
+ Phusion Passenger works on any POSIX-compliant operating system. In other
27
+ words: practically any operating system on earth, except Microsoft Windows.
28
+
29
+ Phusion Passenger is confirmed on a large number of operating systems and Linux
30
+ distributions, including, but not limited to, Ubuntu, Debian, CentOS/Fedora/RHEL,
31
+ Gentoo, Mac OS X, FreeBSD and Solaris. Both 32-bit and 64-bit platforms are supported.
32
+ Please
33
+ link:http://code.google.com/p/phusion-passenger/issues/list[report a bug]
34
+ or
35
+ link:http://groups.google.com/group/phusion-passenger[join our discussion forum]
36
+ if it doesn't work on your POSIX-compliant operating system.
37
+
38
+ === Where to get support ===
39
+
40
+ * link:http://code.google.com/p/phusion-passenger/issues/list[Issue tracker] - report
41
+ bugs here.
42
+ * link:http://groups.google.com/group/phusion-passenger[Discussion forum] - post a
43
+ message here if you're experiencing problems.
44
+
45
+
46
+ == Installing Phusion Passenger ==
47
+
48
+ === Overview ===
49
+
50
+ As you might already know, Nginx does not support loadable modules, in contrast
51
+ to most other web servers (e.g. Apache). Therefore, to install Phusion Passenger
52
+ for Nginx, one must recompile and reinstall Nginx with Phusion Passenger support.
53
+ There are two ways to do this:
54
+
55
+ 1. By running the Phusion Passenger installer for Nginx. This installer will
56
+ guide you through the entire installation process, including downloading,
57
+ compiling and installing Nginx. You should be able to get Nginx with Phusion
58
+ Passenger support up-and-running in a matter of minutes. This is the
59
+ recommended installation method.
60
+ 2. By manually configuring and compiling Nginx with Phusion Passenger support,
61
+ through Nginx's `--add-module` configure option. Generally, using our
62
+ installer is easier, so you should only use this method if you're already
63
+ familiar with compiling Nginx.
64
+
65
+ TIP: You might have to run the installation commands in the following sections
66
+ as 'root'. If the installer fails because of permission errors, it will tell
67
+ you.
68
+
69
+ [[specifying_ruby_installation]]
70
+ === Specifying the correct Ruby installation ===
71
+
72
+ If your system has multiple Ruby installations -- which is likely the case on
73
+ MacOS X, or if you've also installed
74
+ link:http://www.rubyenterpriseedition.com[Ruby Enterprise Edition] -- then you
75
+ will need to tell the operating system which Ruby installation to use, prior to
76
+ running the Phusion Passenger installer. If you only have one Ruby installation
77
+ (the case on most Linux systems), then you can skip this section because Phusion
78
+ Passenger will automatically detect it.
79
+
80
+ To specify a Ruby installation, prepend your Ruby installation's `bin`
81
+ directory to the `PATH` environment variable. For example, if you have the
82
+ following Ruby installations:
83
+
84
+ - /usr/bin/ruby
85
+ - /opt/myruby/bin/ruby
86
+
87
+ and you want to use the latter, then type:
88
+
89
+ ----------------------------------
90
+ export PATH=/opt/myruby/bin:$PATH
91
+ ----------------------------------
92
+
93
+ === Installing Phusion Passenger for Nginx through the installer ===
94
+
95
+ ==== Obtaining the Phusion Passenger files and running the installer ====
96
+
97
+ You must obtain the Phusion Passenger files in order to run the installer.
98
+ This can be done either by installing the Phusion Passenger gem, or by
99
+ downloading the source tarball.
100
+
101
+ ===== Gem =====
102
+
103
+ First, install the Phusion Passenger gem by running:
104
+
105
+ ---------------------------------
106
+ gem install passenger
107
+ ---------------------------------
108
+
109
+ Next, run the Phusion Passenger installer for Nginx:
110
+
111
+ ---------------------------------
112
+ passenger-install-nginx-module
113
+ ---------------------------------
114
+
115
+ Please follow the instructions given by the installer.
116
+
117
+ ===== Source tarball =====
118
+
119
+ The source tarball can be download from the
120
+ link:http://www.modrails.com/[Phusion Passenger website]. Extract the tarball to
121
+ whatever location you prefer. *The Phusion Passenger files are to reside in that
122
+ location permanently.* For example, if you would like Phusion Passenger to
123
+ reside in `/opt/passenger-x.x.x`, then type:
124
+
125
+ --------------------------------------------------------------
126
+ cd /opt
127
+ tar xzvf ~/YourDownloadsFolder/passenger-x.x.x.tar.gz
128
+ --------------------------------------------------------------
129
+
130
+ Next, run the Phusion Passenger installer for Nginx:
131
+
132
+ --------------------------------------------------------------
133
+ /opt/passenger-x.x.x/bin/passenger-install-nginx-module
134
+ --------------------------------------------------------------
135
+
136
+ Please follow the instructions given by the installer.
137
+
138
+ IMPORTANT: Please do not remove the passenger-x.x.x folder after installation.
139
+ Furthermore, the passenger-x.x.x folder must be accessible by Nginx.
140
+
141
+ ==== Non-interactive/automatic installation ====
142
+
143
+ By default, the installer is interactive. If you want to automate installation,
144
+ then you can do so by passing various answers to the installer through command
145
+ line options.
146
+
147
+ Please run the installer with `--help` for a list of available command line
148
+ options.
149
+
150
+ === Installing Phusion Passenger for Nginx manually ===
151
+
152
+ You can also install Phusion Passenger the way you install any other Nginx module.
153
+ To do this, run Nginx's configure script with `--add-module=/path-to-passenger-root/ext/nginx`.
154
+
155
+ If you installed Phusion Passenger via the gem, then 'path-to-passenger-root'
156
+ can be obtained with the command:
157
+
158
+ --------------------------
159
+ passenger-config --root
160
+ --------------------------
161
+
162
+ This will probably output something along the lines of '/usr/lib/ruby/gems/1.8/gems/passenger-x.x.x',
163
+ so you'll probably have to specify something like `--add-module=/usr/lib/ruby/gems/1.8/gems/passenger-x.x.x/ext/nginx`.
164
+
165
+ If you installed Phusion Passenger via a source tarball, then 'path-to-passenger-root'
166
+ is the directory which contains the Phusion Passenger source code. So if you
167
+ extracted the Phusion Passenger source code to '/opt/passenger-x.x.x', then you'll
168
+ have to specify `--add-module=/opt/passenger-x.x.x/ext/nginx`.
169
+
170
+ After having installed Nginx with Phusion Passenger support, you must paste the following
171
+ line into your Nginx configuration file:
172
+
173
+ ------------------------------------------
174
+ passenger_root /path-to-passenger-root;
175
+ ------------------------------------------
176
+
177
+ After having done so, restart Nginx.
178
+
179
+ === Upgrading or downgrading Phusion Passenger or Nginx itself ===
180
+
181
+ Whether you're upgrading/downgrading Phusion Passenger or Nginx itself (or perhaps both),
182
+ Nginx will have to be recompiled and reinstalled. The procedure is exactly the same as
183
+ a normal installation so just follow the instructions in section 2.3 or 2.4.
184
+
185
+ When following the installation instructions, eventually `passenger-install-nginx-module`
186
+ or this document will instruct you to copy & paste some settings into the Nginx
187
+ configuration file; something that looks along the lines of:
188
+
189
+ ------------------------------------------
190
+ passenger_root ...;
191
+ passenger_ruby ...;
192
+ ------------------------------------------
193
+
194
+ Because you already had Phusion Passenger installed, you already had similar settings
195
+ in your Nginx configuration file, just with different values. *Replace* the old settings with
196
+ the new ones that you are instructed to paste. It is important that the old settings are
197
+ removed, otherwise Phusion Passenger may malfunction.
198
+
199
+ When you're done, restart Nginx.
200
+
201
+ === Unloading (disabling) Phusion Passenger from Nginx without uninstalling it ===
202
+
203
+ You can temporarily unload (disable) Phusion Passenger from Nginx, without
204
+ uninstalling the Phusion Passenger files, so that Nginx behaves as if Phusion
205
+ Passenger was never installed in the first place. This might be useful to you if,
206
+ for example, you seem to be experiencing a problem caused by Phusion Passenger,
207
+ but you want to make sure whether that's actually the case, without having
208
+ to through the hassle of uninstalling Phusion Passenger completely. When disabled,
209
+ Phusion Passenger will not occupy any memory or CPU or otherwise interfere with
210
+ Nginx.
211
+
212
+ To unload Phusion Passenger, edit your Nginx configuration file(s)
213
+ and comment out all Phusion Passenger configuration directives.
214
+
215
+ For example, if your configuration file looks like this...
216
+
217
+ -----------------------------------
218
+ ...
219
+
220
+ http {
221
+ passenger_root /somewhere/passenger-x.x.x;
222
+ passenger_ruby /usr/bin/ruby;
223
+ passenger_max_pool_size 10;
224
+
225
+ gzip on;
226
+
227
+ server {
228
+ server_name www.foo.com;
229
+ listen 80;
230
+ root /webapps/foo/public;
231
+ passenger_enabled on;
232
+ passenger_use_global_queue on;
233
+ }
234
+ }
235
+ -----------------------------------
236
+
237
+ ...then comment out the relevant directives, so that it looks like this:
238
+
239
+ -----------------------------------
240
+ ...
241
+
242
+ http {
243
+ # passenger_root /somewhere/passenger-x.x.x;
244
+ # passenger_ruby /usr/bin/ruby;
245
+ # passenger_max_pool_size 10;
246
+
247
+ gzip on;
248
+
249
+ server {
250
+ server_name www.foo.com;
251
+ listen 80;
252
+ root /webapps/foo/public;
253
+ # passenger_enabled on;
254
+ # passenger_use_global_queue on;
255
+ }
256
+ }
257
+ -----------------------------------
258
+
259
+ After you've done this, save the file and restart Nginx.
260
+
261
+ === Uninstalling Phusion Passenger ===
262
+
263
+ To uninstall Phusion Passenger, please first remove all Phusion Passenger
264
+ configuration directives from your Nginx configuration file(s). After you've
265
+ done this, you need to remove the Phusion Passenger files.
266
+
267
+ - If you installed Phusion Passenger via a gem, then type `gem uninstall passenger`.
268
+ You might have to run this as root.
269
+ - If you installed Phusion Passenger via a source tarball, then remove the directory
270
+ in which you placed the extracted Phusion Passenger files. This directory is the
271
+ same as the one pointed to the by 'PassengerRoot' configuration directive.
272
+
273
+ After having done so, recompile and reinstall Nginx itself, this time without
274
+ Phusion Passenger support, in order to purge any Phusion Passenger code from the
275
+ Nginx binary.
276
+
277
+
278
+ [[deploying_a_ror_app]]
279
+ == Deploying a Ruby on Rails application ==
280
+
281
+ Suppose you have a Ruby on Rails application in '/webapps/mycook', and you own
282
+ the domain 'www.mycook.com'. You can either deploy your application to the
283
+ virtual host's root (i.e. the application will be accessible from the root URL,
284
+ 'http://www.mycook.com/'), or in a sub URI (i.e. the application will be
285
+ accessible from a sub URL, such as 'http://www.mycook.com/railsapplication').
286
+
287
+ NOTE: The default `RAILS_ENV` environment in which deployed Rails applications
288
+ are run, is ``production''. You can change this by changing the
289
+ <<RailsEnv,rails_env>> configuration option.
290
+
291
+ === Deploying to a virtual host's root ===
292
+
293
+ Add a 'server' virtual host entry to your Nginx configuration file. The virtual
294
+ host's root must point to your Ruby on Rails application's 'public' folder.
295
+
296
+ Inside the 'server' block, set 'passenger_enabled on'.
297
+
298
+ For example:
299
+ -------------------------------------------
300
+ http {
301
+ ...
302
+
303
+ server {
304
+ listen 80;
305
+ server_name www.mycook.com;
306
+ root /webapps/mycook/public;
307
+ passenger_enabled on;
308
+ }
309
+
310
+ ...
311
+ }
312
+ -------------------------------------------
313
+ Then restart Nginx. The application has now been deployed.
314
+
315
+ [[deploying_rails_to_sub_uri]]
316
+ === Deploying to a sub URI ===
317
+
318
+ Suppose that you already have a 'server' virtual host entry:
319
+
320
+ -------------------------------------------
321
+ http {
322
+ ...
323
+
324
+ server {
325
+ listen 80;
326
+ server_name www.phusion.nl;
327
+ root /websites/phusion;
328
+ }
329
+
330
+ ...
331
+ }
332
+ -------------------------------------------
333
+
334
+ And you want your Ruby on Rails application to be accessible from the URL
335
+ 'http://www.phusion.nl/rails'.
336
+
337
+ To do this, make a symlink in the virtual host's document root, and have it
338
+ point to your Ruby on Rails application's 'public' folder. For example:
339
+ -------------------------------------------
340
+ ln -s /webapps/mycook/public /websites/phusion/rails
341
+ -------------------------------------------
342
+
343
+ Next, set 'passenger_enabled on' and add a <<PassengerBaseURI,passenger_base_uri>>
344
+ option to the 'server' block:
345
+ -------------------------------------------
346
+ http {
347
+ ...
348
+
349
+ server {
350
+ listen 80;
351
+ server_name www.phusion.nl;
352
+ root /websites/phusion;
353
+ passenger_enabled on; # <--- These lines have
354
+ passenger_base_uri /rails; # <--- been added.
355
+ }
356
+
357
+ ...
358
+ }
359
+ -------------------------------------------
360
+ Then restart Nginx. The application has now been deployed.
361
+
362
+ [TIP]
363
+ ======================================
364
+ You can deploy multiple Rails applications under a virtual host, by specifying
365
+ <<PassengerBaseURI,passenger_base_uri>> multiple times. For example:
366
+ ---------------------------------
367
+ server {
368
+ ...
369
+ passenger_base_uri /app1;
370
+ passenger_base_uri /app2;
371
+ passenger_base_uri /app3;
372
+ }
373
+ ---------------------------------
374
+ ======================================
375
+
376
+ === Redeploying (restarting the Ruby on Rails application) ===
377
+
378
+ Deploying a new version of a Ruby on Rails application is as simple as
379
+ re-uploading the application files, and restarting the application.
380
+
381
+ There are two ways to restart the application:
382
+
383
+ 1. By restarting Nginx.
384
+ 2. By creating or modifying the file 'tmp/restart.txt' in the Rails
385
+ application's <<application_root,root folder>>. Phusion Passenger will
386
+ automatically restart the application during the next request.
387
+
388
+ For example, to restart our example MyCook application, we type this in the
389
+ command line:
390
+ -------------------------------------------
391
+ touch /webapps/mycook/tmp/restart.txt
392
+ -------------------------------------------
393
+
394
+ Please note that, unlike earlier versions of Phusion Passenger, 'restart.txt'
395
+ is not automatically deleted. Phusion Passenger checks whether the timestamp
396
+ of this file has changed in order to determine whether the application should
397
+ be restarted.
398
+
399
+ === Migrations ===
400
+
401
+ Phusion Passenger is not related to Ruby on Rails migrations in any way. To
402
+ run migrations on your deployment server, please login to your deployment
403
+ server (e.g. with 'ssh') and type `rake db:migrate RAILS_ENV=production` in
404
+ a shell console, just like one would normally run migrations.
405
+
406
+ === Capistrano integration ===
407
+
408
+ See <<capistrano,Capistrano recipe>>.
409
+
410
+
411
+ [[deploying_a_rack_app]]
412
+ == Deploying a Rack-based Ruby application ==
413
+
414
+ Phusion Passenger supports arbitrary Ruby web applications that follow the
415
+ link:http://rack.rubyforge.org/[Rack] interface.
416
+
417
+ Phusion Passenger assumes that Rack application directories have a certain layout.
418
+ Suppose that you have a Rack application in '/webapps/rackapp'. Then that
419
+ folder must contain at least three entries:
420
+
421
+ - 'config.ru', a Rackup file for starting the Rack application. This file must contain
422
+ the complete logic for initializing the application.
423
+ - 'public/', a folder containing public static web assets, like images and stylesheets.
424
+ - 'tmp/', used for 'restart.txt' (our application restart mechanism). This will
425
+ be explained in a following subsection.
426
+
427
+ So '/webapps/rackapp' must, at minimum, look like this:
428
+ ----------------------
429
+ /webapps/rackapp
430
+ |
431
+ +-- config.ru
432
+ |
433
+ +-- public/
434
+ |
435
+ +-- tmp/
436
+ ----------------------
437
+
438
+ Suppose you own the domain 'www.rackapp.com'. You can either deploy your application
439
+ to the virtual host's root (i.e. the application will be accessible from the root URL,
440
+ 'http://www.rackapp.com/'), or in a sub URI (i.e. the application will be
441
+ accessible from a sub URL, such as 'http://www.rackapp.com/rackapp').
442
+
443
+ NOTE: The default `RACK_ENV` environment in which deployed Rack applications
444
+ are run, is ``production''. You can change this by changing the
445
+ <<RackEnv,rack_env>> configuration option.
446
+
447
+ === Tutorial/example: writing and deploying a Hello World Rack application ===
448
+
449
+ First we create a Phusion Passenger-compliant Rack directory structure:
450
+
451
+ -------------------------------------------
452
+ $ mkdir /webapps/rack_example
453
+ $ mkdir /webapps/rack_example/public
454
+ $ mkdir /webapps/rack_example/tmp
455
+ -------------------------------------------
456
+
457
+ Next, we write a minimal "hello world" Rack application:
458
+
459
+ -------------------------------------------
460
+ $ cd /webapps/rack_example
461
+ $ some_awesome_editor config.ru
462
+ ...type in some source code...
463
+ $ cat config.ru
464
+ app = proc do |env|
465
+ [200, { "Content-Type" => "text/html" }, ["hello <b>world</b>"]]
466
+ end
467
+ run app
468
+ -------------------------------------------
469
+
470
+ Finally, we deploy it by adding the following configuration options to
471
+ the Nginx configuration file:
472
+
473
+ -------------------------------------------
474
+ http {
475
+ ...
476
+ server {
477
+ listen 80;
478
+ server_name www.rackexample.com;
479
+ root /webapps/rack_example/public;
480
+ passenger_enabled on;
481
+ }
482
+ ...
483
+ }
484
+ -------------------------------------------
485
+
486
+ And we're done! After an Nginx restart, the above Rack application will be available
487
+ under the URL 'http://www.rackexample.com/'.
488
+
489
+ === Deploying to a virtual host's root ===
490
+
491
+ Add a 'server' virtual host entry to your Nginx configuration file. The virtual host's
492
+ root must point to your Rack application's 'public' folder. You must also set
493
+ 'passenger_enabled on' in the 'server' block.
494
+
495
+ For example:
496
+ -------------------------------------------
497
+ http {
498
+ ...
499
+ server {
500
+ listen 80;
501
+ server_name www.rackapp.com;
502
+ root /webapps/rackapp/public;
503
+ passenger_enabled on;
504
+ }
505
+ ...
506
+ }
507
+ -------------------------------------------
508
+ Then restart Nginx. The application has now been deployed.
509
+
510
+ [[deploying_rack_to_sub_uri]]
511
+ === Deploying to a sub URI ===
512
+
513
+ Suppose that you already have a virtual host:
514
+
515
+ -------------------------------------------
516
+ http {
517
+ ...
518
+
519
+ server {
520
+ listen 80;
521
+ server_name www.phusion.nl;
522
+ root /websites/phusion;
523
+ passenger_enabled on;
524
+ }
525
+
526
+ ...
527
+ }
528
+ -------------------------------------------
529
+
530
+ And you want your Rack application to be accessible from the URL
531
+ 'http://www.phusion.nl/rack'.
532
+
533
+ To do this, make a symlink in the virtual host's document root, and have it
534
+ point to your Rack application's 'public' folder. For example:
535
+ -------------------------------------------
536
+ ln -s /webapps/rackapp/public /websites/phusion/rack
537
+ -------------------------------------------
538
+
539
+ Next, set 'passenger_enabled on' and add a <<PassengerBaseURI,passenger_base_uri>>
540
+ option to the 'server' block:
541
+ -------------------------------------------
542
+ http {
543
+ ...
544
+
545
+ server {
546
+ listen 80;
547
+ server_name www.phusion.nl;
548
+ root /websites/phusion;
549
+ passenger_enabled on; # <--- These lines have
550
+ passenger_base_uri /rack; # <--- been added.
551
+ }
552
+
553
+ ...
554
+ }
555
+ -------------------------------------------
556
+ Then restart Nginx. The application has now been deployed.
557
+
558
+ [TIP]
559
+ ======================================
560
+ You can deploy multiple Rack applications under a virtual host, by specifying
561
+ <<PassengerBaseURI,passenger_base_uri>> multiple times. For example:
562
+ ---------------------------------
563
+ server {
564
+ ...
565
+ passenger_base_uri /app1;
566
+ passenger_base_uri /app2;
567
+ passenger_base_uri /app3;
568
+ }
569
+ ---------------------------------
570
+ ======================================
571
+
572
+ === Redeploying (restarting the Rack application) ===
573
+
574
+ Deploying a new version of a Rack application is as simple as
575
+ re-uploading the application files, and restarting the application.
576
+
577
+ There are two ways to restart the application:
578
+
579
+ 1. By restarting Nginx.
580
+ 2. By creating or modifying the file 'tmp/restart.txt' in the Rack
581
+ application's <<application_root,root folder>>. Phusion Passenger will
582
+ automatically restart the application.
583
+
584
+ For example, to restart our example application, we type this in the
585
+ command line:
586
+ -------------------------------------------
587
+ touch /webapps/rackapp/tmp/restart.txt
588
+ -------------------------------------------
589
+
590
+ === Rackup specifications for various web frameworks ===
591
+ include::users_guide_snippets/rackup_specifications.txt[]
592
+
593
+
594
+ == Configuring Phusion Passenger ==
595
+
596
+ After installation, Phusion Passenger does not need any further configurations.
597
+ Nevertheless, the system administrator may be interested in changing
598
+ Phusion Passenger's behavior. Phusion Passenger supports the following configuration
599
+ options in the Nginx configuration file:
600
+
601
+ === passenger_root <directory> ===
602
+ The location to the Phusion Passenger root directory. This configuration option
603
+ is essential to Phusion Passenger, and allows Phusion Passenger to locate its own
604
+ data files. The correct value is given by the installer.
605
+
606
+ If you've moved Phusion Passenger to a different directory then you need to update
607
+ this option as well. Please read
608
+ <<moving_phusion_passenger,Moving Phusion Passenger to a different directory>> for more information.
609
+
610
+ This required option may only occur once, in the 'http' configuration block.
611
+
612
+ === passenger_ruby <filename> ===
613
+ This option allows one to specify the Ruby interpreter to use.
614
+
615
+ This option may only occur once, in the 'http' configuration block.
616
+ The default is 'ruby'.
617
+
618
+ [[PassengerSpawnMethod]]
619
+ === passenger_spawn_method <string> ===
620
+ [TIP]
621
+ ."What spawn method should I use?"
622
+ =========================================================
623
+ This subsection attempts to describe spawn methods, but it's okay if you don't (want to)
624
+ understand it, as it's mostly a technical detail. You can basically follow this rule of thumb:
625
+
626
+ ************************************************
627
+ If your application works on Mongrel, but not on Phusion Passenger, then set
628
+ `passenger_spawn_method` to 'conservative'. Otherwise, leave it at 'smart-lv2' (the default).
629
+ ************************************************
630
+
631
+ However, we do recommend you to try to understand it. The 'smart' and 'smart-lv2' spawn
632
+ methods bring many benefits.
633
+ =========================================================
634
+
635
+ include::users_guide_snippets/passenger_spawn_method.txt[]
636
+
637
+ This option may occur in the following places:
638
+
639
+ * In the 'http' configuration block.
640
+ * In a 'server' configuration block.
641
+ * In a 'location' configuration block.
642
+ * In an 'if' configuration scope.
643
+
644
+ In each place, it may be specified at most once. The default value is 'smart-lv2'.
645
+
646
+ === Important deployment options ===
647
+ ==== passenger_enabled <on|off> ====
648
+ This option may be specified in the 'http' configuration block, a
649
+ 'server' configuration block, a 'location' configuration block or
650
+ an 'if' configuration scope, to enable or disable Phusion Passenger
651
+ for that server or that location.
652
+
653
+ Phusion Passenger is disabled by default, so you must explicitly enable
654
+ it for server blocks that you wish to serve through Phusion Passenger.
655
+ Please see <<deploying_a_ror_app,Deploying a Ruby on Rails application>>
656
+ and <<deploying_a_rack_app,Deploying a Rack-based Ruby application>>
657
+ for examples.
658
+
659
+ [[PassengerBaseURI]]
660
+ ==== passenger_base_uri <uri> ====
661
+ Used to specify that the given URI is an distinct application that should
662
+ be served by Phusion Passenger. This option can be used for both Rails and
663
+ Rack applications. See <<deploying_rails_to_sub_uri,Deploying Rails to a sub URI>>
664
+ for an example.
665
+
666
+ It is allowed to specify this option multiple times. Do this to deploy multiple
667
+ applications in different sub-URIs under the same virtual host.
668
+
669
+ This option may occur in the following places:
670
+
671
+ * In the 'http' configuration block.
672
+ * In a 'server' configuration block.
673
+ * In a 'location' configuration block.
674
+ * In an 'if' configuration scope.
675
+
676
+ === Connection handling options ===
677
+
678
+ [[PassengerUseGlobalQueue]]
679
+ ==== passenger_use_global_queue <on|off> ====
680
+ Turns the use of global queuing on or off.
681
+
682
+ This option may occur in the following places:
683
+
684
+ * In the 'http' configuration block.
685
+ * In a 'server' configuration block.
686
+ * In a 'location' configuration block.
687
+ * In an 'if' configuration scope.
688
+
689
+ In each place, it may be specified at most once. The default value is 'on'.
690
+
691
+ 'This feature is sponsored by http://www.37signals.com/[37signals].'
692
+
693
+ include::users_guide_snippets/global_queueing_explained.txt[]
694
+
695
+ ==== passenger_ignore_client_abort <on|off> ====
696
+ Normally, when the HTTP client aborts the connection (e.g. when the user clicked on "Stop"
697
+ in the browser), the connection with the application process will be closed too. If the
698
+ application process continues to send its response, then that will result in EPIPE errors
699
+ in the application, which will be printed in the error log if the application doesn't
700
+ handle them gracefully.
701
+
702
+ If this option is turned on then upon client abort Phusion Passenger will continue to
703
+ read the application process's response while discarding all the read data. This prevents
704
+ EPIPE errors but it'll also mean the backend process will be unavailable for new requests
705
+ until it is done sending its response.
706
+
707
+ This option may occur in the following places:
708
+
709
+ * In the 'http' configuration block.
710
+ * In a 'server' configuration block.
711
+ * In a 'location' configuration block.
712
+ * In an 'if' configuration scope.
713
+
714
+ In each place, it may be specified at most once. The default value is 'off'.
715
+
716
+ ==== passenger_set_cgi_param <CGI environment name> <value> ====
717
+ Allows one to define additional CGI environment variables to pass to the backend
718
+ application. This is equivalent to ngx_http_fastcgi_module's 'fastcgi_param'
719
+ directive, and is comparable to ngx_http_proxy_module's 'proxy_set_header' option.
720
+ Nginx variables in the value are interpolated.
721
+
722
+ For example:
723
+ ------------------------------
724
+ # Application will see a CGI environment "APP_NAME" with value "my super blog".
725
+ passenger_set_cgi_param APP_NAME "my super blog";
726
+
727
+ # Nginx variables are interpolated.
728
+ passenger_set_cgi_param EXTRA_REQUEST_METHOD method=$request_method;
729
+ ------------------------------
730
+
731
+ If you want to set an HTTP header, then you must set it in the CGI environment name
732
+ format, i.e. 'HTTP_*':
733
+
734
+ ------------------------------
735
+ # !!!THIS IS WRONG!!! Don't do this!
736
+ passenger_set_cgi_param X-Forwarded-For 127.0.0.2;
737
+
738
+ # Instead, write it like this:
739
+ passenger_set_cgi_param HTTP_X_FORWARDED_FOR 127.0.0.2;
740
+ ------------------------------
741
+
742
+ This option may occur in the following places:
743
+
744
+ * In the 'http' configuration block.
745
+ * In a 'server' configuration block.
746
+ * In a 'location' configuration block.
747
+ * In an 'if' configuration scope.
748
+
749
+ ==== passenger_pass_header <header name> ====
750
+ Some headers generated by backend applications are not forwarded to the HTTP client,
751
+ e.g. 'X-Accel-Redirect' which is directly processed by Nginx and then discarded from
752
+ the final response. This directive allows one to force Nginx to pass those headers
753
+ anyway, similar to how 'proxy_pass_header' works.
754
+
755
+ For example:
756
+
757
+ ------------------------------
758
+ location / {
759
+ passenger_pass_header X-Accel-Redirect;
760
+ }
761
+ ------------------------------
762
+
763
+ This option may occur in the following places:
764
+
765
+ * In the 'http' configuration block.
766
+ * In a 'server' configuration block.
767
+ * In a 'location' configuration block.
768
+ * In an 'if' configuration scope.
769
+
770
+ ==== passenger_buffer_response <on|off> ====
771
+ When turned on, application-generated responses are buffered in memory and also on
772
+ disk if the response is larger than a certain threshold. By buffering responses,
773
+ protection is provided against slow HTTP clients that can not read your response
774
+ immediately.
775
+
776
+ For example, consider an HTTP client that's on a dial-up modem link, and your
777
+ application instance generates a 2 MB response. If response buffering is turned
778
+ off then your application instance will be blocked until the entire 2 MB has been
779
+ sent out to the HTTP client. This disallows your application instance to do any useful
780
+ work in the mean time. By enabling response buffering, Phusion Passenger will read
781
+ the application response as quickly as possible and will take care of slow clients.
782
+
783
+ However, keep in mind that enabling this option will make streaming responses
784
+ impossible. Consider for example this piece of Rails code:
785
+
786
+ --------------------------------
787
+ render :text => lambda { |response, output|
788
+ 10.times do |i|
789
+ output.write("entry #{i}\n")
790
+ output.flush
791
+ sleep 1
792
+ end
793
+ }
794
+ --------------------------------
795
+
796
+ ...or this piece of Rack code:
797
+
798
+ --------------------------------
799
+ class Response
800
+ def each
801
+ 10.times do |i|
802
+ yield("entry #{i}\n")
803
+ sleep 1
804
+ end
805
+ end
806
+ end
807
+
808
+ app = lambda do |env|
809
+ [200, { "Content-Type" => "text/plain" }, Response.new]
810
+ end
811
+ --------------------------------
812
+
813
+ When response buffering is turned on, Phusion Passenger will wait until
814
+ the application is done sending the entire response before forwarding it
815
+ to the client. The client will not receive anything for 10 seconds,
816
+ after which it receives the entire response at once.
817
+ When response buffering is turned off, it works as expected: the client
818
+ receives an "entry X" message every second for 10 seconds.
819
+
820
+ This option may occur in the following places:
821
+
822
+ * In the 'http' configuration block.
823
+ * In a 'server' configuration block.
824
+ * In a 'location' configuration block.
825
+ * In an 'if' configuration scope.
826
+
827
+ In each place, it may be specified at most once. The default value is 'on'.
828
+
829
+ === Security options ===
830
+ [[PassengerUserSwitching]]
831
+ ==== passenger_user_switching <on|off> ====
832
+ Whether to enable <<user_switching,user switching support>>.
833
+
834
+ This option may only occur once, in the 'http' configuration block.
835
+ The default value is 'on'.
836
+
837
+ ==== passenger_user <username> ====
838
+ If <<user_switching,user switching support>> is enabled, then Phusion Passenger will
839
+ by default run the web application as the owner if the file 'config/environment.rb'
840
+ (for Rails apps) or 'config.ru' (for Rack apps). This option allows you to override
841
+ that behavior and explicitly set a user to run the web application as, regardless
842
+ of the ownership of 'environment.rb'/'config.ru'.
843
+
844
+ This option may occur in the following places:
845
+
846
+ * In the 'http' configuration block.
847
+ * In a 'server' configuration block.
848
+ * In a 'location' configuration block.
849
+ * In an 'if' configuration scope.
850
+
851
+ In each place, it may be specified at most once.
852
+
853
+ ==== passenger_user <group name> ====
854
+ If <<user_switching,user switching support>> is enabled, then Phusion Passenger will
855
+ by default run the web application as the primary group of the owner of the file
856
+ 'config/environment.rb' (for Rails apps) or 'config.ru' (for Rack apps). This option
857
+ allows you to override that behavior and explicitly set a group to run the web application
858
+ as, regardless of the ownership of 'environment.rb'/'config.ru'.
859
+
860
+ '<group name>' may also be set to the special value '!STARTUP_FILE!', in which case
861
+ the web application's group will be set to 'environment.rb'/'config.ru''s group.
862
+
863
+ This option may occur in the following places:
864
+
865
+ * In the 'http' configuration block.
866
+ * In a 'server' configuration block.
867
+ * In a 'location' configuration block.
868
+ * In an 'if' configuration scope.
869
+
870
+ In each place, it may be specified at most once.
871
+
872
+ [[PassengerDefaultUser]]
873
+ ==== passenger_default_user <username> ====
874
+ Phusion Passenger enables <<user_switching,user switching support>> by default.
875
+ This configuration option allows one to specify the user that applications must
876
+ run as, if user switching fails or is disabled.
877
+
878
+ This option may only occur once, in the 'http' configuration block.
879
+ The default value is 'nobody'.
880
+
881
+ [[PassengerDefaultGroup]]
882
+ ==== Passenger_default_group <group name> ====
883
+ Phusion Passenger enables <<user_switching,user switching support>> by default.
884
+ This configuration option allows one to specify the group that applications must
885
+ run as, if user switching fails or is disabled.
886
+
887
+ This option may only occur once, in the 'http' configuration block.
888
+ The default value is the primary group of the user specifified by
889
+ <<PassengerDefaultUser,passenger_default_user>>.
890
+
891
+ ==== passenger_friendly_error_pages <on|off> ====
892
+ Phusion Passenger can display friendly error pages whenever an application fails
893
+ to start. This friendly error page presents the startup error message, some
894
+ suggestions for solving the problem, and a backtrace. This feature is very useful
895
+ during application development and useful for less experienced system administrators,
896
+ but the page might reveal potentially sensitive information, depending on the
897
+ application. Experienced system administrators who are using Phusion Passenger
898
+ on serious production servers should consider turning this feature off.
899
+
900
+ This option may occur in the following places:
901
+
902
+ * In the 'http' configuration block.
903
+ * In a 'server' configuration block.
904
+ * In a 'location' configuration block.
905
+ * In an 'if' configuration scope.
906
+
907
+ In each place, it may be specified at most once. The default value is 'on'.
908
+
909
+ === Resource control and optimization options ===
910
+ [[PassengerMaxPoolSize]]
911
+ ==== passenger_max_pool_size <integer> ====
912
+ The maximum number of Ruby on Rails or Rack application instances that may
913
+ be simultaneously active. A larger number results in higher memory usage,
914
+ but improved ability to handle concurrent HTTP clients.
915
+
916
+ The optimal value depends on your system's hardware and the server's average
917
+ load. You should experiment with different values. But generally speaking,
918
+ the value should be at least equal to the number of CPUs (or CPU cores) that
919
+ you have. If your system has 2 GB of RAM, then we recommend a value of '30'.
920
+ If your system is a Virtual Private Server (VPS) and has about 256 MB RAM, and
921
+ is also running other services such as MySQL, then we recommend a value of '2'.
922
+
923
+ If you find that your server is unable to handle the load on your Rails/Rack websites
924
+ (i.e. running out of memory) then you should lower this value. (Though if your
925
+ sites are really that popular, then you should strongly consider upgrading your
926
+ hardware or getting more servers.)
927
+
928
+ This option may only occur once, in the 'http' configuration bock.
929
+ The default value is '6'.
930
+
931
+ TIP: We strongly recommend you to <<reducing_memory_usage,use Ruby Enterprise
932
+ Edition>>. This allows you to reduce the memory usage of your Ruby on Rails applications
933
+ by about 33%. And it's not hard to install.
934
+
935
+ [[PassengerMinInstances]]
936
+ ==== passenger_min_instances <integer> ====
937
+ This specifies the minimum number of application instances that must be kept around
938
+ whenever Phusion Passenger cleans up idle instances. You should set this option to a
939
+ non-zero value if you want to avoid potentially long startup times after a website
940
+ has been idle for an extended period.
941
+
942
+ Please note that this option does *not* pre-start application instances during Nginx
943
+ startup. It just makes sure that when the application is first accessed:
944
+
945
+ 1. at least the given number of instances will be spawned.
946
+ 2. the given number of processes will be kept around even when instances are being
947
+ idle cleaned (see <<PassengerPoolIdleTime,passenger_pool_idle_time>>).
948
+
949
+ If you want to pre-start application instances during Nginx startup, then you should use the <<PassengerPreStart,passenger_pre_start>> directive, possibly in combination with
950
+ 'passenger_min_instances'. This behavior might seem counter-intuitive at first sight,
951
+ but <<PassengerPreStart,passenger_pre_start>> explains the rationale behind it.
952
+
953
+ For example, suppose that you have the following configuration:
954
+
955
+ ---------------------------------
956
+ http {
957
+ ...
958
+ passenger_max_pool_size 15;
959
+ passenger_pool_idle_time 10;
960
+
961
+ server {
962
+ listen 80;
963
+ server_name foobar.com;
964
+ root /webapps/foobar/public;
965
+ passenger_min_instances 3;
966
+ }
967
+ }
968
+ ---------------------------------
969
+
970
+ When you start Nginx, there are 0 application instances for 'foobar.com'. Things will
971
+ stay that way until someone visits 'foobar.com'. Suppose that there is only 1 visitor.
972
+ 1 application instance will be started immediately to serve the visitor, while 2 will
973
+ be spawned in the background. After 10 seconds, when the idle timeout has
974
+ been reached, these 3 application instances will not be cleaned up.
975
+
976
+ Now suppose that there's a sudden spike of traffic, and 100 users visit 'foobar.com'
977
+ simultanously. Phusion Passenger will start 12 more application instances. After the idle
978
+ timeout of 10 seconds have passed, Phusion Passenger will clean up 12 application
979
+ instances, keeping 3 instances around.
980
+
981
+ The passenger_min_instances option may occur in the following places:
982
+
983
+ * In the 'http' configuration block.
984
+ * In a 'server' configuration block.
985
+ * In a 'location' configuration block.
986
+ * In an 'if' configuration scope.
987
+
988
+ In each place, it may be specified at most once. The default value is '1'.
989
+
990
+ ==== passenger_max_instances_per_app <integer> ====
991
+ The maximum number of application instances that may be simultaneously active
992
+ for a single application. This helps to make sure that a single application
993
+ will not occupy all available slots in the application pool.
994
+
995
+ This value must be less than <<PassengerMaxPoolSize,passenger_max_pool_size>>. A value of 0
996
+ means that there is no limit placed on the number of instances a single application
997
+ may use, i.e. only the global limit of <<PassengerMaxPoolSize,passenger_max_pool_size>>
998
+ will be enforced.
999
+
1000
+ This option may only occur once, in the 'http' configuration block.
1001
+ The default value is '0'.
1002
+
1003
+ [[PassengerPoolIdleTime]]
1004
+ ==== passenger_pool_idle_time <integer> ====
1005
+ The maximum number of seconds that an application instance may be idle. That is,
1006
+ if an application instance hasn't received any traffic after the given number of
1007
+ seconds, then it will be shutdown in order to conserve memory.
1008
+
1009
+ Decreasing this value means that applications will have to be spawned
1010
+ more often. Since spawning is a relatively slow operation, some visitors may
1011
+ notice a small delay when they visit your Rails/Rack website. However, it will also
1012
+ free up resources used by applications more quickly.
1013
+
1014
+ The optimal value depends on the average time that a visitor spends on a single
1015
+ Rails/Rack web page. We recommend a value of `2 * x`, where `x` is the average
1016
+ number of seconds that a visitor spends on a single Rails/Rack web page. But your
1017
+ mileage may vary.
1018
+
1019
+ When this value is set to '0', application instances will not be shutdown unless
1020
+ it's really necessary, i.e. when Phusion Passenger is out of worker processes
1021
+ for a given application and one of the inactive application instances needs to
1022
+ make place for another application instance. Setting the value to 0 is
1023
+ recommended if you're on a non-shared host that's only running a few
1024
+ applications, each which must be available at all times.
1025
+
1026
+ This option may only occur once, in the 'http' configuration block.
1027
+ The default value is '300'.
1028
+
1029
+ [[PassengerPreStart]]
1030
+ ==== passenger_pre_start <url> ====
1031
+ By default, Phusion Passenger does not start any application instances until said
1032
+ web application is first accessed. The result is that the first visitor of said
1033
+ web application might experience a small delay as Phusion Passenger is starting
1034
+ the web application on demand. If that is undesirable, then this directive can be
1035
+ used to pre-started application instances during Nginx startup.
1036
+
1037
+ A few things to be careful of:
1038
+
1039
+ - This directive accepts the *URL* of the web application you want to pre-start,
1040
+ not a on/off value! This might seem a bit weird, but read on for rationale. As
1041
+ for the specifics of the URL:
1042
+ * The domain part of the URL must be equal to the value of the 'server_name'
1043
+ directive of the server block that defines the web application.
1044
+ * Unless the web application is deployed on port 80, the URL should contain
1045
+ the web application's port number too.
1046
+ * The path part of the URL must point to some URI that the web application
1047
+ handles.
1048
+ - You will probably want to combine this option with
1049
+ <<PassengerMinInstances,passenger_min_instances>> because application instances
1050
+ started with 'passenger_pre_start' are subject to the usual idle timeout rules.
1051
+ See the example below for an explanation.
1052
+
1053
+ This option may only occur in the 'http' configuration block. It may be specified
1054
+ any number of times.
1055
+
1056
+ ===== Example 1: basic usage =====
1057
+
1058
+ Suppose that you have the following web applications.
1059
+
1060
+ ---------------------------
1061
+ server {
1062
+ listen 80;
1063
+ server_name foo.com;
1064
+ root /webapps/foo/public;
1065
+ passenger_enabled on;
1066
+ }
1067
+
1068
+ server {
1069
+ listen 3500;
1070
+ server_name bar.com;
1071
+ root /webapps/bar/public;
1072
+ passenger_enabled on;
1073
+ }
1074
+ ---------------------------
1075
+
1076
+ You want both of them to be pre-started during Nginx startup. The URL for
1077
+ foo.com is 'http://foo.com/' (or, equivalently, 'http://foo.com:80/') and
1078
+ the URL for bar.com is 'http://bar.com:3500/'. So we add two passenger_pre_start
1079
+ directives, like this:
1080
+
1081
+ ---------------------------
1082
+ server {
1083
+ listen 80;
1084
+ server_name foo.com;
1085
+ root /webapps/foo/public;
1086
+ passenger_enabled on;
1087
+ }
1088
+
1089
+ server {
1090
+ listen 3500;
1091
+ server_name bar.com;
1092
+ root /webapps/bar/public;
1093
+ passenger_enabled on;
1094
+ }
1095
+
1096
+ passenger_pre_start http://foo.com/; # <--- added
1097
+ passenger_pre_start http://bar.com:3500/; # <--- added
1098
+ ---------------------------
1099
+
1100
+ ===== Example 2: pre-starting apps that are deployed in sub-URIs =====
1101
+
1102
+ Suppose that you have a web application deployed in a sub-URI '/store', like this:
1103
+
1104
+ ---------------------------
1105
+ server {
1106
+ listen 80;
1107
+ server_name myblog.com;
1108
+ root /webapps/wordpress;
1109
+ rails_base_uri /store;
1110
+ }
1111
+ ---------------------------
1112
+
1113
+ Then specify the 'server_name' valuue followed by the sub-URI, like this:
1114
+
1115
+ ---------------------------
1116
+ server {
1117
+ listen 80;
1118
+ server_name myblog.com;
1119
+ root /webapps/wordpress;
1120
+ rails_base_uri /store;
1121
+ }
1122
+
1123
+ passenger_pre_start http://myblog.com/store; # <----- added
1124
+ ---------------------------
1125
+
1126
+ The sub-URI *must* be included; if you don't then the directive will have no effect.
1127
+ The following example is wrong and won't pre-start the store web application:
1128
+
1129
+ ---------------------------
1130
+ passenger_pre_start http://myblog.com/; # <----- WRONG! Missing "/store" part.
1131
+ ---------------------------
1132
+
1133
+ ===== Example 3: combining with passenger_min_instances =====
1134
+
1135
+ Application instances started with passenger_pre_start are
1136
+ also subject to the idle timeout rules as specified by
1137
+ <<PassengerPoolIdleTime,passenger_pool_idle_time>>! That means that by default,
1138
+ the pre-started application instances for foo.com are bar.com are shut down
1139
+ after a few minutes of inactivity. If you don't want that to happen, then
1140
+ you should combine passenger_pre_start with
1141
+ <<PassengerMinInstances,passenger_min_instances>>, like this:
1142
+
1143
+ ---------------------------
1144
+ server {
1145
+ listen 80;
1146
+ server_name foo.com;
1147
+ root /webapps/foo/public;
1148
+ passenger_enabled on;
1149
+ passenger_min_instances 1; # <--- added
1150
+ }
1151
+
1152
+ server {
1153
+ listen 3500;
1154
+ server_name bar.com;
1155
+ root /webapps/bar/public;
1156
+ passenger_enabled on;
1157
+ passenger_min_instances 1; # <--- added
1158
+ }
1159
+
1160
+ passenger_pre_start http://foo.com/;
1161
+ passenger_pre_start http://bar.com:3500/;
1162
+ ---------------------------
1163
+
1164
+ ===== So why a URL? Why not just an on/off flag? =====
1165
+
1166
+ A directive that accepts a simple on/off flag is definitely more intuitive,
1167
+ but due technical difficulties w.r.t. the way Nginx works, it's very hard
1168
+ to implement it like that:
1169
+
1170
+ It is very hard to obtain a full list of web applications defined in the
1171
+ Nginx configuration file(s). In other words, it's hard for Phusion Passenger
1172
+ to know which web applications are deployed on Nginx until a web application
1173
+ is first accessed, and without such a list Phusion Passenger wouldn't know
1174
+ which web applications to pre-start. So as a compromise, we made it accept a
1175
+ URL.
1176
+
1177
+ ===== What does Phusion Passenger do with the URL? =====
1178
+
1179
+ During Nginx startup, Phusion Passenger will send a dummy HEAD request to the
1180
+ given URL and discard the result. In other words, Phusion Passenger simulates a
1181
+ web access at the given URL. However this simulated request is always sent to
1182
+ localhost, *not* to the IP that the domain resolves to. Suppose that bar.com
1183
+ in example 1 resolves to 209.85.227.99; Phusion Passenger will
1184
+ send the following HTTP request to 127.0.0.1 port 3500 (and not to 209.85.227.99
1185
+ port 3500):
1186
+
1187
+ ----------------------
1188
+ HEAD / HTTP/1.1
1189
+ Host: bar.com
1190
+ Connection: close
1191
+ ----------------------
1192
+
1193
+ Similarly, for example 2, Phusion Passenger will send the following HTTP request
1194
+ to 127.0.0.1 port 80:
1195
+
1196
+ ----------------------
1197
+ HEAD /store HTTP/1.1
1198
+ Host: myblog.com
1199
+ Connection: close
1200
+ ----------------------
1201
+
1202
+ ===== Do I need to edit /etc/hosts and point the domain in the URL to 127.0.0.1? =====
1203
+
1204
+ No. See previous subsection.
1205
+
1206
+ ===== My web application consists of multiple web servers. What URL do I need to specify, and in which web server's Nginx config file? =====
1207
+
1208
+ Put the web application's 'server_name' value and the server block's
1209
+ port in the URL, and put
1210
+ passenger_pre_start on all machines that you want to pre-start the web application
1211
+ on. The simulated web request is always sent to 127.0.0.1, with the domain name
1212
+ in the URL as value for the 'Host' HTTP header, so you don't need to worry about
1213
+ the request ending up at a different web server in the cluster.
1214
+
1215
+ ===== Does passenger_pre_start support https:// URLs? =====
1216
+
1217
+ Yes. And it does not perform any certificate validation.
1218
+
1219
+
1220
+ === Logging and debugging options ===
1221
+
1222
+ ==== passenger_log_level <integer> ====
1223
+ This option allows one to specify how much information Phusion Passenger should
1224
+ write to the Nginx error log file. A higher log level value means that more
1225
+ information will be logged.
1226
+
1227
+ Possible values are:
1228
+
1229
+ - '0': Show only errors and warnings.
1230
+ - '1': Show the most important debugging information. This might be useful for
1231
+ system administrators who are trying to figure out the cause of a
1232
+ problem.
1233
+ - '2': Show more debugging information. This is typically only useful for developers.
1234
+ - '3': Show even more debugging information.
1235
+
1236
+ This option may only occur once, in the 'http' configuration block.
1237
+ The default is '0'.
1238
+
1239
+ ==== passenger_debug_log_file <filename> ====
1240
+ By default Phusion Passenger debugging and error messages are written to the global
1241
+ web server error log. This option allows one to specify the file that debugging and
1242
+ error messages should be written to instead.
1243
+
1244
+ This option may only occur once, in the 'http' configuration block.
1245
+
1246
+
1247
+ === Ruby on Rails-specific options ===
1248
+ [[RailsEnv]]
1249
+ ==== rails_env <string> ====
1250
+ This option allows one to specify the default `RAILS_ENV` value.
1251
+
1252
+ This option may occur in the following places:
1253
+
1254
+ * In the 'http' configuration block.
1255
+ * In a 'server' configuration block.
1256
+ * In a 'location' configuration block.
1257
+ * In an 'if' configuration scope.
1258
+
1259
+ In each place, it may be specified at most once. The default value is 'production'.
1260
+
1261
+ ==== rails_framework_spawner_idle_time <integer> ====
1262
+ The FrameworkSpawner server (explained in <<spawning_methods_explained,Spawning
1263
+ methods explained>>) has an idle timeout, just like the backend processes spawned by
1264
+ Phusion Passenger do. That is, it will automatically shutdown if it hasn't done
1265
+ anything for a given period.
1266
+
1267
+ This option allows you to set the FrameworkSpawner server's idle timeout, in
1268
+ seconds. A value of '0' means that it should never idle timeout.
1269
+
1270
+ Setting a higher value will mean that the FrameworkSpawner server is kept around
1271
+ longer, which may slightly increase memory usage. But as long as the
1272
+ FrameworkSpawner server is running, the time to spawn a Ruby on Rails backend
1273
+ process only takes about 40% of the time that is normally needed, assuming that
1274
+ you're using the 'smart' <<RailsSpawnMethod,spawning method>>. So if your
1275
+ system has enough memory, is it recommended that you set this option to a high
1276
+ value or to '0'.
1277
+
1278
+ This option may occur in the following places:
1279
+
1280
+ * In the 'http' configuration block.
1281
+ * In a 'server' configuration block.
1282
+ * In a 'location' configuration block.
1283
+ * In an 'if' configuration scope.
1284
+
1285
+ In each place, it may be specified at most once. The default value is '1800' (30 minutes).
1286
+
1287
+ ==== rails_app_spawner_idle_time <integer> ====
1288
+ The ApplicationSpawner server (explained in <<spawning_methods_explained,Spawning
1289
+ methods explained>>) has an idle timeout, just like the backend processes spawned by
1290
+ Phusion Passenger do. That is, it will automatically shutdown if it hasn't done
1291
+ anything for a given period.
1292
+
1293
+ This option allows you to set the ApplicationSpawner server's idle timeout, in
1294
+ seconds. A value of '0' means that it should never idle timeout.
1295
+
1296
+ Setting a higher value will mean that the ApplicationSpawner server is kept around
1297
+ longer, which may slightly increase memory usage. But as long as the
1298
+ ApplicationSpawner server is running, the time to spawn a Ruby on Rails backend
1299
+ process only takes about 10% of the time that is normally needed, assuming that
1300
+ you're using the 'smart' or 'smart-lv2' <<RailsSpawnMethod,spawning method>>. So if your
1301
+ system has enough memory, is it recommended that you set this option to a high
1302
+ value or to '0'.
1303
+
1304
+ This option may occur in the following places:
1305
+
1306
+ * In the 'http' configuration block.
1307
+ * In a 'server' configuration block.
1308
+ * In a 'location' configuration block.
1309
+ * In an 'if' configuration scope.
1310
+
1311
+ In each place, it may be specified at most once. The default value is '600' (10 minutes).
1312
+
1313
+ === Rack-specific options ===
1314
+ [[RackEnv]]
1315
+ ==== rack_env <string> ====
1316
+ This option allows one to specify the default `RACK_ENV` value.
1317
+
1318
+ This option may occur in the following places:
1319
+
1320
+ * In the 'http' configuration block.
1321
+ * In a 'server' configuration block.
1322
+ * In a 'location' configuration block.
1323
+ * In an 'if' configuration scope.
1324
+
1325
+ In each place, it may be specified at most once. The default value is 'production'.
1326
+
1327
+
1328
+ === Deprecated options ===
1329
+
1330
+ The following options have been deprecated, but are still supported for backwards
1331
+ compatibility reasons.
1332
+
1333
+ ==== rails_spawn_method ====
1334
+ Deprecated in favor of <<PassengerSpawnMethod,passenger_spawn_method>>.
1335
+
1336
+
1337
+ == Analysis and system maintenance ==
1338
+
1339
+ include::users_guide_snippets/analysis_and_system_maintenance.txt[]
1340
+
1341
+
1342
+ == Tips ==
1343
+
1344
+ include::users_guide_snippets/tips.txt[]
1345
+
1346
+
1347
+ == Under the hood ==
1348
+ Phusion Passenger hides a lot of complexity for the end user (i.e. the web server
1349
+ system administrator), but sometimes it is desirable to know what is going on.
1350
+ This section describes a few things that Phusion Passenger does under the hood.
1351
+
1352
+ === Page caching support ===
1353
+ include::users_guide_snippets/under_the_hood/page_caching_support.txt[]
1354
+
1355
+ [[application_detection]]
1356
+ === How Phusion Passenger detects whether a virtual host is a web application ===
1357
+ After you've read the deployment instructions you might wonder how Phusion Passenger
1358
+ knows that the server root points to a web application that Phusion Passenger is
1359
+ able to serve, and how it knows what kind of web application it is (e.g. Rails or Rack).
1360
+
1361
+ Phusion Passenger checks whether the virtual host is a Rails application by checking
1362
+ whether the following file exists:
1363
+
1364
+ ------------------------------------------------
1365
+ dirname(DocumentRoot) + "/config/environment.rb"
1366
+ ------------------------------------------------
1367
+
1368
+ If you're not a programmer and don't understand the above pseudo-code snippet, it means
1369
+ that Phusion Passenger will:
1370
+
1371
+ 1. Extract the parent directory filename from the value of the ``root'' directive.
1372
+ 2. Append the text "/config/environment.rb" to the result, and check whether the resulting
1373
+ filename exists.
1374
+
1375
+ So suppose that your server root is '/webapps/foo/public'. Phusion Passenger will check
1376
+ whether the file '/webapps/foo/config/environment.rb' exists.
1377
+
1378
+ Note that Phusion Passenger for Nginx does *not* resolve any symlinks in the root path.
1379
+ So for example, suppose that your root points to '/home/www/example.com', which in
1380
+ turn is a symlink to '/webapps/example.com/public'. Phusion Passenger for Nginx will check for
1381
+ '/home/www/config/environment.rb', *not* '/webapps/example.com/config/environment.rb'.
1382
+ This file of course doesn't exist, and as a result Phusion Passenger will not activate
1383
+ itself for this virtual host, and you'll most likely see some output generated by the
1384
+ Nginx default directory handler such as a Forbidden error message.
1385
+
1386
+ Detection of Rack applications happens through the same mechanism, exception that
1387
+ Phusion Passenger will look for 'config.ru' instead of 'config/environment.rb'.
1388
+
1389
+
1390
+ include::users_guide_snippets/appendix_a_about.txt[]
1391
+
1392
+ include::users_guide_snippets/appendix_b_terminology.txt[]
1393
+
1394
+ include::users_guide_snippets/appendix_c_spawning_methods.txt[]