mongrel 0.3 → 0.3.1

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 (78) hide show
  1. data/README +24 -28
  2. data/Rakefile +11 -4
  3. data/bin/mongrel_rails +82 -25
  4. data/doc/rdoc/classes/FactoryError.html +144 -0
  5. data/doc/rdoc/classes/FactoryError.src/M000001.html +23 -0
  6. data/doc/rdoc/classes/Mongrel.html +5 -5
  7. data/doc/rdoc/classes/Mongrel.src/{M000001.html → M000015.html} +4 -4
  8. data/doc/rdoc/classes/Mongrel/Const.html +2 -2
  9. data/doc/rdoc/classes/Mongrel/DirHandler.html +26 -26
  10. data/doc/rdoc/classes/Mongrel/DirHandler.src/{M000009.html → M000023.html} +0 -0
  11. data/doc/rdoc/classes/Mongrel/DirHandler.src/{M000010.html → M000024.html} +5 -2
  12. data/doc/rdoc/classes/Mongrel/DirHandler.src/{M000011.html → M000025.html} +26 -26
  13. data/doc/rdoc/classes/Mongrel/DirHandler.src/{M000012.html → M000026.html} +17 -17
  14. data/doc/rdoc/classes/Mongrel/DirHandler.src/{M000013.html → M000027.html} +24 -24
  15. data/doc/rdoc/classes/Mongrel/Error404Handler.html +10 -10
  16. data/doc/rdoc/classes/Mongrel/Error404Handler.src/{M000033.html → M000047.html} +0 -0
  17. data/doc/rdoc/classes/Mongrel/Error404Handler.src/{M000034.html → M000048.html} +0 -0
  18. data/doc/rdoc/classes/Mongrel/HeaderOut.html +10 -10
  19. data/doc/rdoc/classes/Mongrel/HeaderOut.src/{M000019.html → M000033.html} +0 -0
  20. data/doc/rdoc/classes/Mongrel/HeaderOut.src/{M000020.html → M000034.html} +0 -0
  21. data/doc/rdoc/classes/Mongrel/HttpHandler.html +5 -5
  22. data/doc/rdoc/classes/Mongrel/HttpHandler.src/{M000025.html → M000039.html} +0 -0
  23. data/doc/rdoc/classes/Mongrel/HttpParser.html +35 -35
  24. data/doc/rdoc/classes/Mongrel/HttpParser.src/{M000002.html → M000016.html} +0 -0
  25. data/doc/rdoc/classes/Mongrel/HttpParser.src/{M000003.html → M000017.html} +0 -0
  26. data/doc/rdoc/classes/Mongrel/HttpParser.src/{M000004.html → M000018.html} +0 -0
  27. data/doc/rdoc/classes/Mongrel/HttpParser.src/{M000005.html → M000019.html} +0 -0
  28. data/doc/rdoc/classes/Mongrel/HttpParser.src/{M000006.html → M000020.html} +0 -0
  29. data/doc/rdoc/classes/Mongrel/HttpParser.src/{M000007.html → M000021.html} +0 -0
  30. data/doc/rdoc/classes/Mongrel/HttpParser.src/{M000008.html → M000022.html} +0 -0
  31. data/doc/rdoc/classes/Mongrel/HttpRequest.html +5 -5
  32. data/doc/rdoc/classes/Mongrel/HttpRequest.src/{M000035.html → M000049.html} +0 -0
  33. data/doc/rdoc/classes/Mongrel/HttpResponse.html +36 -36
  34. data/doc/rdoc/classes/Mongrel/HttpResponse.src/{M000026.html → M000040.html} +0 -0
  35. data/doc/rdoc/classes/Mongrel/HttpResponse.src/{M000027.html → M000041.html} +1 -1
  36. data/doc/rdoc/classes/Mongrel/HttpResponse.src/{M000028.html → M000042.html} +0 -0
  37. data/doc/rdoc/classes/Mongrel/HttpResponse.src/{M000029.html → M000043.html} +1 -1
  38. data/doc/rdoc/classes/Mongrel/HttpResponse.src/{M000030.html → M000044.html} +0 -0
  39. data/doc/rdoc/classes/Mongrel/HttpResponse.src/{M000031.html → M000045.html} +0 -0
  40. data/doc/rdoc/classes/Mongrel/HttpResponse.src/{M000032.html → M000046.html} +0 -0
  41. data/doc/rdoc/classes/Mongrel/HttpServer.html +28 -28
  42. data/doc/rdoc/classes/Mongrel/HttpServer.src/{M000014.html → M000028.html} +0 -0
  43. data/doc/rdoc/classes/Mongrel/HttpServer.src/{M000015.html → M000029.html} +0 -0
  44. data/doc/rdoc/classes/Mongrel/HttpServer.src/{M000016.html → M000030.html} +0 -0
  45. data/doc/rdoc/classes/Mongrel/HttpServer.src/{M000017.html → M000031.html} +0 -0
  46. data/doc/rdoc/classes/Mongrel/HttpServer.src/{M000018.html → M000032.html} +0 -0
  47. data/doc/rdoc/classes/Mongrel/URIClassifier.html +20 -20
  48. data/doc/rdoc/classes/Mongrel/URIClassifier.src/{M000021.html → M000035.html} +0 -0
  49. data/doc/rdoc/classes/Mongrel/URIClassifier.src/{M000022.html → M000036.html} +0 -0
  50. data/doc/rdoc/classes/Mongrel/URIClassifier.src/{M000023.html → M000037.html} +0 -0
  51. data/doc/rdoc/classes/Mongrel/URIClassifier.src/{M000024.html → M000038.html} +0 -0
  52. data/doc/rdoc/classes/PluginFactory.html +409 -0
  53. data/doc/rdoc/classes/PluginFactory.src/M000002.html +18 -0
  54. data/doc/rdoc/classes/PluginFactory.src/M000003.html +18 -0
  55. data/doc/rdoc/classes/PluginFactory.src/M000004.html +22 -0
  56. data/doc/rdoc/classes/PluginFactory.src/M000005.html +22 -0
  57. data/doc/rdoc/classes/PluginFactory.src/M000006.html +33 -0
  58. data/doc/rdoc/classes/PluginFactory.src/M000007.html +32 -0
  59. data/doc/rdoc/classes/PluginFactory.src/M000008.html +18 -0
  60. data/doc/rdoc/classes/PluginFactory.src/M000009.html +24 -0
  61. data/doc/rdoc/classes/PluginFactory.src/M000010.html +40 -0
  62. data/doc/rdoc/classes/PluginFactory.src/M000011.html +39 -0
  63. data/doc/rdoc/classes/PluginFactory.src/M000012.html +24 -0
  64. data/doc/rdoc/classes/PluginFactory.src/M000013.html +70 -0
  65. data/doc/rdoc/classes/PluginFactory.src/M000014.html +34 -0
  66. data/doc/rdoc/created.rid +1 -1
  67. data/doc/rdoc/files/README.html +29 -37
  68. data/doc/rdoc/files/lib/mongrel_rb.html +1 -1
  69. data/doc/rdoc/files/lib/pluginfactory_rb.html +132 -0
  70. data/doc/rdoc/fr_class_index.html +2 -0
  71. data/doc/rdoc/fr_file_index.html +1 -0
  72. data/doc/rdoc/fr_method_index.html +49 -35
  73. data/examples/simpletest.rb +10 -3
  74. data/lib/mongrel.rb +6 -3
  75. data/lib/mongrel/command.rb +192 -0
  76. data/lib/pluginfactory.rb +384 -0
  77. data/tools/rakehelp.rb +33 -29
  78. metadata +71 -41
