mongrel 0.3.13.2 → 0.3.13.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (183) hide show
  1. data/COPYING +39 -488
  2. data/LICENSE +39 -488
  3. data/Rakefile +1 -1
  4. data/bin/mongrel_rails +8 -0
  5. data/doc/rdoc/classes/IO.src/M000001.html +5 -5
  6. data/doc/rdoc/classes/IO.src/M000002.html +5 -5
  7. data/doc/rdoc/classes/Kernel.src/M000020.html +5 -5
  8. data/doc/rdoc/classes/Kernel.src/M000021.html +9 -9
  9. data/doc/rdoc/classes/Mongrel.html +4 -22
  10. data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000101.html +10 -10
  11. data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000102.html +33 -33
  12. data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000103.html +20 -20
  13. data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000104.html +13 -13
  14. data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000105.html +11 -11
  15. data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000106.html +4 -4
  16. data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000107.html +4 -4
  17. data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000108.html +4 -4
  18. data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000109.html +5 -5
  19. data/doc/rdoc/classes/Mongrel/Camping.src/M000048.html +8 -8
  20. data/doc/rdoc/classes/Mongrel/Camping/CampingHandler.src/M000049.html +4 -4
  21. data/doc/rdoc/classes/Mongrel/Camping/CampingHandler.src/M000050.html +36 -36
  22. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000026.html +10 -10
  23. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000027.html +28 -28
  24. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000028.html +4 -4
  25. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000029.html +4 -4
  26. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000030.html +4 -4
  27. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000031.html +4 -4
  28. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000032.html +8 -8
  29. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000033.html +4 -4
  30. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000034.html +4 -4
  31. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000035.html +4 -4
  32. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000036.html +10 -10
  33. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000037.html +10 -10
  34. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000038.html +4 -4
  35. data/doc/rdoc/classes/Mongrel/Command/Registry.src/M000039.html +6 -6
  36. data/doc/rdoc/classes/Mongrel/Command/Registry.src/M000040.html +11 -11
  37. data/doc/rdoc/classes/Mongrel/Command/Registry.src/M000041.html +33 -33
  38. data/doc/rdoc/classes/Mongrel/Configurator.html +2 -2
  39. data/doc/rdoc/classes/Mongrel/Configurator.src/M000110.html +13 -13
  40. data/doc/rdoc/classes/Mongrel/Configurator.src/M000111.html +17 -17
  41. data/doc/rdoc/classes/Mongrel/Configurator.src/M000112.html +6 -6
  42. data/doc/rdoc/classes/Mongrel/Configurator.src/M000113.html +6 -6
  43. data/doc/rdoc/classes/Mongrel/Configurator.src/M000114.html +9 -9
  44. data/doc/rdoc/classes/Mongrel/Configurator.src/M000115.html +4 -4
  45. data/doc/rdoc/classes/Mongrel/Configurator.src/M000116.html +23 -23
  46. data/doc/rdoc/classes/Mongrel/Configurator.src/M000117.html +5 -5
  47. data/doc/rdoc/classes/Mongrel/Configurator.src/M000118.html +16 -16
  48. data/doc/rdoc/classes/Mongrel/Configurator.src/M000119.html +18 -18
  49. data/doc/rdoc/classes/Mongrel/Configurator.src/M000120.html +4 -4
  50. data/doc/rdoc/classes/Mongrel/Configurator.src/M000121.html +10 -10
  51. data/doc/rdoc/classes/Mongrel/Configurator.src/M000122.html +5 -5
  52. data/doc/rdoc/classes/Mongrel/Configurator.src/M000123.html +4 -4
  53. data/doc/rdoc/classes/Mongrel/Configurator.src/M000124.html +8 -8
  54. data/doc/rdoc/classes/Mongrel/Configurator.src/M000125.html +11 -11
  55. data/doc/rdoc/classes/Mongrel/Configurator.src/M000126.html +4 -4
  56. data/doc/rdoc/classes/Mongrel/Configurator.src/M000127.html +21 -21
  57. data/doc/rdoc/classes/Mongrel/Configurator.src/M000128.html +4 -4
  58. data/doc/rdoc/classes/Mongrel/Configurator.src/M000129.html +19 -19
  59. data/doc/rdoc/classes/Mongrel/Configurator.src/M000130.html +4 -4
  60. data/doc/rdoc/classes/Mongrel/Const.html +1 -1
  61. data/doc/rdoc/classes/Mongrel/DeflateFilter.src/M000099.html +5 -5
  62. data/doc/rdoc/classes/Mongrel/DeflateFilter.src/M000100.html +14 -14
  63. data/doc/rdoc/classes/Mongrel/DirHandler.src/M000058.html +7 -7
  64. data/doc/rdoc/classes/Mongrel/DirHandler.src/M000059.html +29 -29
  65. data/doc/rdoc/classes/Mongrel/DirHandler.src/M000060.html +28 -28
  66. data/doc/rdoc/classes/Mongrel/DirHandler.src/M000061.html +48 -48
  67. data/doc/rdoc/classes/Mongrel/DirHandler.src/M000062.html +25 -25
  68. data/doc/rdoc/classes/Mongrel/DirHandler.src/M000063.html +4 -4
  69. data/doc/rdoc/classes/Mongrel/Error404Handler.src/M000131.html +4 -4
  70. data/doc/rdoc/classes/Mongrel/Error404Handler.src/M000132.html +4 -4
  71. data/doc/rdoc/classes/Mongrel/HeaderOut.src/M000072.html +4 -4
  72. data/doc/rdoc/classes/Mongrel/HeaderOut.src/M000073.html +4 -4
  73. data/doc/rdoc/classes/Mongrel/HttpHandler.src/M000078.html +3 -3
  74. data/doc/rdoc/classes/Mongrel/HttpHandler.src/M000079.html +3 -3
  75. data/doc/rdoc/classes/Mongrel/HttpHandler.src/M000080.html +3 -3
  76. data/doc/rdoc/classes/Mongrel/HttpHandlerPlugin.src/M000022.html +3 -3
  77. data/doc/rdoc/classes/Mongrel/HttpHandlerPlugin.src/M000023.html +3 -3
  78. data/doc/rdoc/classes/Mongrel/HttpHandlerPlugin.src/M000024.html +5 -5
  79. data/doc/rdoc/classes/Mongrel/HttpHandlerPlugin.src/M000025.html +3 -3
  80. data/doc/rdoc/classes/Mongrel/HttpRequest.src/M000138.html +42 -42
  81. data/doc/rdoc/classes/Mongrel/HttpRequest.src/M000139.html +6 -6
  82. data/doc/rdoc/classes/Mongrel/HttpRequest.src/M000140.html +6 -6
  83. data/doc/rdoc/classes/Mongrel/HttpRequest.src/M000141.html +18 -18
  84. data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000081.html +11 -11
  85. data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000082.html +6 -6
  86. data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000083.html +11 -11
  87. data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000084.html +8 -8
  88. data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000085.html +8 -8
  89. data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000086.html +8 -8
  90. data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000087.html +17 -17
  91. data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000088.html +7 -7
  92. data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000089.html +6 -6
  93. data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000090.html +6 -6
  94. data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000091.html +6 -6
  95. data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000092.html +4 -4
  96. data/doc/rdoc/classes/Mongrel/HttpServer.src/M000064.html +11 -11
  97. data/doc/rdoc/classes/Mongrel/HttpServer.src/M000065.html +71 -71
  98. data/doc/rdoc/classes/Mongrel/HttpServer.src/M000066.html +17 -17
  99. data/doc/rdoc/classes/Mongrel/HttpServer.src/M000067.html +7 -7
  100. data/doc/rdoc/classes/Mongrel/HttpServer.src/M000068.html +36 -37
  101. data/doc/rdoc/classes/Mongrel/HttpServer.src/M000069.html +20 -20
  102. data/doc/rdoc/classes/Mongrel/HttpServer.src/M000070.html +4 -4
  103. data/doc/rdoc/classes/Mongrel/HttpServer.src/M000071.html +8 -8
  104. data/doc/rdoc/classes/Mongrel/Rails/RailsConfigurator.src/M000042.html +25 -25
  105. data/doc/rdoc/classes/Mongrel/Rails/RailsConfigurator.src/M000043.html +11 -11
  106. data/doc/rdoc/classes/Mongrel/Rails/RailsConfigurator.src/M000044.html +12 -12
  107. data/doc/rdoc/classes/Mongrel/Rails/RailsHandler.src/M000045.html +8 -8
  108. data/doc/rdoc/classes/Mongrel/Rails/RailsHandler.src/M000046.html +36 -36
  109. data/doc/rdoc/classes/Mongrel/Rails/RailsHandler.src/M000047.html +9 -9
  110. data/doc/rdoc/classes/Mongrel/RedirectHandler.src/M000136.html +8 -8
  111. data/doc/rdoc/classes/Mongrel/RedirectHandler.src/M000137.html +13 -13
  112. data/doc/rdoc/classes/Mongrel/StatisticsFilter.src/M000133.html +10 -10
  113. data/doc/rdoc/classes/Mongrel/StatisticsFilter.src/M000134.html +10 -10
  114. data/doc/rdoc/classes/Mongrel/StatisticsFilter.src/M000135.html +4 -4
  115. data/doc/rdoc/classes/Mongrel/StatusHandler.src/M000074.html +4 -4
  116. data/doc/rdoc/classes/Mongrel/StatusHandler.src/M000075.html +10 -10
  117. data/doc/rdoc/classes/Mongrel/StatusHandler.src/M000076.html +28 -28
  118. data/doc/rdoc/classes/Mongrel/StatusHandler.src/M000077.html +6 -6
  119. data/doc/rdoc/classes/Mongrel/URIClassifier.src/M000093.html +4 -4
  120. data/doc/rdoc/classes/Mongrel/URIClassifier.src/M000094.html +4 -4
  121. data/doc/rdoc/classes/MongrelDbg.src/M000015.html +5 -5
  122. data/doc/rdoc/classes/MongrelDbg.src/M000016.html +6 -6
  123. data/doc/rdoc/classes/MongrelDbg.src/M000017.html +8 -8
  124. data/doc/rdoc/classes/MongrelDbg.src/M000018.html +7 -7
  125. data/doc/rdoc/classes/MongrelDbg.src/M000019.html +4 -4
  126. data/doc/rdoc/classes/ObjectTracker.src/M000013.html +13 -13
  127. data/doc/rdoc/classes/ObjectTracker.src/M000014.html +30 -30
  128. data/doc/rdoc/classes/RequestLog/Access.src/M000142.html +5 -5
  129. data/doc/rdoc/classes/RequestLog/Files.src/M000143.html +5 -5
  130. data/doc/rdoc/classes/RequestLog/Objects.src/M000145.html +5 -5
  131. data/doc/rdoc/classes/RequestLog/Params.src/M000146.html +5 -5
  132. data/doc/rdoc/classes/RequestLog/Threads.src/M000144.html +20 -20
  133. data/doc/rdoc/classes/Stats.src/M000005.html +5 -5
  134. data/doc/rdoc/classes/Stats.src/M000006.html +9 -9
  135. data/doc/rdoc/classes/Stats.src/M000007.html +12 -12
  136. data/doc/rdoc/classes/Stats.src/M000008.html +4 -4
  137. data/doc/rdoc/classes/Stats.src/M000009.html +4 -4
  138. data/doc/rdoc/classes/Stats.src/M000010.html +4 -4
  139. data/doc/rdoc/classes/Stats.src/M000011.html +9 -9
  140. data/doc/rdoc/classes/Stats.src/M000012.html +6 -6
  141. data/doc/rdoc/classes/TCPServer.src/M000003.html +5 -5
  142. data/doc/rdoc/created.rid +1 -1
  143. data/doc/rdoc/files/COPYING.html +51 -639
  144. data/doc/rdoc/files/LICENSE.html +51 -639
  145. data/doc/rdoc/files/ext/http11/http11_c.html +1 -1
  146. data/doc/rdoc/files/lib/mongrel/camping_rb.html +6 -21
  147. data/doc/rdoc/files/lib/mongrel/cgi_rb.html +6 -21
  148. data/doc/rdoc/files/lib/mongrel/command_rb.html +6 -21
  149. data/doc/rdoc/files/lib/mongrel/debug_rb.html +6 -21
  150. data/doc/rdoc/files/lib/mongrel/handlers_rb.html +13 -1
  151. data/doc/rdoc/files/lib/mongrel/init_rb.html +6 -21
  152. data/doc/rdoc/files/lib/mongrel/rails_rb.html +6 -21
  153. data/doc/rdoc/files/lib/mongrel/stats_rb.html +6 -21
  154. data/doc/rdoc/files/lib/mongrel/tcphack_rb.html +6 -21
  155. data/doc/rdoc/files/lib/mongrel_rb.html +6 -21
  156. data/ext/http11/http11.c +4 -19
  157. data/ext/http11/http11_parser.c +48 -63
  158. data/ext/http11/http11_parser.h +3 -17
  159. data/lib/http11.so +0 -0
  160. data/lib/mongrel.rb +10 -23
  161. data/lib/mongrel/camping.rb +4 -16
  162. data/lib/mongrel/cgi.rb +4 -16
  163. data/lib/mongrel/command.rb +4 -16
  164. data/lib/mongrel/debug.rb +4 -16
  165. data/lib/mongrel/handlers.rb +6 -17
  166. data/lib/mongrel/init.rb +4 -16
  167. data/lib/mongrel/rails.rb +4 -16
  168. data/lib/mongrel/stats.rb +4 -16
  169. data/lib/mongrel/tcphack.rb +4 -16
  170. data/test/test_command.rb +4 -16
  171. data/test/test_conditional.rb +4 -16
  172. data/test/test_configurator.rb +4 -16
  173. data/test/test_debug.rb +4 -16
  174. data/test/test_handlers.rb +4 -16
  175. data/test/test_http11.rb +4 -16
  176. data/test/test_redirect_handler.rb +6 -0
  177. data/test/test_request_progress.rb +58 -0
  178. data/test/test_response.rb +4 -16
  179. data/test/test_stats.rb +4 -16
  180. data/test/test_uriclassifier.rb +4 -16
  181. data/test/test_ws.rb +4 -16
  182. data/test/testhelp.rb +6 -0
  183. metadata +5 -2
