mongrel 0.3.9 → 0.3.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. data/Rakefile +38 -15
  2. data/bin/mongrel_rails +13 -11
  3. data/doc/rdoc/classes/Mongrel.html +6 -1
  4. data/doc/rdoc/classes/Mongrel/CGIWrapper.html +49 -49
  5. data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000057.html +11 -5
  6. data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000058.html +34 -5
  7. data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000059.html +21 -6
  8. data/doc/rdoc/classes/Mongrel/CGIWrapper.src/{M000054.html → M000060.html} +0 -0
  9. data/doc/rdoc/classes/Mongrel/CGIWrapper.src/{M000055.html → M000061.html} +0 -0
  10. data/doc/rdoc/classes/Mongrel/CGIWrapper.src/{M000056.html → M000062.html} +0 -0
  11. data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000063.html +18 -0
  12. data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000064.html +18 -0
  13. data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000065.html +19 -0
  14. data/doc/rdoc/classes/Mongrel/Camping.html +177 -0
  15. data/doc/rdoc/classes/Mongrel/Camping.src/M000019.html +22 -0
  16. data/doc/rdoc/classes/Mongrel/Camping/CampingHandler.html +165 -0
  17. data/doc/rdoc/classes/Mongrel/Camping/CampingHandler.src/M000020.html +18 -0
  18. data/doc/rdoc/classes/Mongrel/Camping/CampingHandler.src/M000021.html +27 -0
  19. data/doc/rdoc/classes/Mongrel/Command/Base.html +50 -50
  20. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000006.html +11 -5
  21. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000007.html +28 -5
  22. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000008.html +5 -9
  23. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000009.html +5 -5
  24. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000010.html +5 -5
  25. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000011.html +9 -5
  26. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000012.html +5 -5
  27. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000013.html +18 -0
  28. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000014.html +18 -0
  29. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000015.html +18 -0
  30. data/doc/rdoc/classes/Mongrel/Command/Registry.html +15 -15
  31. data/doc/rdoc/classes/Mongrel/Command/Registry.src/{M000013.html → M000016.html} +6 -6
  32. data/doc/rdoc/classes/Mongrel/Command/Registry.src/{M000014.html → M000017.html} +11 -11
  33. data/doc/rdoc/classes/Mongrel/Command/Registry.src/{M000015.html → M000018.html} +32 -32
  34. data/doc/rdoc/classes/Mongrel/Const.html +3 -3
  35. data/doc/rdoc/classes/Mongrel/DirHandler.html +31 -31
  36. data/doc/rdoc/classes/Mongrel/DirHandler.src/{M000023.html → M000029.html} +0 -0
  37. data/doc/rdoc/classes/Mongrel/DirHandler.src/{M000024.html → M000030.html} +0 -0
  38. data/doc/rdoc/classes/Mongrel/DirHandler.src/{M000025.html → M000031.html} +0 -0
  39. data/doc/rdoc/classes/Mongrel/DirHandler.src/{M000026.html → M000032.html} +0 -0
  40. data/doc/rdoc/classes/Mongrel/DirHandler.src/{M000027.html → M000033.html} +0 -0
  41. data/doc/rdoc/classes/Mongrel/DirHandler.src/{M000028.html → M000034.html} +0 -0
  42. data/doc/rdoc/classes/Mongrel/Error404Handler.html +10 -10
  43. data/doc/rdoc/classes/Mongrel/Error404Handler.src/{M000060.html → M000066.html} +0 -0
  44. data/doc/rdoc/classes/Mongrel/Error404Handler.src/{M000061.html → M000067.html} +0 -0
  45. data/doc/rdoc/classes/Mongrel/HeaderOut.html +10 -10
  46. data/doc/rdoc/classes/Mongrel/HeaderOut.src/{M000035.html → M000041.html} +4 -4
  47. data/doc/rdoc/classes/Mongrel/HeaderOut.src/{M000036.html → M000042.html} +7 -7
  48. data/doc/rdoc/classes/Mongrel/HttpHandler.html +5 -5
  49. data/doc/rdoc/classes/Mongrel/HttpHandler.src/{M000037.html → M000043.html} +0 -0
  50. data/doc/rdoc/classes/Mongrel/HttpParser.html +35 -35
  51. data/doc/rdoc/classes/Mongrel/HttpParser.src/M000022.html +6 -6
  52. data/doc/rdoc/classes/Mongrel/HttpParser.src/{M000017.html → M000023.html} +0 -0
  53. data/doc/rdoc/classes/Mongrel/HttpParser.src/{M000018.html → M000024.html} +0 -0
  54. data/doc/rdoc/classes/Mongrel/HttpParser.src/{M000019.html → M000025.html} +0 -0
  55. data/doc/rdoc/classes/Mongrel/HttpParser.src/{M000020.html → M000026.html} +0 -0
  56. data/doc/rdoc/classes/Mongrel/HttpParser.src/{M000021.html → M000027.html} +0 -0
  57. data/doc/rdoc/classes/Mongrel/HttpParser.src/{M000016.html → M000028.html} +6 -6
  58. data/doc/rdoc/classes/Mongrel/HttpRequest.html +5 -5
  59. data/doc/rdoc/classes/Mongrel/HttpRequest.src/{M000062.html → M000068.html} +24 -24
  60. data/doc/rdoc/classes/Mongrel/HttpResponse.html +36 -36
  61. data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000044.html +8 -7
  62. data/doc/rdoc/classes/Mongrel/HttpResponse.src/{M000039.html → M000045.html} +6 -6
  63. data/doc/rdoc/classes/Mongrel/HttpResponse.src/{M000040.html → M000046.html} +5 -5
  64. data/doc/rdoc/classes/Mongrel/HttpResponse.src/{M000041.html → M000047.html} +5 -5
  65. data/doc/rdoc/classes/Mongrel/HttpResponse.src/{M000042.html → M000048.html} +6 -6
  66. data/doc/rdoc/classes/Mongrel/HttpResponse.src/{M000043.html → M000049.html} +6 -6
  67. data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000050.html +20 -0
  68. data/doc/rdoc/classes/Mongrel/HttpServer.html +33 -33
  69. data/doc/rdoc/classes/Mongrel/HttpServer.src/{M000029.html → M000035.html} +22 -22
  70. data/doc/rdoc/classes/Mongrel/HttpServer.src/{M000030.html → M000036.html} +43 -43
  71. data/doc/rdoc/classes/Mongrel/HttpServer.src/{M000031.html → M000037.html} +34 -34
  72. data/doc/rdoc/classes/Mongrel/HttpServer.src/{M000032.html → M000038.html} +4 -4
  73. data/doc/rdoc/classes/Mongrel/HttpServer.src/{M000033.html → M000039.html} +4 -4
  74. data/doc/rdoc/classes/Mongrel/HttpServer.src/{M000034.html → M000040.html} +9 -9
  75. data/doc/rdoc/classes/Mongrel/URIClassifier.html +30 -30
  76. data/doc/rdoc/classes/Mongrel/URIClassifier.src/{M000045.html → M000051.html} +4 -4
  77. data/doc/rdoc/classes/Mongrel/URIClassifier.src/{M000046.html → M000052.html} +4 -4
  78. data/doc/rdoc/classes/Mongrel/URIClassifier.src/{M000047.html → M000053.html} +0 -0
  79. data/doc/rdoc/classes/Mongrel/URIClassifier.src/{M000048.html → M000054.html} +0 -0
  80. data/doc/rdoc/classes/Mongrel/URIClassifier.src/{M000049.html → M000055.html} +0 -0
  81. data/doc/rdoc/classes/Mongrel/URIClassifier.src/{M000050.html → M000056.html} +0 -0
  82. data/doc/rdoc/classes/RailsHandler.html +30 -10
  83. data/doc/rdoc/classes/RailsHandler.src/{M000001.html → M000003.html} +8 -8
  84. data/doc/rdoc/classes/RailsHandler.src/{M000002.html → M000004.html} +34 -34
  85. data/doc/rdoc/classes/RailsHandler.src/M000005.html +23 -0
  86. data/doc/rdoc/classes/TCPServer.html +173 -0
  87. data/doc/rdoc/classes/TCPServer.src/M000001.html +19 -0
  88. data/doc/rdoc/created.rid +1 -1
  89. data/doc/rdoc/files/lib/mongrel/camping_rb.html +108 -0
  90. data/doc/rdoc/files/lib/mongrel/command_rb.html +3 -2
  91. data/doc/rdoc/files/lib/mongrel/{plugins_rb.html → init_rb.html} +5 -4
  92. data/doc/rdoc/files/lib/mongrel/rails_rb.html +2 -1
  93. data/doc/rdoc/files/lib/mongrel/tcphack_rb.html +109 -0
  94. data/doc/rdoc/files/lib/mongrel_rb.html +2 -2
  95. data/doc/rdoc/fr_class_index.html +3 -0
  96. data/doc/rdoc/fr_file_index.html +3 -1
  97. data/doc/rdoc/fr_method_index.html +68 -62
  98. data/examples/camping/blog.rb +22 -37
  99. data/examples/camping/tepee.rb +3 -23
  100. data/lib/mongrel.rb +3 -4
  101. data/lib/mongrel/camping.rb +64 -0
  102. data/lib/mongrel/command.rb +3 -2
  103. data/lib/mongrel/{plugins.rb → init.rb} +1 -1
  104. data/lib/mongrel/rails.rb +16 -6
  105. data/lib/mongrel/tcphack.rb +12 -0
  106. data/tools/rakehelp.rb +10 -12
  107. metadata +74 -58
  108. data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000051.html +0 -24
  109. data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000052.html +0 -47
  110. data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000053.html +0 -34
  111. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000003.html +0 -24
  112. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000004.html +0 -41
  113. data/doc/rdoc/classes/Mongrel/Command/Base.src/M000005.html +0 -18
  114. data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000038.html +0 -21