data/README CHANGED
@@ -11,30 +11,31 @@ scream without too many portability issues.
11
11
 
12
12
  == Status
13
13
 
14
- The 0.3 release is the first official release to start supporting Ruby on Rails
15
- and to have a more complete DirHandler for serving directories of files. This release
16
- is actually closer to a full functioning web server than the previous releases.
14
+ The 0.3.1 release support Ruby On Rails much better than previously, and also
15
+ sports the beginning of a command and plugin infrastructure. This last part
16
+ isn't documented yet.
17
17
 
18
- The Rails support is pretty rough right now, but check out the bin/mongrel_rails file,
19
- which should be installed into your PATH if you use a gem. You should be able to
20
- do the following to run your Rails applications:
18
+ After you've installed (either with gem install mongrel or via source) you should
19
+ have the mongrel_rails command available in your PATH. Then you just do the following:
21
20
 
22
- > cd myrailsapp
23
- > mongrel_rails 0.0.0.0 3000
21
+ > cd myrailsapp
22
+ > mongrel_rails start
24
23
 
25
- And then hit http://localhost:3000/ to see your app. One thing is that if you have
26
- a public/index.html file then you'll get that served instead of your Rails application.
24
+ This will start it in the foreground so you can play with it. It runs your application
25
+ in production mode. To get help do:
27
26
 