data/Rakefile CHANGED
@@ -53,7 +53,7 @@ task :site => [:site_webgen, :site_rdoc, :site_coverage, :site_projects_rdoc]
53
53
  setup_extension("http11", "http11")
54
54
 
55
55
  name="mongrel"
56
- version="0.3.13.2"
56
+ version="0.3.13.3"
57
57
 
58
58
  setup_gem(name, version) do |spec|
59
59
  spec.summary = "A small fast HTTP library and server that runs Rails, Camping, and Nitro apps."
@@ -1,3 +1,8 @@
1
+ # Copyright (c) 2005 Zed A. Shaw
2
+ # You can redistribute it and/or modify it under the same terms as Ruby.
3
+ #
4
+ # Additional work donated by contributors. See http://mongrel.rubyforge.org/attributions.html
5
+ # for more information.
1
6
 
2
7
  require 'rubygems'
3
8
  require 'yaml'
@@ -98,6 +103,9 @@ class Start < GemPlugin::Plugin "/commands"
98
103
  if defaults[:debug]
99
104
  log "Installing debugging prefixed filters. Look in log/mongrel_debug for the files."
100
105
  debug "/"
106
+ elsif not defaults[:daemon]
107
+ # they don't have debug on and aren't in daemon so at least log accesses
108
+ debug "/", what = [:files]
101
109
  end
