colouringcode-passenger 0.1 → 0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (170) hide show
  1. data/NEWS +129 -0
  2. data/Rakefile +2 -2
  3. data/bin/passenger-install-apache2-module +1 -0
  4. data/bin/passenger-install-nginx-module +4 -2
  5. data/ext/apache2/Hooks.cpp +4 -2
  6. data/ext/common/ApplicationPoolServer.h +1 -1
  7. data/ext/common/ApplicationPoolServerExecutable.cpp +1 -1
  8. data/ext/common/MessageChannel.h +48 -4
  9. data/ext/common/StandardApplicationPool.h +4 -2
  10. data/ext/common/Version.h +1 -1
  11. data/ext/nginx/Configuration.c +1 -1
  12. data/ext/nginx/HttpStatusExtractor.h +1 -0
  13. data/ext/nginx/ScgiRequestParser.h +1 -0
  14. data/ext/oxt/system_calls.cpp +11 -0
  15. data/ext/oxt/system_calls.hpp +2 -1
  16. data/ext/oxt/thread.hpp +97 -1
  17. data/ext/phusion_passenger/native_support.c +30 -1
  18. data/lib/phusion_passenger/constants.rb +1 -1
  19. data/lib/phusion_passenger/dependencies.rb +32 -0
  20. data/lib/phusion_passenger/message_channel.rb +45 -3
  21. data/lib/phusion_passenger/platform_info.rb +1 -1
  22. data/lib/phusion_passenger/rack/application_spawner.rb +10 -4
  23. data/lib/phusion_passenger/rack/request_handler.rb +2 -5
  24. data/lib/phusion_passenger/railz/application_spawner.rb +59 -7
  25. data/lib/phusion_passenger/utils.rb +70 -16
  26. data/{vendor/rack-1.0.0-git/lib/rack → lib/phusion_passenger/utils}/rewindable_input.rb +34 -9
  27. data/test/ApplicationPoolTest.cpp +1 -1
  28. data/test/MessageChannelTest.cpp +9 -1
  29. data/test/stub/message_channel.rb +1 -1
  30. data/test/stub/message_channel_2.rb +1 -1
  31. data/test/stub/message_channel_3.rb +2 -2
  32. metadata +43 -155
  33. data/doc/Architectural overview.html +0 -1
  34. data/doc/rdoc/classes/ConditionVariable.html +0 -194
  35. data/doc/rdoc/classes/Exception.html +0 -120
  36. data/doc/rdoc/classes/GC.html +0 -113
  37. data/doc/rdoc/classes/IO.html +0 -169
  38. data/doc/rdoc/classes/PhusionPassenger.html +0 -238
  39. data/doc/rdoc/classes/PhusionPassenger/AbstractInstaller.html +0 -153
  40. data/doc/rdoc/classes/PhusionPassenger/AbstractRequestHandler.html +0 -517
  41. data/doc/rdoc/classes/PhusionPassenger/AbstractServer.html +0 -719
  42. data/doc/rdoc/classes/PhusionPassenger/AbstractServer/ServerAlreadyStarted.html +0 -97
  43. data/doc/rdoc/classes/PhusionPassenger/AbstractServer/ServerError.html +0 -96
  44. data/doc/rdoc/classes/PhusionPassenger/AbstractServer/ServerNotStarted.html +0 -97
  45. data/doc/rdoc/classes/PhusionPassenger/AbstractServer/UnknownMessage.html +0 -96
  46. data/doc/rdoc/classes/PhusionPassenger/AbstractServerCollection.html +0 -598
  47. data/doc/rdoc/classes/PhusionPassenger/AdminTools.html +0 -140
  48. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ControlProcess.html +0 -317
  49. data/doc/rdoc/classes/PhusionPassenger/AdminTools/ControlProcess/Instance.html +0 -138
  50. data/doc/rdoc/classes/PhusionPassenger/AppInitError.html +0 -154
  51. data/doc/rdoc/classes/PhusionPassenger/Application.html +0 -283
  52. data/doc/rdoc/classes/PhusionPassenger/ConsoleTextTemplate.html +0 -172
  53. data/doc/rdoc/classes/PhusionPassenger/FrameworkInitError.html +0 -145
  54. data/doc/rdoc/classes/PhusionPassenger/HTMLTemplate.html +0 -181
  55. data/doc/rdoc/classes/PhusionPassenger/InitializationError.html +0 -141
  56. data/doc/rdoc/classes/PhusionPassenger/InvalidPath.html +0 -92
  57. data/doc/rdoc/classes/PhusionPassenger/MessageChannel.html +0 -489
  58. data/doc/rdoc/classes/PhusionPassenger/NativeSupport.html +0 -350
  59. data/doc/rdoc/classes/PhusionPassenger/Rack.html +0 -91
  60. data/doc/rdoc/classes/PhusionPassenger/Rack/ApplicationSpawner.html +0 -188
  61. data/doc/rdoc/classes/PhusionPassenger/Rack/RequestHandler.html +0 -199
  62. data/doc/rdoc/classes/PhusionPassenger/Railz.html +0 -95
  63. data/doc/rdoc/classes/PhusionPassenger/Railz/ApplicationSpawner.html +0 -438
  64. data/doc/rdoc/classes/PhusionPassenger/Railz/ApplicationSpawner/Error.html +0 -98
  65. data/doc/rdoc/classes/PhusionPassenger/Railz/CGIFixed.html +0 -200
  66. data/doc/rdoc/classes/PhusionPassenger/Railz/FrameworkSpawner.html +0 -436
  67. data/doc/rdoc/classes/PhusionPassenger/Railz/FrameworkSpawner/Error.html +0 -98
  68. data/doc/rdoc/classes/PhusionPassenger/Railz/RequestHandler.html +0 -155
  69. data/doc/rdoc/classes/PhusionPassenger/SpawnManager.html +0 -402
  70. data/doc/rdoc/classes/PhusionPassenger/UnknownError.html +0 -125
  71. data/doc/rdoc/classes/PhusionPassenger/Utils.html +0 -803
  72. data/doc/rdoc/classes/PhusionPassenger/Utils/PseudoIO.html +0 -169
  73. data/doc/rdoc/classes/PhusionPassenger/VersionNotFound.html +0 -140
  74. data/doc/rdoc/classes/PhusionPassenger/WSGI.html +0 -89
  75. data/doc/rdoc/classes/PhusionPassenger/WSGI/ApplicationSpawner.html +0 -188
  76. data/doc/rdoc/classes/PlatformInfo.html +0 -866
  77. data/doc/rdoc/classes/RakeExtensions.html +0 -197
  78. data/doc/rdoc/classes/Signal.html +0 -131
  79. data/doc/rdoc/created.rid +0 -1
  80. data/doc/rdoc/files/DEVELOPERS_TXT.html +0 -255
  81. data/doc/rdoc/files/README.html +0 -175
  82. data/doc/rdoc/files/ext/phusion_passenger/native_support_c.html +0 -92
  83. data/doc/rdoc/files/lib/phusion_passenger/abstract_installer_rb.html +0 -129
  84. data/doc/rdoc/files/lib/phusion_passenger/abstract_request_handler_rb.html +0 -129
  85. data/doc/rdoc/files/lib/phusion_passenger/abstract_server_collection_rb.html +0 -126
  86. data/doc/rdoc/files/lib/phusion_passenger/abstract_server_rb.html +0 -128
  87. data/doc/rdoc/files/lib/phusion_passenger/admin_tools/control_process_rb.html +0 -130
  88. data/doc/rdoc/files/lib/phusion_passenger/admin_tools_rb.html +0 -122
  89. data/doc/rdoc/files/lib/phusion_passenger/application_rb.html +0 -127
  90. data/doc/rdoc/files/lib/phusion_passenger/console_text_template_rb.html +0 -126
  91. data/doc/rdoc/files/lib/phusion_passenger/constants_rb.html +0 -122
  92. data/doc/rdoc/files/lib/phusion_passenger/dependencies_rb.html +0 -134
  93. data/doc/rdoc/files/lib/phusion_passenger/events_rb.html +0 -122
  94. data/doc/rdoc/files/lib/phusion_passenger/exceptions_rb.html +0 -122
  95. data/doc/rdoc/files/lib/phusion_passenger/html_template_rb.html +0 -126
  96. data/doc/rdoc/files/lib/phusion_passenger/message_channel_rb.html +0 -120
  97. data/doc/rdoc/files/lib/phusion_passenger/packaging_rb.html +0 -122
  98. data/doc/rdoc/files/lib/phusion_passenger/platform_info_rb.html +0 -127
  99. data/doc/rdoc/files/lib/phusion_passenger/rack/application_spawner_rb.html +0 -133
  100. data/doc/rdoc/files/lib/phusion_passenger/rack/request_handler_rb.html +0 -125
  101. data/doc/rdoc/files/lib/phusion_passenger/railz/application_spawner_rb.html +0 -140
  102. data/doc/rdoc/files/lib/phusion_passenger/railz/cgi_fixed_rb.html +0 -126
  103. data/doc/rdoc/files/lib/phusion_passenger/railz/framework_spawner_rb.html +0 -145
  104. data/doc/rdoc/files/lib/phusion_passenger/railz/request_handler_rb.html +0 -125
  105. data/doc/rdoc/files/lib/phusion_passenger/simple_benchmarking_rb.html +0 -122
  106. data/doc/rdoc/files/lib/phusion_passenger/spawn_manager_rb.html +0 -159
  107. data/doc/rdoc/files/lib/phusion_passenger/utils_rb.html +0 -174
  108. data/doc/rdoc/files/lib/phusion_passenger/wsgi/application_spawner_rb.html +0 -129
  109. data/doc/rdoc/files/misc/rake/extensions_rb.html +0 -130
  110. data/doc/rdoc/fr_class_index.html +0 -91
  111. data/doc/rdoc/fr_file_index.html +0 -76
  112. data/doc/rdoc/fr_method_index.html +0 -205
  113. data/doc/rdoc/index.html +0 -26
  114. data/doc/rdoc/rdoc-style.css +0 -187
  115. data/vendor/README +0 -13
  116. data/vendor/README_FOR_PACKAGERS +0 -1
  117. data/vendor/rack-1.0.0-git/COPYING +0 -18
  118. data/vendor/rack-1.0.0-git/KNOWN-ISSUES +0 -18
  119. data/vendor/rack-1.0.0-git/README +0 -353
  120. data/vendor/rack-1.0.0-git/Rakefile +0 -164
  121. data/vendor/rack-1.0.0-git/lib/rack.rb +0 -90
  122. data/vendor/rack-1.0.0-git/lib/rack/adapter/camping.rb +0 -22
  123. data/vendor/rack-1.0.0-git/lib/rack/auth/abstract/handler.rb +0 -37
  124. data/vendor/rack-1.0.0-git/lib/rack/auth/abstract/request.rb +0 -37
  125. data/vendor/rack-1.0.0-git/lib/rack/auth/basic.rb +0 -58
  126. data/vendor/rack-1.0.0-git/lib/rack/auth/digest/md5.rb +0 -124
  127. data/vendor/rack-1.0.0-git/lib/rack/auth/digest/nonce.rb +0 -51
  128. data/vendor/rack-1.0.0-git/lib/rack/auth/digest/params.rb +0 -55
  129. data/vendor/rack-1.0.0-git/lib/rack/auth/digest/request.rb +0 -40
  130. data/vendor/rack-1.0.0-git/lib/rack/auth/openid.rb +0 -487
  131. data/vendor/rack-1.0.0-git/lib/rack/builder.rb +0 -63
  132. data/vendor/rack-1.0.0-git/lib/rack/cascade.rb +0 -41
  133. data/vendor/rack-1.0.0-git/lib/rack/chunked.rb +0 -49
  134. data/vendor/rack-1.0.0-git/lib/rack/commonlogger.rb +0 -52
  135. data/vendor/rack-1.0.0-git/lib/rack/conditionalget.rb +0 -47
  136. data/vendor/rack-1.0.0-git/lib/rack/content_length.rb +0 -29
  137. data/vendor/rack-1.0.0-git/lib/rack/content_type.rb +0 -23
  138. data/vendor/rack-1.0.0-git/lib/rack/deflater.rb +0 -96
  139. data/vendor/rack-1.0.0-git/lib/rack/directory.rb +0 -153
  140. data/vendor/rack-1.0.0-git/lib/rack/file.rb +0 -88
  141. data/vendor/rack-1.0.0-git/lib/rack/handler.rb +0 -69
  142. data/vendor/rack-1.0.0-git/lib/rack/handler/cgi.rb +0 -61
  143. data/vendor/rack-1.0.0-git/lib/rack/handler/evented_mongrel.rb +0 -8
  144. data/vendor/rack-1.0.0-git/lib/rack/handler/fastcgi.rb +0 -88
  145. data/vendor/rack-1.0.0-git/lib/rack/handler/lsws.rb +0 -55
  146. data/vendor/rack-1.0.0-git/lib/rack/handler/mongrel.rb +0 -84
  147. data/vendor/rack-1.0.0-git/lib/rack/handler/scgi.rb +0 -59
  148. data/vendor/rack-1.0.0-git/lib/rack/handler/swiftiplied_mongrel.rb +0 -8
  149. data/vendor/rack-1.0.0-git/lib/rack/handler/thin.rb +0 -18
  150. data/vendor/rack-1.0.0-git/lib/rack/handler/webrick.rb +0 -67
  151. data/vendor/rack-1.0.0-git/lib/rack/head.rb +0 -19
  152. data/vendor/rack-1.0.0-git/lib/rack/lint.rb +0 -537
  153. data/vendor/rack-1.0.0-git/lib/rack/lobster.rb +0 -65
  154. data/vendor/rack-1.0.0-git/lib/rack/lock.rb +0 -16
  155. data/vendor/rack-1.0.0-git/lib/rack/methodoverride.rb +0 -27
  156. data/vendor/rack-1.0.0-git/lib/rack/mime.rb +0 -204
  157. data/vendor/rack-1.0.0-git/lib/rack/mock.rb +0 -184
  158. data/vendor/rack-1.0.0-git/lib/rack/recursive.rb +0 -57
  159. data/vendor/rack-1.0.0-git/lib/rack/reloader.rb +0 -106
  160. data/vendor/rack-1.0.0-git/lib/rack/request.rb +0 -248
  161. data/vendor/rack-1.0.0-git/lib/rack/response.rb +0 -183
  162. data/vendor/rack-1.0.0-git/lib/rack/session/abstract/id.rb +0 -142
  163. data/vendor/rack-1.0.0-git/lib/rack/session/cookie.rb +0 -91
  164. data/vendor/rack-1.0.0-git/lib/rack/session/memcache.rb +0 -109
  165. data/vendor/rack-1.0.0-git/lib/rack/session/pool.rb +0 -100
  166. data/vendor/rack-1.0.0-git/lib/rack/showexceptions.rb +0 -349
  167. data/vendor/rack-1.0.0-git/lib/rack/showstatus.rb +0 -106
  168. data/vendor/rack-1.0.0-git/lib/rack/static.rb +0 -38
  169. data/vendor/rack-1.0.0-git/lib/rack/urlmap.rb +0 -55
  170. data/vendor/rack-1.0.0-git/lib/rack/utils.rb +0 -522