data/Rakefile CHANGED
@@ -17,7 +17,7 @@ task :default => [:compile, :test]
17
17
 
18
18
  desc "Compiles all extensions"
19
19
  task :compile => [:http11]
20
- task :package => [:clean,:compile]
20
+ task :package => [:clean,:compile,:test]
21
21
 
22
22
  task :ragel do
23
23
  sh %{/usr/local/bin/ragel ext/http11/http11_parser.rl | /usr/local/bin/rlcodegen -G2 -o ext/http11/http11_parser.c}
@@ -31,36 +31,59 @@ end
31
31
 
32
32
  setup_extension("http11", "http11")
33
33
 
34
- version="0.3.9"
35
- summary = "A small fast HTTP library and server that runs Rails, Camping, and Nitro apps."
36
- test_file = "test/test_ws.rb"
37
- author="Zed A. Shaw"
38
34
  name="mongrel"
39
- scripts=['mongrel_rails']
35
+ version="0.3.10"
36
+
37
+ setup_gem(name, version) do |spec|
38
+ spec.summary = "A small fast HTTP library and server that runs Rails, Camping, and Nitro apps."
39
+ spec.description = spec.summary
40
+ spec.test_file = "test/test_ws.rb"
41
+ spec.author="Zed A. Shaw"
42
+ spec.executables=['mongrel_rails']
43
+ spec.files += %w(ext/http11/MANIFEST README Rakefile setup.rb)
40
44
 
