mongrel 0.3 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
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>