28
- People with the daemons gem installed will see that mongrel_rails will go into the
29
- background. You can kill it with:
27
+ > mongrel_rails start -h
30
28
 
31
- > kill -TERM `cat log/mongrel-3000.pid`
29
+ Finally, you can then start in background mode (probably won't work in win32):
32
30
 
33
- Where "3000" is whatever port you told it to listen on when you ran it.
31
+ > mongrel_rails start -d
34
32
 
35
- The file serving is still a little rough and the redirects might not work well, but
36
- try it out and tell me about any weird errors. File uploads will definitely have some
37
- problems.
33
+ And you can stop it whenever you like with:
34
+
35
+ > mongrel_rails stop
36
+
37
+ All of which should be done from your application's directory. It writes the
38
+ PID of the process you ran into log/mongrel.pid.
38
39
 
39
40
 
40
41
  == Install
@@ -82,16 +83,13 @@ type mapping is missing though.*
82
83
 
83
84
  == Speed
84
85
 
85
- The 0.2.1 release probably consists of the most effort I've ever put into
86
- tuning a Ruby library for speed. It consists of nearly everything I could think
87
- of to make Mongrel the fastest Ruby HTTP library possible. I've tried about
88
- seven different architectures and IO processing methods and none of them
89
- make it any faster. In short: Mongrel is amazingly fast considering Ruby's speed
90
- limitations.
86
+ Like previous releases 0.3.1 continues the trend of making things
87
+ as fast as possible. It currently might be a little slower than
88
+ other releases but should hold up pretty good against at least
89
+ WEBrick (especially when running Rails).
91
90
 
92
- This release also brings in controllable threads that you can scale to meet your
93
- needs to do your processing. Simple pass in the HttpServer.new third optional
94
- parameter:
91
+ As before you can control the number of processor threads (and thus
92
+ ActiveRecord database connections) with:
95
93
 
96
94
  h = Mongrel::HttpServer.new("0.0.0.0", "3000", 40)
97
95
 
@@ -101,8 +99,6 @@ limited processors also means that you can use ActiveRecord as-is and it will
101
99
  create a matching database connection for each processor thread. More on
102
100
  this in future releases.
103
101
 
104
- With this release I'm hoping that I've created a nice solid fast as hell core
105
- upon which I can build the remaining features I want in Mongrel.
106
102
 
107
103
  == The Future
108
104
 
data/Rakefile CHANGED
@@ -8,7 +8,7 @@ require 'fileutils'
8
8
  include FileUtils
9
9
 
10
10
  setup_tests
11
- setup_clean ["ext/http11/Makefile", "pkg", "lib/*.bundle", "ext/http11/*.bundle"]
11
+ setup_clean ["ext/http11/Makefile", "pkg", "lib/*.bundle", "ext/http11/*.bundle", "doc/site/output"]
12
12
  setup_rdoc ['README', 'LICENSE', 'COPYING', 'lib/*.rb', 'doc/**/*.rdoc', 'ext/http11/http11.c']
13
13
 
14
14
  desc "Does a full compile, test run"
@@ -19,11 +19,18 @@ task :compile => [:http11]
19
19
  task :package => [:clean]
20
20
 
21
21
  task :ragel do
22
- sh %{/usr/local/bin/ragel ext/http11/http11_parser.rl | /usr/local/bin/rlcodegen -G2 -o ext/http11/http11_parser.c}
22
+ sh %{/usr/local/bin/ragel ext/http11/http11_parser.rl | /usr/local/bin/rlcodegen -G2 -o ext/http11/http11_parser.c}
23
+ end
24
+
25
+ task :site do
26
+ sh %{pushd doc/site; webgen; scp -r output/* #{ENV['SSH_USER']}@rubyforge.org:/var/www/gforge-projects/mongrel/; popd }
27
+ sh %{ scp -r doc/rdoc/* #{ENV['SSH_USER']}@rubyforge.org:/var/www/gforge-projects/mongrel/rdoc/ }
23
28
  end
24
29
 
25
30
  setup_extension("http11", "http11")
26
31
 
27
- summary = "An experimental fast simple web server for Ruby."
32
+ summary = "A small fast HTTP library and server that runs Rails, Camping, and Nitro apps."
28
33
  test_file = "test/test_ws.rb"
29
- setup_gem("mongrel", "0.3", "Zed A. Shaw", summary, ['mongrel_rails'], test_file)
34
+ setup_gem("mongrel", "0.3.1", "Zed A. Shaw", summary, ['mongrel_rails'], test_file) do |spec|
35
+ spec.add_dependency('daemons', '>= 0.4.2')
36
+ end
@@ -1,12 +1,8 @@
1
1
  require 'rubygems'
2
2
  require 'mongrel'
3
3
  require 'cgi'
4
- begin
5
- require 'daemons/daemonize'
6
- HAVE_DAEMONS=true
7
- rescue
8
- HAVE_DAEMONS=false
9
- end
4
+ require 'daemons/daemonize'
5
+ require 'mongrel/command'
10
6
 
11
7
 
12
8
  class CGIFixed < ::CGI
@@ -87,28 +83,89 @@ class RailsHandler < Mongrel::HttpHandler
87
83
  end
88
84
 
89
85
 
90
- if ARGV.length != 2
91
- STDERR.puts "usage: mongrel_rails <host> <port>"
92
- exit(1)
93
- end
94
86
 
95
- # store this for later since Daemonize insists on going to the / root
96
- cwd = Dir.pwd
87
+ class StartCommand < Mongrel::Command::Command
88
+
89
+ def configure
90
+ options [
91
+ ["-e", "--environment ENV", "Rails environment to run as", :@environment, "production"],
92
+ ["-d", "--daemonize", "Whether to run in the background or not", :@daemon, false],
93
+ ['-p', '--port PORT', "Which port to bind to", :@port, 3000],
94
+ ['-a', '--address ADDR', "Address to bind to", :@address, "0.0.0.0"],
95
+ ['-l', '--log FILE', "Where to write log messages", :@log_file, "log/mongrel.log"],
96
+ ['-P', '--pid FILE', "Where to write the PID", :@pid_file, "log/mongrel.pid"]
97
+ ]
98
+ end
99
+
100
+ def validate
101
+ valid? ["production","development"].include?(@environment), "Only valid environments are 'production' or 'development'"
102
+ valid_dir? File.dirname(@log_file), "Path to log file not valid: #@log_file"
103
+ valid_dir? File.dirname(@pid_file), "Path to pid file not valid: #@pid_file"
104
+
105
+ return @valid
106
+ end
97
107
 
98
- if HAVE_DAEMONS
99
- STDERR.puts "Running Mongrel in the background. See log/mongrel.log for errors."
100
- Daemonize.daemonize(log_file=File.join(cwd,"log","mongrel.log"))
101
- else
102
- STDERR.puts "Unable to daemonize. Running in foreground. Use CTRL-C to stop."
108
+
109
+ def run
110
+ cwd = Dir.pwd
111
+
112
+ if @daemon
113
+ puts "Running as Daemon at #@address:#@port"
114
+ Daemonize.daemonize(log_file=@log_file)
115
+ open(File.join(cwd,@pid_file),"w") {|f| f.write(Process.pid) }
116
+ # change back to the original starting directory
117
+ Dir.chdir(cwd)
118
+ else
119
+ puts "Running at #@address:#@port"
120
+ end
121
+
122
+ ENV['RAILS_ENV'] = @environment
123
+
124
+ require 'config/environment'
125
+ h = Mongrel::HttpServer.new(@address, @port)
126
+ h.register("/", RailsHandler.new(File.join(cwd,"public")))
127
+ h.run
128
+
129
+ begin
130
+ h.acceptor.join
131
+ rescue Interrupt
132
+ puts "Interrupted."
133
+ end
134
+ end
103
135
  end
104
136
 
105
- # and go back
106
- Dir.chdir(cwd) do
107
- require 'config/environment'
108
- open(File.join(cwd,"log/mongrel-#{ARGV[1]}.pid"),"w") {|f| f.write(Process.pid) }
109
- h = Mongrel::HttpServer.new(ARGV[0], ARGV[1])
110
- h.register("/", RailsHandler.new(File.join(cwd,"public")))
111
- h.run
137
+
138
+
139
+ class StopCommand < Mongrel::Command::Command
140
+
141
+ def configure
142
+ options [
143
+ ["-d", "--daemonize", "Whether to run in the background or not", :@daemon, false],
144
+ ['-P', '--pid FILE', "Where to write the PID", :@pid_file, "log/mongrel.pid"]
145
+ ]
146
+ end
147
+
148
+ def validate
149
+ valid_exists? @pid_file, "PID file #@pid_file does not exist. Not running?"
150
+ return @valid
151
+ end
152
+
112
153
 
113
- h.acceptor.join
154
+ def run
155
+ pid = open(@pid_file).read.to_i
156
+ print "Stopping Mongrel at PID #{pid}..."
157
+ begin
158
+ Process.kill("INT", pid)
159
+ rescue Errno::ESRCH
160
+ puts "Process does not exist. Not running."
161
+ end
162
+
163
+ File.unlink(@pid_file)
164
+ puts "Done."
165
+ end
114
166
  end
167
+
168
+
169
+
170
+
171
+ Mongrel::Command::Registry.instance.run ARGV
@@ -0,0 +1,144 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>Class: FactoryError</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href=".././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="classHeader">
50
+ <table class="header-table">
51
+ <tr class="top-aligned-row">
52
+ <td><strong>Class</strong></td>
53
+ <td class="class-name-in-header">FactoryError</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../files/lib/pluginfactory_rb.html">
59
+ lib/pluginfactory.rb
60
+ </a>
61
+ <br />
62
+ </td>
63
+ </tr>
64
+
65
+ <tr class="top-aligned-row">
66
+ <td><strong>Parent:</strong></td>
67
+ <td>
68
+ RuntimeError
69
+ </td>
70
+ </tr>
71
+ </table>
72
+ </div>
73
+ <!-- banner header -->
74
+
75
+ <div id="bodyContent">
76
+
77
+
78
+
79
+ <div id="contextContent">
80
+
81
+ <div id="description">
82
+ <p>
83
+ An exception class for <a href="PluginFactory.html">PluginFactory</a>
84
+ specific errors.
85
+ </p>
86
+
87
+ </div>
88
+
89
+
90
+ </div>
91
+
92
+ <div id="method-list">
93
+ <h3 class="section-bar">Methods</h3>
94
+
95
+ <div class="name-list">
96
+ <a href="#M000001">new</a>&nbsp;&nbsp;
97
+ </div>
98
+ </div>
99
+
100
+ </div>
101
+
102
+
103
+ <!-- if includes -->
104
+
105
+ <div id="section">
106
+
107
+
108
+
109
+
110
+
111
+
112
+
113
+
114
+ <!-- if method_list -->
115
+ <div id="methods">
116
+ <h3 class="section-bar">Public Class methods</h3>
117
+
118
+ <div id="method-M000001" class="method-detail">
119
+ <a name="M000001"></a>
120
+
121
+ <div class="method-heading">
122
+ <a href="FactoryError.src/M000001.html" target="Code" class="method-signature"
123
+ onclick="popupCode('FactoryError.src/M000001.html');return false;">
124
+ <span class="method-name">new</span><span class="method-args">( *args )</span>
125
+ </a>
126
+ </div>
127
+
128
+ <div class="method-description">
129
+ </div>
130
+ </div>
131
+
132
+
133
+ </div>
134
+
135
+
136
+ </div>
137
+
138
+
139
+ <div id="validator-badges">
140
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
141
+ </div>
142
+
143
+ </body>
144
+ </html>
@@ -0,0 +1,23 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>new (FactoryError)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre> <span class="ruby-comment cmt"># File lib/pluginfactory.rb, line 87</span>
14
+ 87: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>( <span class="ruby-operator">*</span><span class="ruby-identifier">args</span> )
15
+ 88: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">empty?</span>
16
+ 89: <span class="ruby-identifier">msg</span> = <span class="ruby-identifier">args</span>.<span class="ruby-identifier">collect</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-identifier">a</span>.<span class="ruby-identifier">to_s</span>}.<span class="ruby-identifier">join</span>
17
+ 90: <span class="ruby-keyword kw">super</span>( <span class="ruby-identifier">msg</span> )
18
+ 91: <span class="ruby-keyword kw">else</span>
19
+ 92: <span class="ruby-keyword kw">super</span>( <span class="ruby-identifier">message</span> )
20
+ 93: <span class="ruby-keyword kw">end</span>
21
+ 94: <span class="ruby-keyword kw">end</span></pre>
22
+ </body>
23
+ </html>
@@ -93,7 +93,7 @@ to service web application requests fast as possible.
93
93
  <h3 class="section-bar">Methods</h3>
94
94
 
95
95
  <div class="name-list">
96
- <a href="#M000001">add_mime_type</a>&nbsp;&nbsp;
96
+ <a href="#M000015">add_mime_type</a>&nbsp;&nbsp;
97
97
  </div>
98
98
  </div>
99
99
 
@@ -151,12 +151,12 @@ href="Mongrel/Const.html">Mongrel::Const</a>.
151
151
  <div id="methods">
152
152
  <h3 class="section-bar">Public Instance methods</h3>
153
153
 
154
- <div id="method-M000001" class="method-detail">
155
- <a name="M000001"></a>
154
+ <div id="method-M000015" class="method-detail">
155
+ <a name="M000015"></a>
156
156
 
157
157
  <div class="method-heading">
158
- <a href="Mongrel.src/M000001.html" target="Code" class="method-signature"
159
- onclick="popupCode('Mongrel.src/M000001.html');return false;">
158
+ <a href="Mongrel.src/M000015.html" target="Code" class="method-signature"
159
+ onclick="popupCode('Mongrel.src/M000015.html');return false;">
160
160
  <span class="method-name">add_mime_type</span><span class="method-args">(extension, type)</span>
161
161
  </a>
162
162
  </div>
@@ -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.rb, line 577</span>
14
- 577: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">add_mime_type</span>(<span class="ruby-identifier">extension</span>, <span class="ruby-identifier">type</span>)
15
- 578: <span class="ruby-constant">MIME_TYPES</span>[<span class="ruby-identifier">extension</span>] = <span class="ruby-identifier">type</span>
16
- 579: <span class="ruby-keyword kw">end</span></pre>
13
+ <pre> <span class="ruby-comment cmt"># File lib/mongrel.rb, line 580</span>
14
+ 580: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">add_mime_type</span>(<span class="ruby-identifier">extension</span>, <span class="ruby-identifier">type</span>)
15
+ 581: <span class="ruby-constant">MIME_TYPES</span>[<span class="ruby-identifier">extension</span>] = <span class="ruby-identifier">type</span>
16
+ 582: <span class="ruby-keyword kw">end</span></pre>
17
17
  </body>
18
18
  </html>
@@ -230,7 +230,7 @@ DNS resolves. It is only here for completeness for the CGI standard.
230
230
  <td width="3em">&nbsp;</td>
231
231
  <td class="context-item-desc">
232
232
  The name/host of our server as given by the <a
233
- href="HttpServer.html#M000014">HttpServer.new</a>(host,port) call.
233
+ href="HttpServer.html#M000028">HttpServer.new</a>(host,port) call.
234
234
 
235
235
  </td>
236
236
  </tr>
@@ -241,7 +241,7 @@ href="HttpServer.html#M000014">HttpServer.new</a>(host,port) call.
241
241
  <td width="3em">&nbsp;</td>
242
242
  <td class="context-item-desc">
243
243
  The port of our server as given by the <a
244
- href="HttpServer.html#M000014">HttpServer.new</a>(host,port) call.
244
+ href="HttpServer.html#M000028">HttpServer.new</a>(host,port) call.
245
245
 
246
246
  </td>
247
247
  </tr>