41
- setup_gem(name, version, author, summary, scripts, test_file) do |spec|
42
45
  spec.add_dependency('daemons', '>= 0.4.2')
43
46
  spec.add_dependency('gem_plugin', ">= 0.1")
47
+ spec.required_ruby_version = '>= 1.8.4'
44
48
  end
45
49
 
46
50
  desc "Build a binary gem for Win32"
47
51
  task :win32_gem => [:clean, :compile, :test, :rerdoc, :package_win32]
48
52
 
49
- scripts_win32 = scripts + ['mongrel_rails_service']
50
53
  task :package_win32 do
51
- setup_win32_gem(name, version, version, summary, scripts_win32, test_file) do |spec|
54
+ setup_win32_gem(name, version) do |spec|
55
+ spec.summary = "A small fast HTTP library and server that runs Rails, Camping, and Nitro apps."
56
+ spec.description = spec.summary
57
+ spec.test_files = Dir.glob('test/test_*.rb')
58
+ spec.author="Zed A. Shaw"
59
+ spec.executables=['mongrel_rails', 'mongrel_rails_service']
60
+ spec.homepage="http://mongrel.rubyforge.org"
61
+ spec.rubyforge_project="mongrel"
62
+ spec.files += %w(ext/http11/MANIFEST README Rakefile setup.rb)
63
+ spec.files << 'ext/http11/http11.so'
64
+
65
+ spec.required_ruby_version = '>= 1.8.4'
66
+
52
67
  spec.add_dependency('win32-service', '>= 0.5.0')