102
110
 
103
111
  log "Starting Rails with #{defaults[:environment]} environment ..."
@@ -10,10 +10,10 @@
10
10
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre> <span class="ruby-comment cmt"># File lib/mongrel/debug.rb, line 116</span>
14
- 116: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">open</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">arg</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">blk</span>)
15
- 117: <span class="ruby-identifier">$open_files</span>[<span class="ruby-keyword kw">self</span>] = <span class="ruby-identifier">args</span>.<span class="ruby-identifier">inspect</span>
16
- 118: <span class="ruby-identifier">orig_open</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">arg</span>,<span class="ruby-operator">&amp;</span><span class="ruby-identifier">blk</span>)
17
- 119: <span class="ruby-keyword kw">end</span></pre>
13
+ <pre> <span class="ruby-comment cmt"># File lib/mongrel/debug.rb, line 104</span>
14
+ 104: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">open</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">arg</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">blk</span>)
15
+ 105: <span class="ruby-identifier">$open_files</span>[<span class="ruby-keyword kw">self</span>] = <span class="ruby-identifier">args</span>.<span class="ruby-identifier">inspect</span>
16
+ 106: <span class="ruby-identifier">orig_open</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">arg</span>,<span class="ruby-operator">&amp;</span><span class="ruby-identifier">blk</span>)
17
+ 107: <span class="ruby-keyword kw">end</span></pre>
18
18
  </body>
19
19
  </html>
@@ -10,10 +10,10 @@
10
10
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre> <span class="ruby-comment cmt"># File lib/mongrel/debug.rb, line 121</span>
14
- 121: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">close</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">arg</span>,<span class="ruby-operator">&amp;</span><span class="ruby-identifier">blk</span>)
15
- 122: <span class="ruby-identifier">$open_files</span>.<span class="ruby-identifier">delete</span> <span class="ruby-keyword kw">self</span>
16
- 123: <span class="ruby-identifier">orig_close</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">arg</span>,<span class="ruby-operator">&amp;</span><span class="ruby-identifier">blk</span>)
17
- 124: <span class="ruby-keyword kw">end</span></pre>
13
+ <pre> <span class="ruby-comment cmt"># File lib/mongrel/debug.rb, line 109</span>
14
+ 109: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">close</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">arg</span>,<span class="ruby-operator">&amp;</span><span class="ruby-identifier">blk</span>)
15
+ 110: <span class="ruby-identifier">$open_files</span>.<span class="ruby-identifier">delete</span> <span class="ruby-keyword kw">self</span>
16
+ 111: <span class="ruby-identifier">orig_close</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">arg</span>,<span class="ruby-operator">&amp;</span><span class="ruby-identifier">blk</span>)
17
+ 112: <span class="ruby-keyword kw">end</span></pre>
18
18
  </body>
19
19
  </html>
@@ -10,10 +10,10 @@
10
10
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre> <span class="ruby-comment cmt"># File lib/mongrel/debug.rb, line 131</span>
14
- 131: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">open</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">arg</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">blk</span>)
15
- 132: <span class="ruby-identifier">$open_files</span>[<span class="ruby-keyword kw">self</span>] = <span class="ruby-identifier">arg</span>[<span class="ruby-value">0</span>]
16
- 133: <span class="ruby-identifier">orig_open</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">arg</span>,<span class="ruby-operator">&amp;</span><span class="ruby-identifier">blk</span>)
17
- 134: <span class="ruby-keyword kw">end</span></pre>
13
+ <pre> <span class="ruby-comment cmt"># File lib/mongrel/debug.rb, line 119</span>
14
+ 119: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">open</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">arg</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">blk</span>)
15
+ 120: <span class="ruby-identifier">$open_files</span>[<span class="ruby-keyword kw">self</span>] = <span class="ruby-identifier">arg</span>[<span class="ruby-value">0</span>]
16
+ 121: <span class="ruby-identifier">orig_open</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">arg</span>,<span class="ruby-operator">&amp;</span><span class="ruby-identifier">blk</span>)
17
+ 122: <span class="ruby-keyword kw">end</span></pre>
18
18
  </body>
19
19
  </html>
@@ -10,14 +10,14 @@
10
10
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre> <span class="ruby-comment cmt"># File lib/mongrel/debug.rb, line 136</span>
14
- 136: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">log_open_files</span>
15
- 137: <span class="ruby-identifier">open_counts</span> = {}
16
- 138: <span class="ruby-identifier">$open_files</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">f</span>,<span class="ruby-identifier">args</span><span class="ruby-operator">|</span>
17
- 139: <span class="ruby-identifier">open_counts</span>[<span class="ruby-identifier">args</span>] <span class="ruby-operator">||=</span> <span class="ruby-value">0</span>
18
- 140: <span class="ruby-identifier">open_counts</span>[<span class="ruby-identifier">args</span>] <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
19
- 141: <span class="ruby-keyword kw">end</span>
20
- 142: <span class="ruby-constant">MongrelDbg</span><span class="ruby-operator">::</span><span class="ruby-identifier">trace</span>(<span class="ruby-identifier">:files</span>, <span class="ruby-identifier">open_counts</span>.<span class="ruby-identifier">to_yaml</span>)
21
- 143: <span class="ruby-keyword kw">end</span></pre>
13
+ <pre> <span class="ruby-comment cmt"># File lib/mongrel/debug.rb, line 124</span>
14
+ 124: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">log_open_files</span>
15
+ 125: <span class="ruby-identifier">open_counts</span> = {}
16
+ 126: <span class="ruby-identifier">$open_files</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">f</span>,<span class="ruby-identifier">args</span><span class="ruby-operator">|</span>
17
+ 127: <span class="ruby-identifier">open_counts</span>[<span class="ruby-identifier">args</span>] <span class="ruby-operator">||=</span> <span class="ruby-value">0</span>
18
+ 128: <span class="ruby-identifier">open_counts</span>[<span class="ruby-identifier">args</span>] <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
19
+ 129: <span class="ruby-keyword kw">end</span>
20
+ 130: <span class="ruby-constant">MongrelDbg</span><span class="ruby-operator">::</span><span class="ruby-identifier">trace</span>(<span class="ruby-identifier">:files</span>, <span class="ruby-identifier">open_counts</span>.<span class="ruby-identifier">to_yaml</span>)
21
+ 131: <span class="ruby-keyword kw">end</span></pre>
22
22
  </body>
23
23
  </html>
@@ -98,28 +98,10 @@
98
98
 
99
99
  <div id="description">
100
100
  <p>