@@ -1,98 +0,0 @@
1
- <?xml version="1.0" encoding="iso-8859-1"?>
2
- <!DOCTYPE html
3
- PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
- <html>
6
- <head>
7
- <title>Class: PhusionPassenger::Railz::FrameworkSpawner::Error</title>
8
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
9
- <link rel="stylesheet" href="../../../.././rdoc-style.css" type="text/css" media="screen" />
10
-
11
- <script language="JavaScript" type="text/javascript">
12
- // <![CDATA[
13
-
14
- function toggleSource( id )
15
- {
16
- var elem
17
- var link
18
-
19
- if( document.getElementById )
20
- {
21
- elem = document.getElementById( id )
22
- link = document.getElementById( "l_" + id )
23
- }
24
- else if ( document.all )
25
- {
26
- elem = eval( "document.all." + id )
27
- link = eval( "document.all.l_" + id )
28
- }
29
- else
30
- return false;
31
-
32
- if( elem.style.display == "block" )
33
- {
34
- elem.style.display = "none"
35
- link.innerHTML = "show source"
36
- }
37
- else
38
- {
39
- elem.style.display = "block"
40
- link.innerHTML = "hide source"
41
- }
42
- }
43
-
44
- function openCode( url )
45
- {
46
- window.open( url, "SOURCE_CODE", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=480,width=750" ).focus();
47
- }
48
- // ]]>
49
- </script>
50
- </head>
51
-
52
- <body>
53
- <table width="100%" border='0' cellpadding='0' cellspacing='0' class='banner'><tr>
54
- <td class="file-title"><span class="file-title-prefix">Class</span><br />PhusionPassenger::Railz::FrameworkSpawner::Error</td>
55
- <td align="right">
56
- <table cellspacing="0" cellpadding="2">
57
- <tr valign="top">
58
- <td>In:</td>
59
- <td>
60
- <a href="../../../../files/lib/phusion_passenger/railz/framework_spawner_rb.html">lib/phusion_passenger/railz/framework_spawner.rb</a>
61
- </td>
62
- </tr>
63
- <tr>
64
- <td>Parent:</td>
65
- <td>
66
- AbstractServer::ServerError
67
- </td>
68
- </tr>
69
- </table>
70
- </td>
71
- </tr>
72
- </table>
73
- <!-- banner header -->
74
-
75
- <div id="bodyContent">
76
- <div id="content">
77
-
78
- <div class="description"><p>
79
- This exception means that the <a
80
- href="../FrameworkSpawner.html">FrameworkSpawner</a> server process exited
81
- unexpectedly.
82
- </p>
83
- </div>
84
-
85
-
86
-
87
-
88
-
89
-
90
-
91
-
92
-
93
- </div>
94
-
95
- </div>
96
-
97
- </body>
98
- </html>
@@ -1,155 +0,0 @@
1
- <?xml version="1.0" encoding="iso-8859-1"?>
2
- <!DOCTYPE html
3
- PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
- <html>
6
- <head>
7
- <title>Class: PhusionPassenger::Railz::RequestHandler</title>
8
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
9
- <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
10
-
11
- <script language="JavaScript" type="text/javascript">
12
- // <![CDATA[
13
-
14
- function toggleSource( id )
15
- {
16
- var elem
17
- var link
18
-
19
- if( document.getElementById )
20
- {
21
- elem = document.getElementById( id )
22
- link = document.getElementById( "l_" + id )
23
- }
24
- else if ( document.all )
25
- {
26
- elem = eval( "document.all." + id )
27
- link = eval( "document.all.l_" + id )
28
- }
29
- else
30
- return false;
31
-
32
- if( elem.style.display == "block" )
33
- {
34
- elem.style.display = "none"
35
- link.innerHTML = "show source"
36
- }
37
- else
38
- {
39
- elem.style.display = "block"
40
- link.innerHTML = "hide source"
41
- }
42
- }
43
-
44
- function openCode( url )
45
- {
46
- window.open( url, "SOURCE_CODE", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=480,width=750" ).focus();
47
- }
48
- // ]]>
49
- </script>
50
- </head>
51
-
52
- <body>
53
- <table width="100%" border='0' cellpadding='0' cellspacing='0' class='banner'><tr>
54
- <td class="file-title"><span class="file-title-prefix">Class</span><br />PhusionPassenger::Railz::RequestHandler</td>
55
- <td align="right">
56
- <table cellspacing="0" cellpadding="2">
57
- <tr valign="top">
58
- <td>In:</td>
59
- <td>
60
- <a href="../../../files/lib/phusion_passenger/railz/request_handler_rb.html">lib/phusion_passenger/railz/request_handler.rb</a>
61
- </td>
62
- </tr>
63
- <tr>
64
- <td>Parent:</td>
65
- <td>
66
- AbstractRequestHandler
67
- </td>
68
- </tr>
69
- </table>
70
- </td>
71
- </tr>
72
- </table>
73
- <!-- banner header -->
74
-
75
- <div id="bodyContent">
76
- <div id="content">
77
-
78
- <div class="description"><p>
79
- A request handler for Ruby on Rails applications.
80
- </p>
81
- </div>
82
-
83
-
84
-
85
- <div class="sectiontitle">Methods</div>
86
- <ul>
87
- <li><a href="#M000073">new</a></li>
88
- <li><a href="#M000074">process_request</a></li>
89
- </ul>
90
-
91
-
92
-
93
-
94
- <div class="sectiontitle">Constants</div>
95
- <table border='0' cellpadding='5'>
96
- <tr valign='top'>
97
- <td class="attr-name">NINJA_PATCHING_LOCK</td>
98
- <td>=</td>
99
- <td class="attr-value">Mutex.new # :nodoc:</td>
100
- </tr>
101
- </table>
102
-
103
-
104
- <div class="sectiontitle">Public Class methods</div>
105
- <div class="method">
106
- <div class="title">
107
- <a name="M000073"></a><b>new</b>(owner_pipe, options = {})
108
- </div>
109
- <div class="sourcecode">
110
- <p class="source-link">[ <a href="javascript:toggleSource('M000073_source')" id="l_M000073_source">show source</a> ]</p>
111
- <div id="M000073_source" class="dyn-source">
112
- <pre>
113
- <span class="ruby-comment cmt"># File lib/phusion_passenger/railz/request_handler.rb, line 38</span>
114
- 38: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">owner_pipe</span>, <span class="ruby-identifier">options</span> = {})
115
- 39: <span class="ruby-keyword kw">super</span>(<span class="ruby-identifier">owner_pipe</span>, <span class="ruby-identifier">options</span>)
116
- 40: <span class="ruby-constant">NINJA_PATCHING_LOCK</span>.<span class="ruby-identifier">synchronize</span> <span class="ruby-keyword kw">do</span>
117
- 41: <span class="ruby-identifier">ninja_patch_action_controller</span>
118
- 42: <span class="ruby-keyword kw">end</span>
119
- 43: <span class="ruby-keyword kw">end</span>
120
- </pre>
121
- </div>
122
- </div>
123
- </div>
124
- <div class="sectiontitle">Protected Instance methods</div>
125
- <div class="method">
126
- <div class="title">
127
- <a name="M000074"></a><b>process_request</b>(headers, input, output)
128
- </div>
129
- <div class="description">
130
- <p>
131
- Overrided method.
132
- </p>
133
- </div>
134
- <div class="sourcecode">
135
- <p class="source-link">[ <a href="javascript:toggleSource('M000074_source')" id="l_M000074_source">show source</a> ]</p>
136
- <div id="M000074_source" class="dyn-source">
137
- <pre>
138
- <span class="ruby-comment cmt"># File lib/phusion_passenger/railz/request_handler.rb, line 47</span>
139
- 47: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">process_request</span>(<span class="ruby-identifier">headers</span>, <span class="ruby-identifier">input</span>, <span class="ruby-identifier">output</span>)
140
- 48: <span class="ruby-identifier">headers</span>[<span class="ruby-constant">CONTENT_LENGTH</span>] = <span class="ruby-identifier">headers</span>[<span class="ruby-constant">HTTP_CONTENT_LENGTH</span>]
141
- 49: <span class="ruby-identifier">cgi</span> = <span class="ruby-constant">CGIFixed</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">headers</span>, <span class="ruby-identifier">input</span>, <span class="ruby-identifier">output</span>)
142
- 50: <span class="ruby-operator">::</span><span class="ruby-constant">Dispatcher</span>.<span class="ruby-identifier">dispatch</span>(<span class="ruby-identifier">cgi</span>,
143
- 51: <span class="ruby-operator">::</span><span class="ruby-constant">ActionController</span><span class="ruby-operator">::</span><span class="ruby-constant">CgiRequest</span><span class="ruby-operator">::</span><span class="ruby-constant">DEFAULT_SESSION_OPTIONS</span>,
144
- 52: <span class="ruby-identifier">cgi</span>.<span class="ruby-identifier">stdoutput</span>)
145
- 53: <span class="ruby-keyword kw">end</span>
146
- </pre>
147
- </div>
148
- </div>
149
- </div>
150
- </div>
151
-
152
- </div>
153
-
154
- </body>
155
- </html>
@@ -1,402 +0,0 @@
1
- <?xml version="1.0" encoding="iso-8859-1"?>
2
- <!DOCTYPE html
3
- PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
- <html>
6
- <head>
7
- <title>Class: PhusionPassenger::SpawnManager</title>
8
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
9
- <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
10
-
11
- <script language="JavaScript" type="text/javascript">
12
- // <![CDATA[
13
-
14
- function toggleSource( id )
15
- {
16
- var elem
17
- var link
18
-
19
- if( document.getElementById )
20
- {
21
- elem = document.getElementById( id )
22
- link = document.getElementById( "l_" + id )
23
- }
24
- else if ( document.all )
25
- {
26
- elem = eval( "document.all." + id )
27
- link = eval( "document.all.l_" + id )
28
- }
29
- else
30
- return false;
31
-
32
- if( elem.style.display == "block" )
33
- {
34
- elem.style.display = "none"
35
- link.innerHTML = "show source"
36
- }
37
- else
38
- {
39
- elem.style.display = "block"
40
- link.innerHTML = "hide source"
41
- }
42
- }
43
-
44
- function openCode( url )
45
- {
46
- window.open( url, "SOURCE_CODE", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=480,width=750" ).focus();
47
- }
48
- // ]]>
49
- </script>
50
- </head>
51
-
52
- <body>
53
- <table width="100%" border='0' cellpadding='0' cellspacing='0' class='banner'><tr>
54
- <td class="file-title"><span class="file-title-prefix">Class</span><br />PhusionPassenger::SpawnManager</td>
55
- <td align="right">
56
- <table cellspacing="0" cellpadding="2">
57
- <tr valign="top">
58
- <td>In:</td>
59
- <td>
60
- <a href="../../files/lib/phusion_passenger/spawn_manager_rb.html">lib/phusion_passenger/spawn_manager.rb</a>
61
- </td>
62
- </tr>
63
- <tr>
64
- <td>Parent:</td>
65
- <td>
66
- <a href="AbstractServer.html">
67
- AbstractServer
68
- </a>
69
- </td>
70
- </tr>
71
- </table>
72
- </td>
73
- </tr>
74
- </table>
75
- <!-- banner header -->
76
-
77
- <div id="bodyContent">
78
- <div id="content">
79
-
80
- <div class="description"><p>
81
- The spawn manager is capable of spawning Ruby on Rails or <a
82
- href="Rack.html">Rack</a> application instances. It acts like a simple
83
- fascade for the rest of the spawn manager system.
84
- </p>
85
- <p>
86
- <b>Note</b>: <a href="SpawnManager.html">SpawnManager</a> may only be
87
- started synchronously with <a
88
- href="AbstractServer.html#M000121">AbstractServer#start_synchronously</a>.
89
- Starting asynchronously has not been tested. Don&#8216;t forget to call <a
90
- href="SpawnManager.html#M000153">cleanup</a> after the server&#8216;s main
91
- loop has finished.
92
- </p>
93
- <h2>Ruby on Rails optimizations</h2>
94
- <p>
95
- Spawning a Ruby on Rails application is usually slow. But <a
96
- href="SpawnManager.html">SpawnManager</a> will preload and cache Ruby on
97
- Rails frameworks, as well as application code, so subsequent spawns will be
98
- very fast.
99
- </p>
100
- <p>
101
- Internally, <a href="SpawnManager.html">SpawnManager</a> uses <a
102
- href="Railz/FrameworkSpawner.html">Railz::FrameworkSpawner</a> to preload
103
- and cache Ruby on Rails frameworks. <a
104
- href="Railz/FrameworkSpawner.html">Railz::FrameworkSpawner</a>, in turn,
105
- uses <a href="Railz/ApplicationSpawner.html">Railz::ApplicationSpawner</a>
106
- to preload and cache application code.
107
- </p>
108
- <p>
109
- In case you&#8216;re wondering why the namespace is &quot;<a
110
- href="Railz.html">Railz</a>&quot; and not &quot;Rails&quot;: it&#8216;s to
111
- work around an obscure bug in ActiveSupport&#8216;s Dispatcher.
112
- </p>
113
- </div>
114
-
115
-
116
-
117
- <div class="sectiontitle">Methods</div>
118
- <ul>
119
- <li><a href="#M000153">cleanup</a></li>
120
- <li><a href="#M000150">new</a></li>
121
- <li><a href="#M000152">reload</a></li>
122
- <li><a href="#M000151">spawn_application</a></li>
123
- </ul>
124
-
125
- <div class="sectiontitle">Included Modules</div>
126
- <ul>
127
- <li><a href="Utils.html">Utils</a></li>
128
- </ul>
129
-
130
-
131
-
132
-
133
-
134
- <div class="sectiontitle">Public Class methods</div>
135
- <div class="method">
136
- <div class="title">
137
- <a name="M000150"></a><b>new</b>()
138
- </div>
139
- <div class="sourcecode">
140
- <p class="source-link">[ <a href="javascript:toggleSource('M000150_source')" id="l_M000150_source">show source</a> ]</p>
141
- <div id="M000150_source" class="dyn-source">
142
- <pre>
143
- <span class="ruby-comment cmt"># File lib/phusion_passenger/spawn_manager.rb, line 61</span>
144
- 61: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>
145
- 62: <span class="ruby-keyword kw">super</span>()
146
- 63: <span class="ruby-ivar">@spawners</span> = <span class="ruby-constant">AbstractServerCollection</span>.<span class="ruby-identifier">new</span>
147
- 64: <span class="ruby-identifier">define_message_handler</span>(<span class="ruby-identifier">:spawn_application</span>, <span class="ruby-identifier">:handle_spawn_application</span>)
148
- 65: <span class="ruby-identifier">define_message_handler</span>(<span class="ruby-identifier">:reload</span>, <span class="ruby-identifier">:handle_reload</span>)
149
- 66: <span class="ruby-identifier">define_signal_handler</span>(<span class="ruby-value str">'SIGHUP'</span>, <span class="ruby-identifier">:reload</span>)
150
- 67:
151
- 68: <span class="ruby-comment cmt"># Start garbage collector in order to free up some existing</span>
152
- 69: <span class="ruby-comment cmt"># heap slots. This prevents the heap from growing unnecessarily</span>
153
- 70: <span class="ruby-comment cmt"># during the startup phase.</span>
154
- 71: <span class="ruby-constant">GC</span>.<span class="ruby-identifier">start</span>
155
- 72: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">GC</span>.<span class="ruby-identifier">copy_on_write_friendly?</span>
156
- 73: <span class="ruby-comment cmt"># Preload libraries for copy-on-write semantics.</span>
157
- 74: <span class="ruby-identifier">require</span> <span class="ruby-value str">'base64'</span>
158
- 75: <span class="ruby-identifier">require</span> <span class="ruby-value str">'phusion_passenger/application'</span>
159
- 76: <span class="ruby-identifier">require</span> <span class="ruby-value str">'phusion_passenger/railz/framework_spawner'</span>
160
- 77: <span class="ruby-identifier">require</span> <span class="ruby-value str">'phusion_passenger/railz/application_spawner'</span>
161
- 78: <span class="ruby-identifier">require</span> <span class="ruby-value str">'phusion_passenger/rack/application_spawner'</span>
162
- 79: <span class="ruby-identifier">require</span> <span class="ruby-value str">'phusion_passenger/html_template'</span>
163
- 80: <span class="ruby-identifier">require</span> <span class="ruby-value str">'phusion_passenger/platform_info'</span>
164
- 81: <span class="ruby-identifier">require</span> <span class="ruby-value str">'phusion_passenger/exceptions'</span>
165
- 82:
166
- 83: <span class="ruby-comment cmt"># Commonly used libraries.</span>
167
- 84: [<span class="ruby-value str">'mysql'</span>, <span class="ruby-value str">'sqlite3'</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">lib</span><span class="ruby-operator">|</span>
168
- 85: <span class="ruby-keyword kw">begin</span>
169
- 86: <span class="ruby-identifier">require</span> <span class="ruby-identifier">lib</span>
170
- 87: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">LoadError</span>
171
- 88: <span class="ruby-comment cmt"># Do nothing; ignore if not present.</span>
172
- 89: <span class="ruby-keyword kw">end</span>
173
- 90: <span class="ruby-keyword kw">end</span>
174
- 91: <span class="ruby-keyword kw">end</span>
175
- 92: <span class="ruby-keyword kw">end</span>
176
- </pre>
177
- </div>
178
- </div>
179
- </div>
180
- <div class="sectiontitle">Public Instance methods</div>
181
- <div class="method">
182
- <div class="title">
183
- <a name="M000153"></a><b>cleanup</b>()
184
- </div>
185
- <div class="description">
186
- <p>
187
- Cleanup resources. Should be called when this <a
188
- href="SpawnManager.html">SpawnManager</a> is no longer needed.
189
- </p>
190
- </div>
191
- <div class="sourcecode">
192
- <p class="source-link">[ <a href="javascript:toggleSource('M000153_source')" id="l_M000153_source">show source</a> ]</p>
193
- <div id="M000153_source" class="dyn-source">
194
- <pre>
195
- <span class="ruby-comment cmt"># File lib/phusion_passenger/spawn_manager.rb, line 215</span>
196
- 215: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">cleanup</span>
197
- 216: <span class="ruby-ivar">@spawners</span>.<span class="ruby-identifier">cleanup</span>
198
- 217: <span class="ruby-keyword kw">end</span>
199
- </pre>
200
- </div>
201
- </div>
202
- </div>
203
- <div class="method">
204
- <div class="title">
205
- <a name="M000152"></a><b>reload</b>(app_root = nil)
206
- </div>
207
- <div class="description">
208
- <p>
209
- Remove the cached application instances at the given application root. If
210
- nil is specified as application root, then all cached application instances
211
- will be removed, no matter the application root.
212
- </p>
213
- <p>
214
- <b>Long description:</b> <a href="Application.html">Application</a> code
215
- might be cached in memory. But once it a while, it will be necessary to <a
216
- href="SpawnManager.html#M000152">reload</a> the code for an application,
217
- such as after deploying a <a href="SpawnManager.html#M000150">new</a>
218
- version of the application. This method makes sure that any cached
219
- application code is removed, so that the next time an application instance
220
- is spawned, the application code will be freshly loaded into memory.
221
- </p>
222
- <p>
223
- Raises AbstractServer::SpawnError if something went wrong.
224
- </p>
225
- </div>
226
- <div class="sourcecode">
227
- <p class="source-link">[ <a href="javascript:toggleSource('M000152_source')" id="l_M000152_source">show source</a> ]</p>
228
- <div id="M000152_source" class="dyn-source">
229
- <pre>
230
- <span class="ruby-comment cmt"># File lib/phusion_passenger/spawn_manager.rb, line 188</span>
231
- 188: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">reload</span>(<span class="ruby-identifier">app_root</span> = <span class="ruby-keyword kw">nil</span>)
232
- 189: <span class="ruby-ivar">@spawners</span>.<span class="ruby-identifier">synchronize</span> <span class="ruby-keyword kw">do</span>
233
- 190: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">app_root</span>
234
- 191: <span class="ruby-comment cmt"># Delete associated ApplicationSpawner.</span>
235
- 192: <span class="ruby-ivar">@spawners</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-node">&quot;app:#{app_root}&quot;</span>)
236
- 193: <span class="ruby-keyword kw">else</span>
237
- 194: <span class="ruby-comment cmt"># Delete all ApplicationSpawners.</span>
238
- 195: <span class="ruby-identifier">keys_to_delete</span> = []
239
- 196: <span class="ruby-ivar">@spawners</span>.<span class="ruby-identifier">each_pair</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">key</span>, <span class="ruby-identifier">spawner</span><span class="ruby-operator">|</span>
240
- 197: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">spawner</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Railz</span><span class="ruby-operator">::</span><span class="ruby-constant">ApplicationSpawner</span>)
241
- 198: <span class="ruby-identifier">keys_to_delete</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">key</span>
242
- 199: <span class="ruby-keyword kw">end</span>
243
- 200: <span class="ruby-keyword kw">end</span>
244
- 201: <span class="ruby-identifier">keys_to_delete</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">key</span><span class="ruby-operator">|</span>
245
- 202: <span class="ruby-ivar">@spawners</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">key</span>)
246
- 203: <span class="ruby-keyword kw">end</span>
247
- 204: <span class="ruby-keyword kw">end</span>
248
- 205: <span class="ruby-ivar">@spawners</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">spawner</span><span class="ruby-operator">|</span>
249
- 206: <span class="ruby-comment cmt"># Reload all FrameworkSpawners.</span>
250
- 207: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">spawner</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-identifier">:reload</span>)
251
- 208: <span class="ruby-identifier">spawner</span>.<span class="ruby-identifier">reload</span>(<span class="ruby-identifier">app_root</span>)
252
- 209: <span class="ruby-keyword kw">end</span>
253
- 210: <span class="ruby-keyword kw">end</span>
254
- 211: <span class="ruby-keyword kw">end</span>
255
- 212: <span class="ruby-keyword kw">end</span>
256
- </pre>
257
- </div>
258
- </div>
259
- </div>
260
- <div class="method">
261
- <div class="title">
262
- <a name="M000151"></a><b>spawn_application</b>(options)
263
- </div>
264
- <div class="description">
265
- <p>
266
- Spawn an application with the given spawn options. When successful, an <a
267
- href="Application.html">Application</a> object will be returned, which
268
- represents the spawned application. At least one option must be given:
269
- <tt>app_root</tt>. This is the application&#8216;s root folder.
270
- </p>
271
- <p>
272
- Other options are:
273
- </p>
274
- <dl>
275
- <dt>&#8216;lower_privilege&#8217;, &#8216;lowest_user&#8217;, &#8216;environment&#8217;, &#8216;environment_variables&#8217;, &#8216;base_uri&#8217; and &#8216;print_exceptions&#8216;</dt><dd>See Railz::ApplicationSpawner.new for an explanation of these options.
276
-
277
- </dd>
278
- <dt>&#8216;app_type&#8216;</dt><dd>What kind of application is being spawned. Either &quot;rails&quot;
279
- (default), &quot;rack&quot; or &quot;wsgi&quot;.
280
-
281
- </dd>
282
- <dt>&#8216;spawn_method&#8216;</dt><dd>May be one of &quot;smart&quot;, &quot;smart-lv2&quot; or
283
- &quot;conservative&quot;. When &quot;smart&quot; is specified, <a
284
- href="SpawnManager.html">SpawnManager</a> will internally cache the code of
285
- Rails applications, in order to speed up future spawning attempts. This
286
- implies that, if you&#8216;ve changed the application&#8216;s code, you
287
- must do one of these things:
288
-
289
- <ul>
290
- <li>Restart this <a href="SpawnManager.html">SpawnManager</a> by calling <a
291
- href="AbstractServer.html#M000122">AbstractServer#stop</a>, then <a
292
- href="AbstractServer.html#M000120">AbstractServer#start</a>.
293
-
294
- </li>
295
- <li>Reload the application by calling <a
296
- href="SpawnManager.html#M000152">reload</a> with the correct app_root
297
- argument.
298
-
299
- </li>
300
- </ul>
301
- <p>
302
- &quot;smart&quot; caches the Rails framework code in a framework spawner
303
- server, and application code in an application spawner server. Sometimes it
304
- is desirable to skip the framework spawning and going directly for the
305
- application spawner instead. The &quot;smart-lv2&quot; method allows you to
306
- do that.
307
- </p>
308
- <p>
309
- Caching however can be incompatible with some applications. The
310
- &quot;conservative&quot; spawning method does not involve any caching at
311
- all. Spawning will be slower, but is guaranteed to be compatible with all
312
- applications.
313
- </p>
314
- <p>
315
- The default spawn method is &quot;smart-lv2&quot;.
316
- </p>
317
- </dd>
318
- <dt>&#8216;framework_spawner_timeout&#8217; and &#8216;app_spawner_timeout&#8216;</dt><dd>These options allow you to specify the maximum idle timeout, in seconds, of
319
- the framework spawner servers and application spawner servers that will be
320
- started under the hood. These options are only used if <tt>app_type</tt>
321
- equals &quot;rails&quot;.
322
-
323
- <p>
324
- A timeout of 0 means that the spawner server should never idle timeout. A
325
- timeout of -1 means that the default timeout value should be used. The
326
- default value is -1.
327
- </p>
328
- </dd>
329
- </dl>
330
- <p>
331
- <b>Exceptions:</b>
332
- </p>
333
- <ul>
334
- <li><a href="InvalidPath.html">InvalidPath</a>: <tt>app_root</tt> doesn&#8216;t
335
- appear to be a valid Ruby on Rails application root.
336
-
337
- </li>
338
- <li><a href="VersionNotFound.html">VersionNotFound</a>: The Ruby on Rails
339
- framework version that the given application requires is not installed.
340
-
341
- </li>
342
- <li><a href="AbstractServer/ServerError.html">AbstractServer::ServerError</a>:
343
- One of the server processes exited unexpectedly.
344
-
345
- </li>
346
- <li><a href="FrameworkInitError.html">FrameworkInitError</a>: The Ruby on Rails
347
- framework that the application requires could not be loaded.
348
-
349
- </li>
350
- <li><a href="AppInitError.html">AppInitError</a>: The application raised an
351
- exception or called exit() during startup.
352
-
353
- </li>
354
- </ul>
355
- </div>
356
- <div class="sourcecode">
357
- <p class="source-link">[ <a href="javascript:toggleSource('M000151_source')" id="l_M000151_source">show source</a> ]</p>
358
- <div id="M000151_source" class="dyn-source">
359
- <pre>
360
- <span class="ruby-comment cmt"># File lib/phusion_passenger/spawn_manager.rb, line 142</span>
361
- 142: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">spawn_application</span>(<span class="ruby-identifier">options</span>)
362
- 143: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">options</span>[<span class="ruby-value str">&quot;app_root&quot;</span>]
363
- 144: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">&quot;The 'app_root' option must be given.&quot;</span>
364
- 145: <span class="ruby-keyword kw">end</span>
365
- 146: <span class="ruby-identifier">options</span> = <span class="ruby-identifier">sanitize_spawn_options</span>(<span class="ruby-identifier">options</span>)
366
- 147:
367
- 148: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value str">&quot;app_type&quot;</span>] <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;rails&quot;</span>
368
- 149: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-keyword kw">defined?</span>(<span class="ruby-constant">Railz</span><span class="ruby-operator">::</span><span class="ruby-constant">FrameworkSpawner</span>)
369
- 150: <span class="ruby-identifier">require</span> <span class="ruby-value str">'phusion_passenger/application'</span>
370
- 151: <span class="ruby-identifier">require</span> <span class="ruby-value str">'phusion_passenger/railz/framework_spawner'</span>
371
- 152: <span class="ruby-identifier">require</span> <span class="ruby-value str">'phusion_passenger/railz/application_spawner'</span>
372
- 153: <span class="ruby-keyword kw">end</span>
373
- 154: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">spawn_rails_application</span>(<span class="ruby-identifier">options</span>)
374
- 155: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">options</span>[<span class="ruby-value str">&quot;app_type&quot;</span>] <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;rack&quot;</span>
375
- 156: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-keyword kw">defined?</span>(<span class="ruby-constant">Rack</span><span class="ruby-operator">::</span><span class="ruby-constant">ApplicationSpawner</span>)
376
- 157: <span class="ruby-identifier">require</span> <span class="ruby-value str">'phusion_passenger/rack/application_spawner'</span>
377
- 158: <span class="ruby-keyword kw">end</span>
378
- 159: <span class="ruby-keyword kw">return</span> <span class="ruby-constant">Rack</span><span class="ruby-operator">::</span><span class="ruby-constant">ApplicationSpawner</span>.<span class="ruby-identifier">spawn_application</span>(
379
- 160: <span class="ruby-identifier">options</span>[<span class="ruby-value str">&quot;app_root&quot;</span>], <span class="ruby-identifier">options</span>
380
- 161: )
381
- 162: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">options</span>[<span class="ruby-value str">&quot;app_type&quot;</span>] <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;wsgi&quot;</span>
382
- 163: <span class="ruby-identifier">require</span> <span class="ruby-value str">'phusion_passenger/wsgi/application_spawner'</span>
383
- 164: <span class="ruby-keyword kw">return</span> <span class="ruby-constant">WSGI</span><span class="ruby-operator">::</span><span class="ruby-constant">ApplicationSpawner</span>.<span class="ruby-identifier">spawn_application</span>(
384
- 165: <span class="ruby-identifier">options</span>[<span class="ruby-value str">&quot;app_root&quot;</span>],
385
- 166: <span class="ruby-identifier">options</span>[<span class="ruby-value str">&quot;lower_privilege&quot;</span>],
386
- 167: <span class="ruby-identifier">options</span>[<span class="ruby-value str">&quot;lowest_user&quot;</span>],
387
- 168: <span class="ruby-identifier">options</span>[<span class="ruby-value str">&quot;environment&quot;</span>]
388
- 169: )
389
- 170: <span class="ruby-keyword kw">else</span>
390
- 171: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">&quot;Unknown 'app_type' value '#{options[&quot;app_type&quot;]}'.&quot;</span>
391
- 172: <span class="ruby-keyword kw">end</span>
392
- 173: <span class="ruby-keyword kw">end</span>
393
- </pre>
394
- </div>
395
- </div>
396
- </div>
397
- </div>
398
-
399
- </div>
400
-
401
- </body>
402
- </html>