53
68
  spec.add_dependency('gem_plugin', ">= 0.1")
54
- spec.files << 'ext/http11/http11.so'
69
+
55
70
  spec.extensions = []
56
71
  spec.platform = Gem::Platform::WIN32
57
72
  end
58
73
  end
59
74
 
60
- task :gem_plugin_project do
61
- sh %{cd projects/gem_plugin; rake gem_test; }
62
- end
63
75
 
64
- task :gem_test => [:gem_plugin_project, :package] do
76
+ task :install do
77
+ sub_project("gem_plugin", :install)
78
+ sh %{rake package}
65
79
  sh %{sudo gem install pkg/mongrel-#{version}}
66
- end
80
+ sub_project("mongrel_status", :install)
81
+ sub_project("mongrel_config", :install)
82
+ end
83
+
84
+ task :uninstall => [:clean] do
85
+ sub_project("mongrel_status", :uninstall)
86
+ sub_project("mongrel_config", :uninstall)
87
+ sh %{sudo gem uninstall mongrel}
88
+ sub_project("gem_plugin", :uninstall)
89
+ end
@@ -1,7 +1,6 @@
1
1
  require 'rubygems'
2
- require 'mongrel/rails'
3
2
  require 'yaml'
4
-
3
+ require 'mongrel'
5
4
 
6
5
 
7
6
  class Start < GemPlugin::Plugin "/commands"
@@ -72,8 +71,13 @@ class Start < GemPlugin::Plugin "/commands"
72
71
  end
73
72
 
74
73
  def configure_rails
74
+ # need this later for safe reloading
75
+ $orig_dollar_quote = $".clone
76
+
75
77
  ENV['RAILS_ENV'] = @environment
76
78
  require 'config/environment'
79
+ require 'dispatcher'
80
+ require 'mongrel/rails'
77
81
 
78
82
  # configure the rails handler
79
83
  rails = RailsHandler.new(@docroot, load_mime_map)
@@ -87,26 +91,26 @@ class Start < GemPlugin::Plugin "/commands"
87
91
  server = Mongrel::HttpServer.new(@address, @port, @num_procs.to_i, @timeout.to_i)
88
92
  server.register("/", rails)
89
93
 
90
- # start mongrel processing thread
91
- server.run
92
-
93
94
  # signal trapping just applies to posix systems
94
95
  # TERM is a valid signal, but still doesn't gracefuly shutdown on win32.
95
96
  if RUBY_PLATFORM !~ /mswin/
96
97
  # graceful shutdown
97
98
  trap("TERM") {
98
99
  server.stop
100
+ File.unlink @pid_file if File.exist?(@pid_file)
99
101
  }
100
102
 
101
103
  # rails reload
102
104
  trap("HUP") {
103
- server.stop
104
- @restart = true
105
+ STDERR.puts "Reloading rails..."
106
+ rails.reload!
107
+ STDERR.puts "Done reloading rails."
105
108
  }
106
109
 
107
110
  # restart
108
111
  trap("USR2") {
109
112
  server.stop
113
+ File.unlink @pid_file if File.exist?(@pid_file)
110
114
  @restart = true
111
115
  }
112
116
  end
@@ -115,6 +119,8 @@ class Start < GemPlugin::Plugin "/commands"
115
119
  GemPlugin::Manager.instance.load "mongrel" => GemPlugin::INCLUDE
116
120
 
117
121
  begin
122
+ # start mongrel processing thread
123
+ server.run
118
124
  STDERR.puts "Server ready."
119
125
  server.acceptor.join
120
126
  rescue Interrupt
@@ -175,8 +181,6 @@ class Stop < GemPlugin::Plugin "/commands"
175
181
  else
176
182
  send_signal("TERM", @pid_file)
177
183
  end
178
-
179
- File.unlink(@pid_file)
180
184
  end
181
185
  end
182
186
 
@@ -210,8 +214,6 @@ class Restart < GemPlugin::Plugin "/commands"
210
214
  else
211
215
  send_signal("USR2", @pid_file)
212
216
  end
213
-
214
- File.unlink(@pid_file)
215
217
  end
216
218
  end
217
219
 
@@ -58,6 +58,10 @@
58
58
  <a href="../files/lib/mongrel_rb.html">
59
59
  lib/mongrel.rb
60
60
  </a>
61
+ <br />
62
+ <a href="../files/lib/mongrel/camping_rb.html">
63
+ lib/mongrel/camping.rb
64
+ </a>
61
65
  <br />
62
66
  <a href="../files/lib/mongrel/cgi_rb.html">
63
67
  lib/mongrel/cgi.rb
@@ -112,7 +116,8 @@ to service web application requests fast as possible.
112
116
  <div id="class-list">
113
117
  <h3 class="section-bar">Classes and Modules</h3>
114
118
 
115
- Module <a href="Mongrel/Command.html" class="link">Mongrel::Command</a><br />
119
+ Module <a href="Mongrel/Camping.html" class="link">Mongrel::Camping</a><br />
120
+ Module <a href="Mongrel/Command.html" class="link">Mongrel::Command</a><br />
116
121
  Module <a href="Mongrel/Const.html" class="link">Mongrel::Const</a><br />
117
122
  Class <a href="Mongrel/CGIWrapper.html" class="link">Mongrel::CGIWrapper</a><br />
118
123
  Class <a href="Mongrel/DirHandler.html" class="link">Mongrel::DirHandler</a><br />
@@ -102,7 +102,7 @@ In Rails you can get the real file for a request with:
102
102
  </pre>
103
103
  <p>
104
104
  Which is ugly but does the job. Feel free to write a Rails helper for that.
105
- Refer to <a href="DirHandler.html#M000024">DirHandler#can_serve</a> for
105
+ Refer to <a href="DirHandler.html#M000030">DirHandler#can_serve</a> for
106
106
  more information on this.
107
107
  </p>
108
108
 
@@ -115,15 +115,15 @@ more information on this.
115
115
  <h3 class="section-bar">Methods</h3>
116
116
 
117
117
  <div class="name-list">
118
- <a href="#M000056">args</a>&nbsp;&nbsp;
119
- <a href="#M000057">env_table</a>&nbsp;&nbsp;
120
- <a href="#M000052">header</a>&nbsp;&nbsp;
121
- <a href="#M000051">new</a>&nbsp;&nbsp;
122
- <a href="#M000054">out</a>&nbsp;&nbsp;
123
- <a href="#M000053">send_cookies</a>&nbsp;&nbsp;
124
- <a href="#M000055">status</a>&nbsp;&nbsp;
125
- <a href="#M000058">stdinput</a>&nbsp;&nbsp;
126
- <a href="#M000059">stdoutput</a>&nbsp;&nbsp;
118
+ <a href="#M000062">args</a>&nbsp;&nbsp;
119
+ <a href="#M000063">env_table</a>&nbsp;&nbsp;
120
+ <a href="#M000058">header</a>&nbsp;&nbsp;
121
+ <a href="#M000057">new</a>&nbsp;&nbsp;
122
+ <a href="#M000060">out</a>&nbsp;&nbsp;
123
+ <a href="#M000059">send_cookies</a>&nbsp;&nbsp;
124
+ <a href="#M000061">status</a>&nbsp;&nbsp;
125
+ <a href="#M000064">stdinput</a>&nbsp;&nbsp;
126
+ <a href="#M000065">stdoutput</a>&nbsp;&nbsp;
127
127
  </div>
128
128
  </div>
129
129
 
@@ -147,7 +147,7 @@ more information on this.
147
147
  <td width="3em">&nbsp;</td>
148
148
  <td class="context-item-desc">
149
149
  these are stripped out of any keys passed to <a
150
- href="CGIWrapper.html#M000052">CGIWrapper.header</a> function
150
+ href="CGIWrapper.html#M000058">CGIWrapper.header</a> function
151
151
 
152
152
  </td>
153
153
  </tr>
@@ -187,12 +187,12 @@ href="CGIWrapper.html#M000052">CGIWrapper.header</a> function
187
187
  <div id="methods">
188
188
  <h3 class="section-bar">Public Class methods</h3>
189
189
 
190
- <div id="method-M000051" class="method-detail">
191
- <a name="M000051"></a>
190
+ <div id="method-M000057" class="method-detail">
191
+ <a name="M000057"></a>
192
192
 
193
193
  <div class="method-heading">
194
- <a href="CGIWrapper.src/M000051.html" target="Code" class="method-signature"
195
- onclick="popupCode('CGIWrapper.src/M000051.html');return false;">
194
+ <a href="CGIWrapper.src/M000057.html" target="Code" class="method-signature"
195
+ onclick="popupCode('CGIWrapper.src/M000057.html');return false;">
196
196
  <span class="method-name">new</span><span class="method-args">(request, response, *args)</span>
197
197
  </a>
198
198
  </div>
@@ -210,12 +210,12 @@ href="../Mongrel.html">Mongrel</a>&#8217;s view of the world.
210
210
 
211
211
  <h3 class="section-bar">Public Instance methods</h3>
212
212
 
213
- <div id="method-M000056" class="method-detail">
214
- <a name="M000056"></a>
213
+ <div id="method-M000062" class="method-detail">
214
+ <a name="M000062"></a>
215
215
 
216
216
  <div class="method-heading">
217
- <a href="CGIWrapper.src/M000056.html" target="Code" class="method-signature"
218
- onclick="popupCode('CGIWrapper.src/M000056.html');return false;">
217
+ <a href="CGIWrapper.src/M000062.html" target="Code" class="method-signature"
218
+ onclick="popupCode('CGIWrapper.src/M000062.html');return false;">
219
219
  <span class="method-name">args</span><span class="method-args">()</span>
220
220
  </a>
221
221
  </div>
@@ -227,30 +227,30 @@ Used to wrap the normal args variable used inside CGI.
227
227
  </div>
228
228
  </div>
229
229
 
230
- <div id="method-M000057" class="method-detail">
231
- <a name="M000057"></a>
230
+ <div id="method-M000063" class="method-detail">
231
+ <a name="M000063"></a>
232
232
 
233
233
  <div class="method-heading">
234
- <a href="CGIWrapper.src/M000057.html" target="Code" class="method-signature"
235
- onclick="popupCode('CGIWrapper.src/M000057.html');return false;">
234
+ <a href="CGIWrapper.src/M000063.html" target="Code" class="method-signature"
235
+ onclick="popupCode('CGIWrapper.src/M000063.html');return false;">
236
236
  <span class="method-name">env_table</span><span class="method-args">()</span>
237
237
  </a>
238
238
  </div>
239
239
 
240
240
  <div class="method-description">
241
241
  <p>
242
- Used to wrap the normal <a href="CGIWrapper.html#M000057">env_table</a>
242
+ Used to wrap the normal <a href="CGIWrapper.html#M000063">env_table</a>
243
243
  variable used inside CGI.
244
244
  </p>
245
245
  </div>
246
246
  </div>
247
247
 
248
- <div id="method-M000052" class="method-detail">
249
- <a name="M000052"></a>
248
+ <div id="method-M000058" class="method-detail">
249
+ <a name="M000058"></a>
250
250
 
251
251
  <div class="method-heading">
252
- <a href="CGIWrapper.src/M000052.html" target="Code" class="method-signature"
253
- onclick="popupCode('CGIWrapper.src/M000052.html');return false;">
252
+ <a href="CGIWrapper.src/M000058.html" target="Code" class="method-signature"
253
+ onclick="popupCode('CGIWrapper.src/M000058.html');return false;">
254
254
  <span class="method-name">header</span><span class="method-args">(options = &quot;text/html&quot;)</span>
255
255
  </a>
256
256
  </div>
@@ -269,12 +269,12 @@ output.
269
269
  </div>
270
270
  </div>
271
271
 
272
- <div id="method-M000054" class="method-detail">
273
- <a name="M000054"></a>
272
+ <div id="method-M000060" class="method-detail">
273
+ <a name="M000060"></a>
274
274
 
275
275
  <div class="method-heading">
276
- <a href="CGIWrapper.src/M000054.html" target="Code" class="method-signature"
277
- onclick="popupCode('CGIWrapper.src/M000054.html');return false;">
276
+ <a href="CGIWrapper.src/M000060.html" target="Code" class="method-signature"
277
+ onclick="popupCode('CGIWrapper.src/M000060.html');return false;">
278
278
  <span class="method-name">out</span><span class="method-args">(options = &quot;text/html&quot;) {||| &quot;&quot;)| ...}</span>