101
- <a href="Mongrel.html">Mongrel</a> Web Server - A Mostly Ruby HTTP server
102
- and Library
103
- </p>
104
- <p>
105
- Copyright (C) 2005 Zed A. Shaw zedshaw AT zedshaw dot com
106
- </p>
107
- <p>
108
- This library is free software; you can redistribute it and/or modify it
109
- under the terms of the GNU Lesser General Public License as published by
110
- the Free Software Foundation; either version 2.1 of the License, or (at
111
- your option) any later version.
112
- </p>
113
- <p>
114
- This library is distributed in the hope that it will be useful, but WITHOUT
115
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
116
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
117
- for more details.
118
- </p>
119
- <p>
120
- You should have received a copy of the GNU Lesser General Public License
121
- along with this library; if not, write to the Free Software Foundation,
122
- Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
101
+ <a href="Mongrel.html">Mongrel</a> module containing all of the classes
102
+ (include C extensions) for running a <a href="Mongrel.html">Mongrel</a> web
103
+ server. It contains a minimalist HTTP server with just enough functionality
104
+ to service web application requests fast as possible.
123
105
  </p>
124
106
 
125
107
  </div>
@@ -10,15 +10,15 @@
10
10
  <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre> <span class="ruby-comment cmt"># File lib/mongrel/cgi.rb, line 52</span>
14
- 52: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">request</span>, <span class="ruby-identifier">response</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
15
- 53: <span class="ruby-ivar">@request</span> = <span class="ruby-identifier">request</span>
16
- 54: <span class="ruby-ivar">@response</span> = <span class="ruby-identifier">response</span>
17
- 55: <span class="ruby-ivar">@args</span> = <span class="ruby-operator">*</span><span class="ruby-identifier">args</span>
18
- 56: <span class="ruby-ivar">@input</span> = <span class="ruby-identifier">request</span>.<span class="ruby-identifier">body</span>
19
- 57: <span class="ruby-ivar">@head</span> = {}
20
- 58: <span class="ruby-ivar">@out_called</span> = <span class="ruby-keyword kw">false</span>
21
- 59: <span class="ruby-keyword kw">super</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
22
- 60: <span class="ruby-keyword kw">end</span></pre>
13
+ <pre> <span class="ruby-comment cmt"># File lib/mongrel/cgi.rb, line 40</span>
14
+ 40: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">request</span>, <span class="ruby-identifier">response</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
15
+ 41: <span class="ruby-ivar">@request</span> = <span class="ruby-identifier">request</span>
16
+ 42: <span class="ruby-ivar">@response</span> = <span class="ruby-identifier">response</span>
17
+ 43: <span class="ruby-ivar">@args</span> = <span class="ruby-operator">*</span><span class="ruby-identifier">args</span>
18
+ 44: <span class="ruby-ivar">@input</span> = <span class="ruby-identifier">request</span>.<span class="ruby-identifier">body</span>
19
+ 45: <span class="ruby-ivar">@head</span> = {}
20
+ 46: <span class="ruby-ivar">@out_called</span> = <span class="ruby-keyword kw">false</span>
21
+ 47: <span class="ruby-keyword kw">super</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
22
+ 48: <span class="ruby-keyword kw">end</span></pre>
23
23
  </body>
24
24
  </html>
@@ -10,38 +10,38 @@
10
10
  <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre> <span class="ruby-comment cmt"># File lib/mongrel/cgi.rb, line 69</span>