279
279
  </a>
280
280
  </div>
@@ -286,17 +286,17 @@ So, we just reuse header and then finalize the <a
286
286
  href="HttpResponse.html">HttpResponse</a> the right way. Status is taken
287
287
  from the various options and converted to what <a
288
288
  href="../Mongrel.html">Mongrel</a> needs via the <a
289
- href="CGIWrapper.html#M000055">CGIWrapper.status</a> function.
289
+ href="CGIWrapper.html#M000061">CGIWrapper.status</a> function.
290
290
  </p>
291
291
  </div>
292
292
  </div>
293
293
 
294
- <div id="method-M000053" class="method-detail">
295
- <a name="M000053"></a>
294
+ <div id="method-M000059" class="method-detail">
295
+ <a name="M000059"></a>
296
296
 
297
297
  <div class="method-heading">
298
- <a href="CGIWrapper.src/M000053.html" target="Code" class="method-signature"
299
- onclick="popupCode('CGIWrapper.src/M000053.html');return false;">
298
+ <a href="CGIWrapper.src/M000059.html" target="Code" class="method-signature"
299
+ onclick="popupCode('CGIWrapper.src/M000059.html');return false;">
300
300
  <span class="method-name">send_cookies</span><span class="method-args">(to)</span>
301
301
  </a>
302
302
  </div>
@@ -312,12 +312,12 @@ the options. If cookie is an Array or Hash then it sends those on with
312
312
  </div>
313
313
  </div>
314
314
 
315
- <div id="method-M000055" class="method-detail">
316
- <a name="M000055"></a>
315
+ <div id="method-M000061" class="method-detail">
316
+ <a name="M000061"></a>
317
317
 
318
318
  <div class="method-heading">
319
- <a href="CGIWrapper.src/M000055.html" target="Code" class="method-signature"
320
- onclick="popupCode('CGIWrapper.src/M000055.html');return false;">
319
+ <a href="CGIWrapper.src/M000061.html" target="Code" class="method-signature"
320
+ onclick="popupCode('CGIWrapper.src/M000061.html');return false;">
321
321
  <span class="method-name">status</span><span class="method-args">()</span>
322
322
  </a>
323
323
  </div>
@@ -331,12 +331,12 @@ status message in the status we have to do a bit of parsing.
331
331
  </div>
332
332
  </div>
333
333
 
334
- <div id="method-M000058" class="method-detail">
335
- <a name="M000058"></a>
334
+ <div id="method-M000064" class="method-detail">
335
+ <a name="M000064"></a>
336
336
 
337
337
  <div class="method-heading">
338
- <a href="CGIWrapper.src/M000058.html" target="Code" class="method-signature"
339
- onclick="popupCode('CGIWrapper.src/M000058.html');return false;">
338
+ <a href="CGIWrapper.src/M000064.html" target="Code" class="method-signature"
339
+ onclick="popupCode('CGIWrapper.src/M000064.html');return false;">
340
340
  <span class="method-name">stdinput</span><span class="method-args">()</span>