14
- 69: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">header</span>(<span class="ruby-identifier">options</span> = <span class="ruby-value str">&quot;text/html&quot;</span>)
15
- 70: <span class="ruby-comment cmt"># if they pass in a string then just write the Content-Type</span>
16
- 71: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>.<span class="ruby-identifier">class</span> <span class="ruby-operator">==</span> <span class="ruby-constant">String</span>
17
- 72: <span class="ruby-ivar">@head</span>[<span class="ruby-value str">'Content-Type'</span>] = <span class="ruby-identifier">options</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@head</span>[<span class="ruby-value str">'Content-Type'</span>]
18
- 73: <span class="ruby-keyword kw">else</span>
19
- 74: <span class="ruby-comment cmt"># convert the given options into what Mongrel wants</span>
20
- 75: <span class="ruby-ivar">@head</span>[<span class="ruby-value str">'Content-Type'</span>] = <span class="ruby-identifier">options</span>[<span class="ruby-value str">'type'</span>] <span class="ruby-operator">||</span> <span class="ruby-value str">&quot;text/html&quot;</span>
21
- 76: <span class="ruby-ivar">@head</span>[<span class="ruby-value str">'Content-Type'</span>] <span class="ruby-operator">+=</span> <span class="ruby-value str">&quot;; charset=&quot;</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">options</span>[<span class="ruby-value str">'charset'</span>] <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>.<span class="ruby-identifier">has_key?</span> <span class="ruby-value str">&quot;charset&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value str">'charset'</span>]
22
- 77:
23
- 78: <span class="ruby-comment cmt"># setup date only if they use nph</span>
24
- 79: <span class="ruby-ivar">@head</span>[<span class="ruby-value str">'Date'</span>] = <span class="ruby-constant">CGI</span><span class="ruby-operator">::</span><span class="ruby-identifier">rfc1123_date</span>(<span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value str">'nph'</span>]
25
- 80:
26
- 81: <span class="ruby-comment cmt"># setup the server to use the default or what they set</span>
27
- 82: <span class="ruby-ivar">@head</span>[<span class="ruby-value str">'Server'</span>] = <span class="ruby-identifier">options</span>[<span class="ruby-value str">'server'</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">env_table</span>[<span class="ruby-value str">'SERVER_SOFTWARE'</span>]
28
- 83:
29
- 84: <span class="ruby-comment cmt"># remaining possible options they can give</span>
30
- 85: <span class="ruby-ivar">@head</span>[<span class="ruby-value str">'Status'</span>] = <span class="ruby-identifier">options</span>[<span class="ruby-value str">'status'</span>] <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value str">'status'</span>]
31
- 86: <span class="ruby-ivar">@head</span>[<span class="ruby-value str">'Content-Language'</span>] = <span class="ruby-identifier">options</span>[<span class="ruby-value str">'language'</span>] <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value str">'language'</span>]
32
- 87: <span class="ruby-ivar">@head</span>[<span class="ruby-value str">'Expires'</span>] = <span class="ruby-identifier">options</span>[<span class="ruby-value str">'expires'</span>] <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value str">'expires'</span>]
33
- 88:
34
- 89: <span class="ruby-comment cmt"># drop the keys we don't want anymore</span>
35
- 90: <span class="ruby-constant">REMOVED_KEYS</span>.<span class="ruby-identifier">each</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">k</span><span class="ruby-operator">|</span> <span class="ruby-identifier">options</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">k</span>) }
36
- 91:
37
- 92: <span class="ruby-comment cmt"># finally just convert the rest raw (which puts 'cookie' directly)</span>
38
- 93: <span class="ruby-comment cmt"># 'cookie' is translated later as we write the header out</span>
39
- 94: <span class="ruby-identifier">options</span>.<span class="ruby-identifier">each</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@head</span>[<span class="ruby-identifier">k</span>] = <span class="ruby-identifier">v</span>}
40
- 95: <span class="ruby-keyword kw">end</span>
41
- 96:
42
- 97: <span class="ruby-comment cmt"># doing this fakes out the cgi library to think the headers are empty</span>
43
- 98: <span class="ruby-comment cmt"># we then do the real headers in the out function call later</span>
44
- 99: <span class="ruby-value str">&quot;&quot;</span>
45
- 100: <span class="ruby-keyword kw">end</span></pre>
13
+ <pre> <span class="ruby-comment cmt"># File lib/mongrel/cgi.rb, line 57</span>
14
+ 57: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">header</span>(<span class="ruby-identifier">options</span> = <span class="ruby-value str">&quot;text/html&quot;</span>)
15
+ 58: <span class="ruby-comment cmt"># if they pass in a string then just write the Content-Type</span>
16
+ 59: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>.<span class="ruby-identifier">class</span> <span class="ruby-operator">==</span> <span class="ruby-constant">String</span>
17
+ 60: <span class="ruby-ivar">@head</span>[<span class="ruby-value str">'Content-Type'</span>] = <span class="ruby-identifier">options</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@head</span>[<span class="ruby-value str">'Content-Type'</span>]
18
+ 61: <span class="ruby-keyword kw">else</span>
19
+ 62: <span class="ruby-comment cmt"># convert the given options into what Mongrel wants</span>
20
+ 63: <span class="ruby-ivar">@head</span>[<span class="ruby-value str">'Content-Type'</span>] = <span class="ruby-identifier">options</span>[<span class="ruby-value str">'type'</span>] <span class="ruby-operator">||</span> <span class="ruby-value str">&quot;text/html&quot;</span>
21
+ 64: <span class="ruby-ivar">@head</span>[<span class="ruby-value str">'Content-Type'</span>] <span class="ruby-operator">+=</span> <span class="ruby-value str">&quot;; charset=&quot;</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">options</span>[<span class="ruby-value str">'charset'</span>] <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>.<span class="ruby-identifier">has_key?</span> <span class="ruby-value str">&quot;charset&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value str">'charset'</span>]
22
+ 65:
23
+ 66: <span class="ruby-comment cmt"># setup date only if they use nph</span>
24
+ 67: <span class="ruby-ivar">@head</span>[<span class="ruby-value str">'Date'</span>] = <span class="ruby-constant">CGI</span><span class="ruby-operator">::</span><span class="ruby-identifier">rfc1123_date</span>(<span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value str">'nph'</span>]
25
+ 68:
26
+ 69: <span class="ruby-comment cmt"># setup the server to use the default or what they set</span>
27
+ 70: <span class="ruby-ivar">@head</span>[<span class="ruby-value str">'Server'</span>] = <span class="ruby-identifier">options</span>[<span class="ruby-value str">'server'</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">env_table</span>[<span class="ruby-value str">'SERVER_SOFTWARE'</span>]
28
+ 71:
29
+ 72: <span class="ruby-comment cmt"># remaining possible options they can give</span>
30
+ 73: <span class="ruby-ivar">@head</span>[<span class="ruby-value str">'Status'</span>] = <span class="ruby-identifier">options</span>[<span class="ruby-value str">'status'</span>] <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value str">'status'</span>]
31
+ 74: <span class="ruby-ivar">@head</span>[<span class="ruby-value str">'Content-Language'</span>] = <span class="ruby-identifier">options</span>[<span class="ruby-value str">'language'</span>] <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value str">'language'</span>]
32
+ 75: <span class="ruby-ivar">@head</span>[<span class="ruby-value str">'Expires'</span>] = <span class="ruby-identifier">options</span>[<span class="ruby-value str">'expires'</span>] <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value str">'expires'</span>]
33
+ 76:
34
+ 77: <span class="ruby-comment cmt"># drop the keys we don't want anymore</span>
35
+ 78: <span class="ruby-constant">REMOVED_KEYS</span>.<span class="ruby-identifier">each</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">k</span><span class="ruby-operator">|</span> <span class="ruby-identifier">options</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">k</span>) }
36
+ 79:
37
+ 80: <span class="ruby-comment cmt"># finally just convert the rest raw (which puts 'cookie' directly)</span>
38
+ 81: <span class="ruby-comment cmt"># 'cookie' is translated later as we write the header out</span>
39
+ 82: <span class="ruby-identifier">options</span>.<span class="ruby-identifier">each</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@head</span>[<span class="ruby-identifier">k</span>] = <span class="ruby-identifier">v</span>}
40
+ 83: <span class="ruby-keyword kw">end</span>
41
+ 84:
42
+ 85: <span class="ruby-comment cmt"># doing this fakes out the cgi library to think the headers are empty</span>
43
+ 86: <span class="ruby-comment cmt"># we then do the real headers in the out function call later</span>
44
+ 87: <span class="ruby-value str">&quot;&quot;</span>
45
+ 88: <span class="ruby-keyword kw">end</span></pre>
46
46
  </body>
47
47
  </html>
@@ -10,25 +10,25 @@
10
10
  <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre> <span class="ruby-comment cmt"># File lib/mongrel/cgi.rb, line 107</span>
14
- 107: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">send_cookies</span>(<span class="ruby-identifier">to</span>)
15
- 108: <span class="ruby-comment cmt"># convert the cookies based on the myriad of possible ways to set a cookie</span>
16
- 109: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@head</span>[<span class="ruby-value str">'cookie'</span>]
17
- 110: <span class="ruby-identifier">cookie</span> = <span class="ruby-ivar">@head</span>[<span class="ruby-value str">'cookie'</span>]
18
- 111: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">cookie</span>
19
- 112: <span class="ruby-keyword kw">when</span> <span class="ruby-constant">Array</span>
20
- 113: <span class="ruby-identifier">cookie</span>.<span class="ruby-identifier">each</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">c</span><span class="ruby-operator">|</span> <span class="ruby-identifier">to</span>[<span class="ruby-value str">'Set-Cookie'</span>] = <span class="ruby-identifier">c</span>.<span class="ruby-identifier">to_s</span> }
21
- 114: <span class="ruby-keyword kw">when</span> <span class="ruby-constant">Hash</span>
22
- 115: <span class="ruby-identifier">cookie</span>.<span class="ruby-identifier">each_value</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">c</span><span class="ruby-operator">|</span> <span class="ruby-identifier">to</span>[<span class="ruby-value str">'Set-Cookie'</span>] = <span class="ruby-identifier">c</span>.<span class="ruby-identifier">to_s</span>}
23
- 116: <span class="ruby-keyword kw">else</span>
24
- 117: <span class="ruby-identifier">to</span>[<span class="ruby-value str">'Set-Cookie'</span>] = <span class="ruby-identifier">options</span>[<span class="ruby-value str">'cookie'</span>].<span class="ruby-identifier">to_s</span>
25
- 118: <span class="ruby-keyword kw">end</span>
26
- 119:
27
- 120: <span class="ruby-ivar">@head</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-value str">'cookie'</span>)
28
- 121:
29
- 122: <span class="ruby-comment cmt"># @output_cookies seems to never be used, but we'll process it just in case</span>
30
- 123: <span class="ruby-ivar">@output_cookies</span>.<span class="ruby-identifier">each</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">c</span><span class="ruby-operator">|</span> <span class="ruby-identifier">to</span>[<span class="ruby-value str">'Set-Cookie'</span>] = <span class="ruby-identifier">c</span>.<span class="ruby-identifier">to_s</span> } <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@output_cookies</span>
31
- 124: <span class="ruby-keyword kw">end</span>
32
- 125: <span class="ruby-keyword kw">end</span></pre>
13
+ <pre> <span class="ruby-comment cmt"># File lib/mongrel/cgi.rb, line 95</span>
14
+ 95: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">send_cookies</span>(<span class="ruby-identifier">to</span>)
15
+ 96: <span class="ruby-comment cmt"># convert the cookies based on the myriad of possible ways to set a cookie</span>
16
+ 97: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@head</span>[<span class="ruby-value str">'cookie'</span>]
17
+ 98: <span class="ruby-identifier">cookie</span> = <span class="ruby-ivar">@head</span>[<span class="ruby-value str">'cookie'</span>]
18
+ 99: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">cookie</span>
19
+ 100: <span class="ruby-keyword kw">when</span> <span class="ruby-constant">Array</span>
20
+ 101: <span class="ruby-identifier">cookie</span>.<span class="ruby-identifier">each</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">c</span><span class="ruby-operator">|</span> <span class="ruby-identifier">to</span>[<span class="ruby-value str">'Set-Cookie'</span>] = <span class="ruby-identifier">c</span>.<span class="ruby-identifier">to_s</span> }
21
+ 102: <span class="ruby-keyword kw">when</span> <span class="ruby-constant">Hash</span>
22
+ 103: <span class="ruby-identifier">cookie</span>.<span class="ruby-identifier">each_value</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">c</span><span class="ruby-operator">|</span> <span class="ruby-identifier">to</span>[<span class="ruby-value str">'Set-Cookie'</span>] = <span class="ruby-identifier">c</span>.<span class="ruby-identifier">to_s</span>}
23
+ 104: <span class="ruby-keyword kw">else</span>
24
+ 105: <span class="ruby-identifier">to</span>[<span class="ruby-value str">'Set-Cookie'</span>] = <span class="ruby-identifier">options</span>[<span class="ruby-value str">'cookie'</span>].<span class="ruby-identifier">to_s</span>
25
+ 106: <span class="ruby-keyword kw">end</span>
26
+ 107:
27
+ 108: <span class="ruby-ivar">@head</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-value str">'cookie'</span>)
28
+ 109:
29
+ 110: <span class="ruby-comment cmt"># @output_cookies seems to never be used, but we'll process it just in case</span>
30
+ 111: <span class="ruby-ivar">@output_cookies</span>.<span class="ruby-identifier">each</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">c</span><span class="ruby-operator">|</span> <span class="ruby-identifier">to</span>[<span class="ruby-value str">'Set-Cookie'</span>] = <span class="ruby-identifier">c</span>.<span class="ruby-identifier">to_s</span> } <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@output_cookies</span>
31
+ 112: <span class="ruby-keyword kw">end</span>
32
+ 113: <span class="ruby-keyword kw">end</span></pre>
33
33
  </body>
34
34
  </html>
@@ -10,18 +10,18 @@
10
10
  <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre> <span class="ruby-comment cmt"># File lib/mongrel/cgi.rb, line 131</span>
14
- 131: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">out</span>(<span class="ruby-identifier">options</span> = <span class="ruby-value str">&quot;text/html&quot;</span>)
15
- 132: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@out_called</span> <span class="ruby-comment cmt"># don't do this more than once</span>
16
- 133:
17
- 134: <span class="ruby-identifier">header</span>(<span class="ruby-identifier">options</span>)
18
- 135:
19
- 136: <span class="ruby-ivar">@response</span>.<span class="ruby-identifier">start</span> <span class="ruby-identifier">status</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">head</span>, <span class="ruby-identifier">out</span><span class="ruby-operator">|</span>
20
- 137: <span class="ruby-identifier">send_cookies</span>(<span class="ruby-identifier">head</span>)
21
- 138:
22
- 139: <span class="ruby-ivar">@head</span>.<span class="ruby-identifier">each</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span><span class="ruby-operator">|</span> <span class="ruby-identifier">head</span>[<span class="ruby-identifier">k</span>] = <span class="ruby-identifier">v</span>}
23
- 140: <span class="ruby-identifier">out</span>.<span class="ruby-identifier">write</span>(<span class="ruby-keyword kw">yield</span> <span class="ruby-operator">||</span> <span class="ruby-value str">&quot;&quot;</span>)
24
- 141: <span class="ruby-keyword kw">end</span>
25
- 142: <span class="ruby-keyword kw">end</span></pre>
13
+ <pre> <span class="ruby-comment cmt"># File lib/mongrel/cgi.rb, line 119</span>
14
+ 119: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">out</span>(<span class="ruby-identifier">options</span> = <span class="ruby-value str">&quot;text/html&quot;</span>)
15
+ 120: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@out_called</span> <span class="ruby-comment cmt"># don't do this more than once</span>
16
+ 121:
17
+ 122: <span class="ruby-identifier">header</span>(<span class="ruby-identifier">options</span>)
18
+ 123:
19
+ 124: <span class="ruby-ivar">@response</span>.<span class="ruby-identifier">start</span> <span class="ruby-identifier">status</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">head</span>, <span class="ruby-identifier">out</span><span class="ruby-operator">|</span>
20
+ 125: <span class="ruby-identifier">send_cookies</span>(<span class="ruby-identifier">head</span>)
21
+ 126:
22
+ 127: <span class="ruby-ivar">@head</span>.<span class="ruby-identifier">each</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span><span class="ruby-operator">|</span> <span class="ruby-identifier">head</span>[<span class="ruby-identifier">k</span>] = <span class="ruby-identifier">v</span>}
23
+ 128: <span class="ruby-identifier">out</span>.<span class="ruby-identifier">write</span>(<span class="ruby-keyword kw">yield</span> <span class="ruby-operator">||</span> <span class="ruby-value str">&quot;&quot;</span>)
24
+ 129: <span class="ruby-keyword kw">end</span>
25
+ 130: <span class="ruby-keyword kw">end</span></pre>
26
26
  </body>
27
27
  </html>
@@ -10,16 +10,16 @@
10
10
  <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre> <span class="ruby-comment cmt"># File lib/mongrel/cgi.rb, line 147</span>
14
- 147: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">status</span>
15
- 148: <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">not</span> <span class="ruby-ivar">@status</span>
16
- 149: <span class="ruby-identifier">stat</span> = <span class="ruby-ivar">@head</span>[<span class="ruby-value str">&quot;Status&quot;</span>]
17
- 150: <span class="ruby-identifier">stat</span> = <span class="ruby-identifier">stat</span>.<span class="ruby-identifier">split</span>(<span class="ruby-value str">' '</span>)[<span class="ruby-value">0</span>] <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">stat</span>
18
- 151:
19
- 152: <span class="ruby-ivar">@status</span> = <span class="ruby-identifier">stat</span> <span class="ruby-operator">||</span> <span class="ruby-value str">&quot;200&quot;</span>
20
- 153: <span class="ruby-keyword kw">end</span>
21
- 154:
22
- 155: <span class="ruby-ivar">@status</span>
23
- 156: <span class="ruby-keyword kw">end</span></pre>
13
+ <pre> <span class="ruby-comment cmt"># File lib/mongrel/cgi.rb, line 135</span>
14
+ 135: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">status</span>
15
+ 136: <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">not</span> <span class="ruby-ivar">@status</span>
16
+ 137: <span class="ruby-identifier">stat</span> = <span class="ruby-ivar">@head</span>[<span class="ruby-value str">&quot;Status&quot;</span>]
17
+ 138: <span class="ruby-identifier">stat</span> = <span class="ruby-identifier">stat</span>.<span class="ruby-identifier">split</span>(<span class="ruby-value str">' '</span>)[<span class="ruby-value">0</span>] <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">stat</span>
18
+ 139:
19
+ 140: <span class="ruby-ivar">@status</span> = <span class="ruby-identifier">stat</span> <span class="ruby-operator">||</span> <span class="ruby-value str">&quot;200&quot;</span>
20
+ 141: <span class="ruby-keyword kw">end</span>
21
+ 142:
22
+ 143: <span class="ruby-ivar">@status</span>
23
+ 144: <span class="ruby-keyword kw">end</span></pre>
24
24
  </body>