341
341
  </a>
342
342
  </div>
@@ -348,12 +348,12 @@ Used to wrap the normal stdinput variable used inside CGI.
348
348
  </div>
349
349
  </div>
350
350
 
351
- <div id="method-M000059" class="method-detail">
352
- <a name="M000059"></a>
351
+ <div id="method-M000065" class="method-detail">
352
+ <a name="M000065"></a>
353
353
 
354
354
  <div class="method-heading">
355
- <a href="CGIWrapper.src/M000059.html" target="Code" class="method-signature"
356
- onclick="popupCode('CGIWrapper.src/M000059.html');return false;">
355
+ <a href="CGIWrapper.src/M000065.html" target="Code" class="method-signature"
356
+ onclick="popupCode('CGIWrapper.src/M000065.html');return false;">
357
357
  <span class="method-name">stdoutput</span><span class="method-args">()</span>
358
358
  </a>
359
359
  </div>
@@ -5,14 +5,20 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>env_table (Mongrel::CGIWrapper)</title>
8
+ <title>new (Mongrel::CGIWrapper)</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
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 146</span>
14
- 146: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">env_table</span>
15
- 147: <span class="ruby-ivar">@request</span>.<span class="ruby-identifier">params</span>
16
- 148: <span class="ruby-keyword kw">end</span></pre>
13
+ <pre> <span class="ruby-comment cmt"># File lib/mongrel/cgi.rb, line 34</span>
14
+ 34: <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
+ 35: <span class="ruby-ivar">@request</span> = <span class="ruby-identifier">request</span>
16
+ 36: <span class="ruby-ivar">@response</span> = <span class="ruby-identifier">response</span>
17
+ 37: <span class="ruby-ivar">@args</span> = <span class="ruby-operator">*</span><span class="ruby-identifier">args</span>
18
+ 38: <span class="ruby-ivar">@input</span> = <span class="ruby-constant">StringIO</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">request</span>.<span class="ruby-identifier">body</span>)
19
+ 39: <span class="ruby-ivar">@head</span> = {}
20
+ 40: <span class="ruby-ivar">@out_called</span> = <span class="ruby-keyword kw">false</span>
21
+ 41: <span class="ruby-keyword kw">super</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
22
+ 42: <span class="ruby-keyword kw">end</span></pre>
17
23
  </body>