25
25
  </html>
@@ -10,9 +10,9 @@
10
10
  <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre> <span class="ruby-comment cmt"># File lib/mongrel/cgi.rb, line 159</span>
14
- 159: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">args</span>
15
- 160: <span class="ruby-ivar">@args</span>
16
- 161: <span class="ruby-keyword kw">end</span></pre>
13
+ <pre> <span class="ruby-comment cmt"># File lib/mongrel/cgi.rb, line 147</span>
14
+ 147: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">args</span>
15
+ 148: <span class="ruby-ivar">@args</span>
16
+ 149: <span class="ruby-keyword kw">end</span></pre>
17
17
  </body>
18
18
  </html>
@@ -10,9 +10,9 @@
10
10
  <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre> <span class="ruby-comment cmt"># File lib/mongrel/cgi.rb, line 164</span>
14
- 164: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">env_table</span>
15
- 165: <span class="ruby-ivar">@request</span>.<span class="ruby-identifier">params</span>
16
- 166: <span class="ruby-keyword kw">end</span></pre>
13
+ <pre> <span class="ruby-comment cmt"># File lib/mongrel/cgi.rb, line 152</span>
14
+ 152: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">env_table</span>
15
+ 153: <span class="ruby-ivar">@request</span>.<span class="ruby-identifier">params</span>
16
+ 154: <span class="ruby-keyword kw">end</span></pre>
17
17
  </body>
18
18
  </html>
@@ -10,9 +10,9 @@
10
10
  <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre> <span class="ruby-comment cmt"># File lib/mongrel/cgi.rb, line 169</span>
14
- 169: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">stdinput</span>
15
- 170: <span class="ruby-ivar">@input</span>
16
- 171: <span class="ruby-keyword kw">end</span></pre>
13
+ <pre> <span class="ruby-comment cmt"># File lib/mongrel/cgi.rb, line 157</span>
14
+ 157: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">stdinput</span>
15
+ 158: <span class="ruby-ivar">@input</span>
16
+ 159: <span class="ruby-keyword kw">end</span></pre>
17
17
  </body>
18
18
  </html>
@@ -10,10 +10,10 @@
10
10
  <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre> <span class="ruby-comment cmt"># File lib/mongrel/cgi.rb, line 174</span>
14
- 174: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">stdoutput</span>
15
- 175: <span class="ruby-constant">STDERR</span>.<span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;WARNING: Your program is doing something not expected. Please tell Zed that stdoutput was used and what software you are running. Thanks.&quot;</span>
16
- 176: <span class="ruby-ivar">@response</span>.<span class="ruby-identifier">body</span>
17
- 177: <span class="ruby-keyword kw">end</span></pre>
13
+ <pre> <span class="ruby-comment cmt"># File lib/mongrel/cgi.rb, line 162</span>
14
+ 162: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">stdoutput</span>
15
+ 163: <span class="ruby-constant">STDERR</span>.<span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;WARNING: Your program is doing something not expected. Please tell Zed that stdoutput was used and what software you are running. Thanks.&quot;</span>
16
+ 164: <span class="ruby-ivar">@response</span>.<span class="ruby-identifier">body</span>
17
+ 165: <span class="ruby-keyword kw">end</span></pre>
18
18
  </body>
19
19
  </html>
@@ -10,13 +10,13 @@
10
10
  <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre> <span class="ruby-comment cmt"># File lib/mongrel/camping.rb, line 98</span>