18
24
  </html>
@@ -5,14 +5,43 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>stdinput (Mongrel::CGIWrapper)</title>
8
+ <title>header (Mongrel::CGIWrapper)</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
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 151</span>
14
- 151: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">stdinput</span>
15
- 152: <span class="ruby-ivar">@input</span>
16
- 153: <span class="ruby-keyword kw">end</span></pre>
13
+ <pre> <span class="ruby-comment cmt"># File lib/mongrel/cgi.rb, line 51</span>
14
+ 51: <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
+ 52: <span class="ruby-comment cmt"># if they pass in a string then just write the Content-Type</span>
16
+ 53: <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
+ 54: <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
+ 55: <span class="ruby-keyword kw">else</span>
19
+ 56: <span class="ruby-comment cmt"># convert the given options into what Mongrel wants</span>
20
+ 57: <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
+ 58: <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
+ 59:
23
+ 60: <span class="ruby-comment cmt"># setup date only if they use nph</span>
24
+ 61: <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
+ 62:
26
+ 63: <span class="ruby-comment cmt"># setup the server to use the default or what they set</span>
27
+ 64: <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
+ 65:
29
+ 66: <span class="ruby-comment cmt"># remaining possible options they can give</span>
30
+ 67: <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
+ 68: <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
+ 69: <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
+ 70:
34
+ 71: <span class="ruby-comment cmt"># drop the keys we don't want anymore</span>
35
+ 72: <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
+ 73:
37
+ 74: <span class="ruby-comment cmt"># finally just convert the rest raw (which puts 'cookie' directly)</span>
38
+ 75: <span class="ruby-comment cmt"># 'cookie' is translated later as we write the header out</span>
39
+ 76: <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
+ 77: <span class="ruby-keyword kw">end</span>
41
+ 78:
42
+ 79: <span class="ruby-comment cmt"># doing this fakes out the cgi library to think the headers are empty</span>
43
+ 80: <span class="ruby-comment cmt"># we then do the real headers in the out function call later</span>
44
+ 81: <span class="ruby-value str">&quot;&quot;</span>
45
+ 82: <span class="ruby-keyword kw">end</span></pre>
17
46
  </body>
18
47
  </html>