14
- 98: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">Camping</span>.<span class="ruby-identifier">start</span>(<span class="ruby-identifier">server</span>, <span class="ruby-identifier">port</span>, <span class="ruby-identifier">uri</span>, <span class="ruby-identifier">klass</span>)
15
- 99: <span class="ruby-identifier">h</span> = <span class="ruby-constant">Mongrel</span><span class="ruby-operator">::</span><span class="ruby-constant">HttpServer</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">server</span>, <span class="ruby-identifier">port</span>)
16
- 100: <span class="ruby-identifier">h</span>.<span class="ruby-identifier">register</span>(<span class="ruby-identifier">uri</span>, <span class="ruby-constant">CampingHandler</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">klass</span>))
17
- 101: <span class="ruby-identifier">h</span>.<span class="ruby-identifier">register</span>(<span class="ruby-value str">&quot;/favicon.ico&quot;</span>, <span class="ruby-constant">Mongrel</span><span class="ruby-operator">::</span><span class="ruby-constant">Error404Handler</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">&quot;&quot;</span>))
18
- 102: <span class="ruby-identifier">h</span>.<span class="ruby-identifier">run</span>
19
- 103: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">h</span>
20
- 104: <span class="ruby-keyword kw">end</span></pre>
13
+ <pre> <span class="ruby-comment cmt"># File lib/mongrel/camping.rb, line 86</span>
14
+ 86: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">Camping</span>.<span class="ruby-identifier">start</span>(<span class="ruby-identifier">server</span>, <span class="ruby-identifier">port</span>, <span class="ruby-identifier">uri</span>, <span class="ruby-identifier">klass</span>)
15
+ 87: <span class="ruby-identifier">h</span> = <span class="ruby-constant">Mongrel</span><span class="ruby-operator">::</span><span class="ruby-constant">HttpServer</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">server</span>, <span class="ruby-identifier">port</span>)
16
+ 88: <span class="ruby-identifier">h</span>.<span class="ruby-identifier">register</span>(<span class="ruby-identifier">uri</span>, <span class="ruby-constant">CampingHandler</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">klass</span>))
17
+ 89: <span class="ruby-identifier">h</span>.<span class="ruby-identifier">register</span>(<span class="ruby-value str">&quot;/favicon.ico&quot;</span>, <span class="ruby-constant">Mongrel</span><span class="ruby-operator">::</span><span class="ruby-constant">Error404Handler</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">&quot;&quot;</span>))
18
+ 90: <span class="ruby-identifier">h</span>.<span class="ruby-identifier">run</span>
19
+ 91: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">h</span>
20
+ 92: <span class="ruby-keyword kw">end</span></pre>
21
21
  </body>
22
22
  </html>
@@ -10,9 +10,9 @@
10
10
  <link rel="stylesheet" href="../../../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre> <span class="ruby-comment cmt"># File lib/mongrel/camping.rb, line 48</span>
14
- 48: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">klass</span>)
15
- 49: <span class="ruby-ivar">@klass</span> = <span class="ruby-identifier">klass</span>
16
- 50: <span class="ruby-keyword kw">end</span></pre>
13
+ <pre> <span class="ruby-comment cmt"># File lib/mongrel/camping.rb, line 36</span>
14
+ 36: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">klass</span>)
15
+ 37: <span class="ruby-ivar">@klass</span> = <span class="ruby-identifier">klass</span>
16
+ 38: <span class="ruby-keyword kw">end</span></pre>
17
17
  </body>
18
18
  </html>
@@ -10,42 +10,42 @@
10
10
  <link rel="stylesheet" href="../../../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre> <span class="ruby-comment cmt"># File lib/mongrel/camping.rb, line 52</span>
14
- 52: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">process</span>(<span class="ruby-identifier">request</span>, <span class="ruby-identifier">response</span>)
15
- 53: <span class="ruby-identifier">controller</span> = <span class="ruby-ivar">@klass</span>.<span class="ruby-identifier">run</span>(<span class="ruby-identifier">request</span>.<span class="ruby-identifier">body</span>, <span class="ruby-identifier">request</span>.<span class="ruby-identifier">params</span>)
16
- 54: <span class="ruby-identifier">sendfile</span>, <span class="ruby-identifier">clength</span> = <span class="ruby-keyword kw">nil</span>
17
- 55: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">status</span> = <span class="ruby-identifier">controller</span>.<span class="ruby-identifier">status</span>
18
- 56: <span class="ruby-identifier">controller</span>.<span class="ruby-identifier">headers</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">k</span>, <span class="ruby-identifier">v</span><span class="ruby-operator">|</span>
19
- 57: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">k</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/^X-SENDFILE$/i</span>
20
- 58: <span class="ruby-identifier">sendfile</span> = <span class="ruby-identifier">v</span>
21
- 59: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">k</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/^CONTENT-LENGTH$/i</span>
22
- 60: <span class="ruby-identifier">clength</span> = <span class="ruby-identifier">v</span>.<span class="ruby-identifier">to_i</span>
23
- 61: <span class="ruby-keyword kw">else</span>
24
- 62: [<span class="ruby-operator">*</span><span class="ruby-identifier">v</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">vi</span><span class="ruby-operator">|</span>
25
- 63: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">header</span>[<span class="ruby-identifier">k</span>] = <span class="ruby-identifier">vi</span>
26
- 64: <span class="ruby-keyword kw">end</span>
13
+ <pre> <span class="ruby-comment cmt"># File lib/mongrel/camping.rb, line 40</span>
14
+ 40: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">process</span>(<span class="ruby-identifier">request</span>, <span class="ruby-identifier">response</span>)
15
+ 41: <span class="ruby-identifier">controller</span> = <span class="ruby-ivar">@klass</span>.<span class="ruby-identifier">run</span>(<span class="ruby-identifier">request</span>.<span class="ruby-identifier">body</span>, <span class="ruby-identifier">request</span>.<span class="ruby-identifier">params</span>)
16
+ 42: <span class="ruby-identifier">sendfile</span>, <span class="ruby-identifier">clength</span> = <span class="ruby-keyword kw">nil</span>
17
+ 43: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">status</span> = <span class="ruby-identifier">controller</span>.<span class="ruby-identifier">status</span>
18
+ 44: <span class="ruby-identifier">controller</span>.<span class="ruby-identifier">headers</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">k</span>, <span class="ruby-identifier">v</span><span class="ruby-operator">|</span>
19
+ 45: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">k</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/^X-SENDFILE$/i</span>
20
+ 46: <span class="ruby-identifier">sendfile</span> = <span class="ruby-identifier">v</span>
21
+ 47: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">k</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/^CONTENT-LENGTH$/i</span>
22
+ 48: <span class="ruby-identifier">clength</span> = <span class="ruby-identifier">v</span>.<span class="ruby-identifier">to_i</span>
23
+ 49: <span class="ruby-keyword kw">else</span>
24
+ 50: [<span class="ruby-operator">*</span><span class="ruby-identifier">v</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">vi</span><span class="ruby-operator">|</span>
25
+ 51: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">header</span>[<span class="ruby-identifier">k</span>] = <span class="ruby-identifier">vi</span>
26
+ 52: <span class="ruby-keyword kw">end</span>
27
+ 53: <span class="ruby-keyword kw">end</span>
28
+ 54: <span class="ruby-keyword kw">end</span>
29
+ 55:
30
+ 56: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">sendfile</span>
31
+ 57: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">send_status</span>(<span class="ruby-constant">File</span>.<span class="ruby-identifier">size</span>(<span class="ruby-identifier">sendfile</span>))
32
+ 58: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">send_header</span>
33
+ 59: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">send_file</span>(<span class="ruby-identifier">sendfile</span>)
34
+ 60: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">controller</span>.<span class="ruby-identifier">body</span>.<span class="ruby-identifier">respond_to?</span> <span class="ruby-identifier">:read</span>
35
+ 61: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">send_status</span>(<span class="ruby-identifier">clength</span>)
36
+ 62: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">send_header</span>
37
+ 63: <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">chunk</span> = <span class="ruby-identifier">controller</span>.<span class="ruby-identifier">body</span>.<span class="ruby-identifier">read</span>(<span class="ruby-value">16384</span>)
38
+ 64: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">write</span>(<span class="ruby-identifier">chunk</span>)
27
39
  65: <span class="ruby-keyword kw">end</span>
28
- 66: <span class="ruby-keyword kw">end</span>
29
- 67:
30
- 68: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">sendfile</span>
31
- 69: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">send_status</span>(<span class="ruby-constant">File</span>.<span class="ruby-identifier">size</span>(<span class="ruby-identifier">sendfile</span>))
32
- 70: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">send_header</span>
33
- 71: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">send_file</span>(<span class="ruby-identifier">sendfile</span>)
34
- 72: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">controller</span>.<span class="ruby-identifier">body</span>.<span class="ruby-identifier">respond_to?</span> <span class="ruby-identifier">:read</span>
35
- 73: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">send_status</span>(<span class="ruby-identifier">clength</span>)
36
- 74: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">send_header</span>
37
- 75: <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">chunk</span> = <span class="ruby-identifier">controller</span>.<span class="ruby-identifier">body</span>.<span class="ruby-identifier">read</span>(<span class="ruby-value">16384</span>)
38
- 76: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">write</span>(<span class="ruby-identifier">chunk</span>)
39
- 77: <span class="ruby-keyword kw">end</span>
40
- 78: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">controller</span>.<span class="ruby-identifier">body</span>.<span class="ruby-identifier">respond_to?</span> <span class="ruby-identifier">:close</span>
41
- 79: <span class="ruby-identifier">controller</span>.<span class="ruby-identifier">body</span>.<span class="ruby-identifier">close</span>
42
- 80: <span class="ruby-keyword kw">end</span>
43
- 81: <span class="ruby-keyword kw">else</span>
44
- 82: <span class="ruby-identifier">body</span> = <span class="ruby-identifier">controller</span>.<span class="ruby-identifier">body</span>.<span class="ruby-identifier">to_s</span>
45
- 83: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">send_status</span>(<span class="ruby-identifier">body</span>.<span class="ruby-identifier">length</span>)
46
- 84: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">send_header</span>
47
- 85: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">write</span>(<span class="ruby-identifier">body</span>)
48
- 86: <span class="ruby-keyword kw">end</span>
49
- 87: <span class="ruby-keyword kw">end</span></pre>
40
+ 66: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">controller</span>.<span class="ruby-identifier">body</span>.<span class="ruby-identifier">respond_to?</span> <span class="ruby-identifier">:close</span>
41
+ 67: <span class="ruby-identifier">controller</span>.<span class="ruby-identifier">body</span>.<span class="ruby-identifier">close</span>
42
+ 68: <span class="ruby-keyword kw">end</span>
43
+ 69: <span class="ruby-keyword kw">else</span>
44
+ 70: <span class="ruby-identifier">body</span> = <span class="ruby-identifier">controller</span>.<span class="ruby-identifier">body</span>.<span class="ruby-identifier">to_s</span>
45
+ 71: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">send_status</span>(<span class="ruby-identifier">body</span>.<span class="ruby-identifier">length</span>)
46
+ 72: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">send_header</span>
47
+ 73: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">write</span>(<span class="ruby-identifier">body</span>)
48
+ 74: <span class="ruby-keyword kw">end</span>
49
+ 75: <span class="ruby-keyword kw">end</span></pre>
50
50
  </body>
51
51
  </html>