mongrel 0.3.8 → 0.3.9
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.
- data/README +30 -24
- data/Rakefile +12 -2
- data/bin/mongrel_rails +12 -8
- data/doc/rdoc/classes/Mongrel.html +18 -1
- data/doc/rdoc/classes/Mongrel/CGIWrapper.html +381 -0
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000051.html +24 -0
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000052.html +47 -0
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000053.html +34 -0
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000054.html +27 -0
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000055.html +25 -0
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000056.html +18 -0
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000057.html +18 -0
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000058.html +18 -0
- data/doc/rdoc/classes/Mongrel/CGIWrapper.src/M000059.html +19 -0
- data/doc/rdoc/classes/Mongrel/Command.html +119 -0
- data/doc/rdoc/classes/Mongrel/Command/Base.html +332 -0
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000003.html +24 -0
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000004.html +41 -0
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000005.html +18 -0
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000006.html +18 -0
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000007.html +18 -0
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000008.html +22 -0
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000009.html +18 -0
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000010.html +18 -0
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000011.html +18 -0
- data/doc/rdoc/classes/Mongrel/Command/Base.src/M000012.html +18 -0
- data/doc/rdoc/classes/Mongrel/Command/Registry.html +192 -0
- data/doc/rdoc/classes/Mongrel/Command/Registry.src/M000013.html +20 -0
- data/doc/rdoc/classes/Mongrel/Command/Registry.src/M000014.html +25 -0
- data/doc/rdoc/classes/Mongrel/Command/Registry.src/M000015.html +46 -0
- data/doc/rdoc/classes/Mongrel/Const.html +2 -2
- data/doc/rdoc/classes/Mongrel/DirHandler.html +283 -0
- data/doc/rdoc/classes/Mongrel/DirHandler.src/M000023.html +20 -0
- data/doc/rdoc/classes/Mongrel/DirHandler.src/M000024.html +42 -0
- data/doc/rdoc/classes/Mongrel/DirHandler.src/M000025.html +40 -0
- data/doc/rdoc/classes/Mongrel/DirHandler.src/M000026.html +31 -0
- data/doc/rdoc/classes/Mongrel/DirHandler.src/M000027.html +38 -0
- data/doc/rdoc/classes/Mongrel/DirHandler.src/M000028.html +18 -0
- data/doc/rdoc/classes/Mongrel/Error404Handler.html +171 -0
- data/doc/rdoc/classes/Mongrel/Error404Handler.src/M000060.html +18 -0
- data/doc/rdoc/classes/Mongrel/Error404Handler.src/M000061.html +18 -0
- data/doc/rdoc/classes/Mongrel/HeaderOut.html +10 -10
- data/doc/rdoc/classes/Mongrel/HeaderOut.src/{M000014.html → M000035.html} +0 -0
- data/doc/rdoc/classes/Mongrel/HeaderOut.src/{M000015.html → M000036.html} +0 -0
- data/doc/rdoc/classes/Mongrel/HttpHandler.html +146 -0
- data/doc/rdoc/classes/Mongrel/HttpHandler.src/M000037.html +17 -0
- data/doc/rdoc/classes/Mongrel/HttpParser.html +35 -35
- data/doc/rdoc/classes/Mongrel/HttpParser.src/{M000001.html → M000016.html} +0 -0
- data/doc/rdoc/classes/Mongrel/HttpParser.src/{M000002.html → M000017.html} +0 -0
- data/doc/rdoc/classes/Mongrel/HttpParser.src/{M000003.html → M000018.html} +0 -0
- data/doc/rdoc/classes/Mongrel/HttpParser.src/{M000004.html → M000019.html} +0 -0
- data/doc/rdoc/classes/Mongrel/HttpParser.src/{M000005.html → M000020.html} +0 -0
- data/doc/rdoc/classes/Mongrel/HttpParser.src/{M000006.html → M000021.html} +0 -0
- data/doc/rdoc/classes/Mongrel/HttpParser.src/{M000007.html → M000022.html} +0 -0
- data/doc/rdoc/classes/Mongrel/HttpRequest.html +5 -5
- data/doc/rdoc/classes/Mongrel/HttpRequest.src/{M000029.html → M000062.html} +0 -0
- data/doc/rdoc/classes/Mongrel/HttpResponse.html +36 -36
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/{M000016.html → M000038.html} +0 -0
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/{M000017.html → M000039.html} +0 -0
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/{M000018.html → M000040.html} +0 -0
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/{M000019.html → M000041.html} +0 -0
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/{M000020.html → M000042.html} +0 -0
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/{M000021.html → M000043.html} +0 -0
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/{M000022.html → M000044.html} +0 -0
- data/doc/rdoc/classes/Mongrel/HttpServer.html +33 -33
- data/doc/rdoc/classes/Mongrel/HttpServer.src/{M000008.html → M000029.html} +0 -0
- data/doc/rdoc/classes/Mongrel/HttpServer.src/{M000009.html → M000030.html} +0 -0
- data/doc/rdoc/classes/Mongrel/HttpServer.src/{M000010.html → M000031.html} +0 -0
- data/doc/rdoc/classes/Mongrel/HttpServer.src/{M000011.html → M000032.html} +0 -0
- data/doc/rdoc/classes/Mongrel/HttpServer.src/{M000012.html → M000033.html} +0 -0
- data/doc/rdoc/classes/Mongrel/HttpServer.src/{M000013.html → M000034.html} +0 -0
- data/doc/rdoc/classes/Mongrel/URIClassifier.html +33 -32
- data/doc/rdoc/classes/Mongrel/URIClassifier.src/{M000023.html → M000045.html} +0 -0
- data/doc/rdoc/classes/Mongrel/URIClassifier.src/{M000024.html → M000046.html} +0 -0
- data/doc/rdoc/classes/Mongrel/URIClassifier.src/{M000025.html → M000047.html} +0 -0
- data/doc/rdoc/classes/Mongrel/URIClassifier.src/{M000026.html → M000048.html} +0 -0
- data/doc/rdoc/classes/Mongrel/URIClassifier.src/{M000027.html → M000049.html} +0 -0
- data/doc/rdoc/classes/Mongrel/URIClassifier.src/{M000028.html → M000050.html} +0 -0
- data/doc/rdoc/classes/RailsHandler.html +225 -0
- data/doc/rdoc/classes/RailsHandler.src/M000001.html +22 -0
- data/doc/rdoc/classes/RailsHandler.src/M000002.html +48 -0
- data/doc/rdoc/created.rid +1 -1
- data/doc/rdoc/files/README.html +45 -50
- data/doc/rdoc/files/lib/mongrel/cgi_rb.html +108 -0
- data/doc/rdoc/files/lib/mongrel/command_rb.html +110 -0
- data/doc/rdoc/files/lib/mongrel/handlers_rb.html +101 -0
- data/doc/rdoc/files/lib/mongrel/plugins_rb.html +108 -0
- data/doc/rdoc/files/lib/mongrel/rails_rb.html +108 -0
- data/doc/rdoc/fr_class_index.html +8 -0
- data/doc/rdoc/fr_file_index.html +5 -0
- data/doc/rdoc/fr_method_index.html +62 -29
- data/lib/mongrel/command.rb +5 -5
- data/lib/mongrel/plugins.rb +3 -152
- data/lib/mongrel/rails.rb +1 -1
- metadata +95 -35
- data/test/plugins/commands/test1.rb +0 -19
- data/test/test_plugins.rb +0 -45
|
@@ -0,0 +1,108 @@
|
|
|
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>File: plugins.rb</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="fileHeader">
|
|
50
|
+
<h1>plugins.rb</h1>
|
|
51
|
+
<table class="header-table">
|
|
52
|
+
<tr class="top-aligned-row">
|
|
53
|
+
<td><strong>Path:</strong></td>
|
|
54
|
+
<td>lib/mongrel/plugins.rb
|
|
55
|
+
</td>
|
|
56
|
+
</tr>
|
|
57
|
+
<tr class="top-aligned-row">
|
|
58
|
+
<td><strong>Last Update:</strong></td>
|
|
59
|
+
<td>Sun Mar 05 17:56:06 EST 2006</td>
|
|
60
|
+
</tr>
|
|
61
|
+
</table>
|
|
62
|
+
</div>
|
|
63
|
+
<!-- banner header -->
|
|
64
|
+
|
|
65
|
+
<div id="bodyContent">
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
<div id="contextContent">
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
<div id="requires-list">
|
|
73
|
+
<h3 class="section-bar">Required files</h3>
|
|
74
|
+
|
|
75
|
+
<div class="name-list">
|
|
76
|
+
rubygems
|
|
77
|
+
</div>
|
|
78
|
+
</div>
|
|
79
|
+
|
|
80
|
+
</div>
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
</div>
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
<!-- if includes -->
|
|
87
|
+
|
|
88
|
+
<div id="section">
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
<!-- if method_list -->
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
</div>
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
<div id="validator-badges">
|
|
104
|
+
<p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
|
|
105
|
+
</div>
|
|
106
|
+
|
|
107
|
+
</body>
|
|
108
|
+
</html>
|
|
@@ -0,0 +1,108 @@
|
|
|
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>File: rails.rb</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="fileHeader">
|
|
50
|
+
<h1>rails.rb</h1>
|
|
51
|
+
<table class="header-table">
|
|
52
|
+
<tr class="top-aligned-row">
|
|
53
|
+
<td><strong>Path:</strong></td>
|
|
54
|
+
<td>lib/mongrel/rails.rb
|
|
55
|
+
</td>
|
|
56
|
+
</tr>
|
|
57
|
+
<tr class="top-aligned-row">
|
|
58
|
+
<td><strong>Last Update:</strong></td>
|
|
59
|
+
<td>Sun Mar 05 23:29:44 EST 2006</td>
|
|
60
|
+
</tr>
|
|
61
|
+
</table>
|
|
62
|
+
</div>
|
|
63
|
+
<!-- banner header -->
|
|
64
|
+
|
|
65
|
+
<div id="bodyContent">
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
<div id="contextContent">
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
<div id="requires-list">
|
|
73
|
+
<h3 class="section-bar">Required files</h3>
|
|
74
|
+
|
|
75
|
+
<div class="name-list">
|
|
76
|
+
mongrel
|
|
77
|
+
</div>
|
|
78
|
+
</div>
|
|
79
|
+
|
|
80
|
+
</div>
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
</div>
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
<!-- if includes -->
|
|
87
|
+
|
|
88
|
+
<div id="section">
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
<!-- if method_list -->
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
</div>
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
<div id="validator-badges">
|
|
104
|
+
<p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
|
|
105
|
+
</div>
|
|
106
|
+
|
|
107
|
+
</body>
|
|
108
|
+
</html>
|
|
@@ -21,8 +21,15 @@
|
|
|
21
21
|
<h1 class="section-bar">Classes</h1>
|
|
22
22
|
<div id="index-entries">
|
|
23
23
|
<a href="classes/Mongrel.html">Mongrel</a><br />
|
|
24
|
+
<a href="classes/Mongrel/CGIWrapper.html">Mongrel::CGIWrapper</a><br />
|
|
25
|
+
<a href="classes/Mongrel/Command.html">Mongrel::Command</a><br />
|
|
26
|
+
<a href="classes/Mongrel/Command/Base.html">Mongrel::Command::Base</a><br />
|
|
27
|
+
<a href="classes/Mongrel/Command/Registry.html">Mongrel::Command::Registry</a><br />
|
|
24
28
|
<a href="classes/Mongrel/Const.html">Mongrel::Const</a><br />
|
|
29
|
+
<a href="classes/Mongrel/DirHandler.html">Mongrel::DirHandler</a><br />
|
|
30
|
+
<a href="classes/Mongrel/Error404Handler.html">Mongrel::Error404Handler</a><br />
|
|
25
31
|
<a href="classes/Mongrel/HeaderOut.html">Mongrel::HeaderOut</a><br />
|
|
32
|
+
<a href="classes/Mongrel/HttpHandler.html">Mongrel::HttpHandler</a><br />
|
|
26
33
|
<a href="classes/Mongrel/HttpParser.html">Mongrel::HttpParser</a><br />
|
|
27
34
|
<a href="classes/Mongrel/HttpRequest.html">Mongrel::HttpRequest</a><br />
|
|
28
35
|
<a href="classes/Mongrel/HttpResponse.html">Mongrel::HttpResponse</a><br />
|
|
@@ -30,6 +37,7 @@
|
|
|
30
37
|
<a href="classes/Mongrel/StopServer.html">Mongrel::StopServer</a><br />
|
|
31
38
|
<a href="classes/Mongrel/TimeoutWorker.html">Mongrel::TimeoutWorker</a><br />
|
|
32
39
|
<a href="classes/Mongrel/URIClassifier.html">Mongrel::URIClassifier</a><br />
|
|
40
|
+
<a href="classes/RailsHandler.html">RailsHandler</a><br />
|
|
33
41
|
</div>
|
|
34
42
|
</div>
|
|
35
43
|
</body>
|
data/doc/rdoc/fr_file_index.html
CHANGED
|
@@ -25,6 +25,11 @@
|
|
|
25
25
|
<a href="files/README.html">README</a><br />
|
|
26
26
|
<a href="files/ext/http11/http11_c.html">ext/http11/http11.c</a><br />
|
|
27
27
|
<a href="files/lib/mongrel_rb.html">lib/mongrel.rb</a><br />
|
|
28
|
+
<a href="files/lib/mongrel/cgi_rb.html">lib/mongrel/cgi.rb</a><br />
|
|
29
|
+
<a href="files/lib/mongrel/command_rb.html">lib/mongrel/command.rb</a><br />
|
|
30
|
+
<a href="files/lib/mongrel/handlers_rb.html">lib/mongrel/handlers.rb</a><br />
|
|
31
|
+
<a href="files/lib/mongrel/plugins_rb.html">lib/mongrel/plugins.rb</a><br />
|
|
32
|
+
<a href="files/lib/mongrel/rails_rb.html">lib/mongrel/rails.rb</a><br />
|
|
28
33
|
</div>
|
|
29
34
|
</div>
|
|
30
35
|
</body>
|
|
@@ -20,35 +20,68 @@
|
|
|
20
20
|
<div id="index">
|
|
21
21
|
<h1 class="section-bar">Methods</h1>
|
|
22
22
|
<div id="index-entries">
|
|
23
|
-
<a href="classes/Mongrel/HeaderOut.html#
|
|
24
|
-
<a href="classes/Mongrel/
|
|
25
|
-
<a href="classes/Mongrel/
|
|
26
|
-
<a href="classes/Mongrel/
|
|
27
|
-
<a href="classes/Mongrel/
|
|
28
|
-
<a href="classes/Mongrel/
|
|
29
|
-
<a href="classes/Mongrel/
|
|
30
|
-
<a href="classes/Mongrel/HttpParser.html#
|
|
31
|
-
<a href="classes/Mongrel/
|
|
32
|
-
<a href="classes/Mongrel/
|
|
33
|
-
<a href="classes/Mongrel/
|
|
34
|
-
<a href="classes/Mongrel/
|
|
35
|
-
<a href="classes/Mongrel/
|
|
36
|
-
<a href="classes/Mongrel/
|
|
37
|
-
<a href="classes/Mongrel/
|
|
38
|
-
<a href="classes/
|
|
39
|
-
<a href="classes/Mongrel/
|
|
40
|
-
<a href="classes/Mongrel/
|
|
41
|
-
<a href="classes/Mongrel/
|
|
42
|
-
<a href="classes/Mongrel/
|
|
43
|
-
<a href="classes/Mongrel/
|
|
44
|
-
<a href="classes/Mongrel/
|
|
45
|
-
<a href="classes/Mongrel/
|
|
46
|
-
<a href="classes/Mongrel/
|
|
47
|
-
<a href="classes/Mongrel/
|
|
48
|
-
<a href="classes/Mongrel/
|
|
49
|
-
<a href="classes/Mongrel/
|
|
50
|
-
<a href="classes/Mongrel/
|
|
51
|
-
<a href="classes/Mongrel/
|
|
23
|
+
<a href="classes/Mongrel/HeaderOut.html#M000036">[]= (Mongrel::HeaderOut)</a><br />
|
|
24
|
+
<a href="classes/Mongrel/DirHandler.html#M000028">add_mime_type (Mongrel::DirHandler)</a><br />
|
|
25
|
+
<a href="classes/Mongrel/CGIWrapper.html#M000056">args (Mongrel::CGIWrapper)</a><br />
|
|
26
|
+
<a href="classes/Mongrel/DirHandler.html#M000024">can_serve (Mongrel::DirHandler)</a><br />
|
|
27
|
+
<a href="classes/Mongrel/Command/Registry.html#M000013">commands (Mongrel::Command::Registry)</a><br />
|
|
28
|
+
<a href="classes/Mongrel/CGIWrapper.html#M000057">env_table (Mongrel::CGIWrapper)</a><br />
|
|
29
|
+
<a href="classes/Mongrel/HttpParser.html#M000020">error? (Mongrel::HttpParser)</a><br />
|
|
30
|
+
<a href="classes/Mongrel/HttpParser.html#M000019">execute (Mongrel::HttpParser)</a><br />
|
|
31
|
+
<a href="classes/Mongrel/Command/Base.html#M000012">failure (Mongrel::Command::Base)</a><br />
|
|
32
|
+
<a href="classes/Mongrel/HttpParser.html#M000018">finish (Mongrel::HttpParser)</a><br />
|
|
33
|
+
<a href="classes/Mongrel/HttpResponse.html#M000044">finished (Mongrel::HttpResponse)</a><br />
|
|
34
|
+
<a href="classes/Mongrel/HttpParser.html#M000021">finished? (Mongrel::HttpParser)</a><br />
|
|
35
|
+
<a href="classes/Mongrel/CGIWrapper.html#M000052">header (Mongrel::CGIWrapper)</a><br />
|
|
36
|
+
<a href="classes/Mongrel/Command/Base.html#M000006">help (Mongrel::Command::Base)</a><br />
|
|
37
|
+
<a href="classes/Mongrel/URIClassifier.html#M000046">inspect (Mongrel::URIClassifier)</a><br />
|
|
38
|
+
<a href="classes/RailsHandler.html#M000001">new (RailsHandler)</a><br />
|
|
39
|
+
<a href="classes/Mongrel/HttpResponse.html#M000038">new (Mongrel::HttpResponse)</a><br />
|
|
40
|
+
<a href="classes/Mongrel/URIClassifier.html#M000047">new (Mongrel::URIClassifier)</a><br />
|
|
41
|
+
<a href="classes/Mongrel/CGIWrapper.html#M000051">new (Mongrel::CGIWrapper)</a><br />
|
|
42
|
+
<a href="classes/Mongrel/Command/Base.html#M000004">new (Mongrel::Command::Base)</a><br />
|
|
43
|
+
<a href="classes/Mongrel/Error404Handler.html#M000060">new (Mongrel::Error404Handler)</a><br />
|
|
44
|
+
<a href="classes/Mongrel/HeaderOut.html#M000035">new (Mongrel::HeaderOut)</a><br />
|
|
45
|
+
<a href="classes/Mongrel/DirHandler.html#M000023">new (Mongrel::DirHandler)</a><br />
|
|
46
|
+
<a href="classes/Mongrel/HttpRequest.html#M000062">new (Mongrel::HttpRequest)</a><br />
|
|
47
|
+
<a href="classes/Mongrel/HttpServer.html#M000029">new (Mongrel::HttpServer)</a><br />
|
|
48
|
+
<a href="classes/Mongrel/HttpParser.html#M000016">new (Mongrel::HttpParser)</a><br />
|
|
49
|
+
<a href="classes/Mongrel/HttpParser.html#M000022">nread (Mongrel::HttpParser)</a><br />
|
|
50
|
+
<a href="classes/Mongrel/Command/Base.html#M000003">options (Mongrel::Command::Base)</a><br />
|
|
51
|
+
<a href="classes/Mongrel/CGIWrapper.html#M000054">out (Mongrel::CGIWrapper)</a><br />
|
|
52
|
+
<a href="classes/Mongrel/Command/Registry.html#M000014">print_command_list (Mongrel::Command::Registry)</a><br />
|
|
53
|
+
<a href="classes/Mongrel/DirHandler.html#M000027">process (Mongrel::DirHandler)</a><br />
|
|
54
|
+
<a href="classes/Mongrel/Error404Handler.html#M000061">process (Mongrel::Error404Handler)</a><br />
|
|
55
|
+
<a href="classes/Mongrel/HttpHandler.html#M000037">process (Mongrel::HttpHandler)</a><br />
|
|
56
|
+
<a href="classes/RailsHandler.html#M000002">process (RailsHandler)</a><br />
|
|
57
|
+
<a href="classes/Mongrel/HttpServer.html#M000030">process_client (Mongrel::HttpServer)</a><br />
|
|
58
|
+
<a href="classes/Mongrel/HttpServer.html#M000032">register (Mongrel::HttpServer)</a><br />
|
|
59
|
+
<a href="classes/Mongrel/URIClassifier.html#M000048">register (Mongrel::URIClassifier)</a><br />
|
|
60
|
+
<a href="classes/Mongrel/HttpParser.html#M000017">reset (Mongrel::HttpParser)</a><br />
|
|
61
|
+
<a href="classes/Mongrel/HttpResponse.html#M000040">reset (Mongrel::HttpResponse)</a><br />
|
|
62
|
+
<a href="classes/Mongrel/URIClassifier.html#M000050">resolve (Mongrel::URIClassifier)</a><br />
|
|
63
|
+
<a href="classes/Mongrel/Command/Registry.html#M000015">run (Mongrel::Command::Registry)</a><br />
|
|
64
|
+
<a href="classes/Mongrel/Command/Base.html#M000007">run (Mongrel::Command::Base)</a><br />
|
|
65
|
+
<a href="classes/Mongrel/HttpServer.html#M000031">run (Mongrel::HttpServer)</a><br />
|
|
66
|
+
<a href="classes/Mongrel/HttpResponse.html#M000043">send_body (Mongrel::HttpResponse)</a><br />
|
|
67
|
+
<a href="classes/Mongrel/CGIWrapper.html#M000053">send_cookies (Mongrel::CGIWrapper)</a><br />
|
|
68
|
+
<a href="classes/Mongrel/DirHandler.html#M000025">send_dir_listing (Mongrel::DirHandler)</a><br />
|
|
69
|
+
<a href="classes/Mongrel/DirHandler.html#M000026">send_file (Mongrel::DirHandler)</a><br />
|
|
70
|
+
<a href="classes/Mongrel/HttpResponse.html#M000042">send_header (Mongrel::HttpResponse)</a><br />
|
|
71
|
+
<a href="classes/Mongrel/HttpResponse.html#M000041">send_status (Mongrel::HttpResponse)</a><br />
|
|
72
|
+
<a href="classes/Mongrel/HttpResponse.html#M000039">start (Mongrel::HttpResponse)</a><br />
|
|
73
|
+
<a href="classes/Mongrel/CGIWrapper.html#M000055">status (Mongrel::CGIWrapper)</a><br />
|
|
74
|
+
<a href="classes/Mongrel/CGIWrapper.html#M000058">stdinput (Mongrel::CGIWrapper)</a><br />
|
|
75
|
+
<a href="classes/Mongrel/CGIWrapper.html#M000059">stdoutput (Mongrel::CGIWrapper)</a><br />
|
|
76
|
+
<a href="classes/Mongrel/HttpServer.html#M000034">stop (Mongrel::HttpServer)</a><br />
|
|
77
|
+
<a href="classes/Mongrel/HttpServer.html#M000033">unregister (Mongrel::HttpServer)</a><br />
|
|
78
|
+
<a href="classes/Mongrel/URIClassifier.html#M000049">unregister (Mongrel::URIClassifier)</a><br />
|
|
79
|
+
<a href="classes/Mongrel/URIClassifier.html#M000045">uris (Mongrel::URIClassifier)</a><br />
|
|
80
|
+
<a href="classes/Mongrel/Command/Base.html#M000008">valid? (Mongrel::Command::Base)</a><br />
|
|
81
|
+
<a href="classes/Mongrel/Command/Base.html#M000011">valid_dir? (Mongrel::Command::Base)</a><br />
|
|
82
|
+
<a href="classes/Mongrel/Command/Base.html#M000009">valid_exists? (Mongrel::Command::Base)</a><br />
|
|
83
|
+
<a href="classes/Mongrel/Command/Base.html#M000010">valid_file? (Mongrel::Command::Base)</a><br />
|
|
84
|
+
<a href="classes/Mongrel/Command/Base.html#M000005">validate (Mongrel::Command::Base)</a><br />
|
|
52
85
|
</div>
|
|
53
86
|
</div>
|
|
54
87
|
</body>
|
data/lib/mongrel/command.rb
CHANGED
|
@@ -32,7 +32,7 @@ module Mongrel
|
|
|
32
32
|
# Called by the subclass to setup the command and parse the argv arguments.
|
|
33
33
|
# The call is destructive on argv since it uses the OptionParser#parse! function.
|
|
34
34
|
def initialize(options={})
|
|
35
|
-
argv = options[:argv]
|
|
35
|
+
argv = options[:argv] || []
|
|
36
36
|
@opt = OptionParser.new
|
|
37
37
|
@valid = true
|
|
38
38
|
# this is retarded, but it has to be done this way because -h and -v exit
|
|
@@ -55,7 +55,7 @@ module Mongrel
|
|
|
55
55
|
end
|
|
56
56
|
end
|
|
57
57
|
|
|
58
|
-
@opt.parse!
|
|
58
|
+
@opt.parse! argv
|
|
59
59
|
end
|
|
60
60
|
|
|
61
61
|
# Returns true/false depending on whether the command is configured properly.
|
|
@@ -113,8 +113,8 @@ module Mongrel
|
|
|
113
113
|
|
|
114
114
|
# Builds a list of possible commands from the Command derivates list
|
|
115
115
|
def commands
|
|
116
|
-
pmgr =
|
|
117
|
-
list = pmgr.available["/commands"]
|
|
116
|
+
pmgr = GemPlugin::Manager.instance
|
|
117
|
+
list = pmgr.available["/commands"].keys
|
|
118
118
|
return list.sort
|
|
119
119
|
end
|
|
120
120
|
|
|
@@ -144,7 +144,7 @@ module Mongrel
|
|
|
144
144
|
|
|
145
145
|
# command exists, set it up and validate it
|
|
146
146
|
begin
|
|
147
|
-
command =
|
|
147
|
+
command = GemPlugin::Manager.instance.create("/commands/#{cmd_name}", :argv => args)
|
|
148
148
|
rescue
|
|
149
149
|
STDERR.puts "INVALID COMMAND: #$!"
|
|
150
150
|
print_command_list
|
data/lib/mongrel/plugins.rb
CHANGED
|
@@ -1,156 +1,7 @@
|
|
|
1
|
-
require '
|
|
2
|
-
|
|
3
|
-
module Mongrel
|
|
4
|
-
|
|
5
|
-
# Implements the main method of managing plugins for Mongrel.
|
|
6
|
-
# "Plugins" in this sense are any classes which get registered
|
|
7
|
-
# with Mongrel for possible use when it's operating. These can
|
|
8
|
-
# be Handlers, Commands, or other classes. When you create a
|
|
9
|
-
# Plugin you register it into a URI-like namespace that makes
|
|
10
|
-
# it easy for you (and others) to reference it later during
|
|
11
|
-
# configuration.
|
|
12
|
-
#
|
|
13
|
-
# PluginManager is used as nothing more than a holder of all the
|
|
14
|
-
# plugins that have registered themselves. Let's say you have:
|
|
15
|
-
#
|
|
16
|
-
# class StopNow < Plugin "/commands"
|
|
17
|
-
# ...
|
|
18
|
-
# end
|
|
19
|
-
#
|
|
20
|
-
# Then you can get at this plugin with:
|
|
21
|
-
#
|
|
22
|
-
# cmd = PluginManager.create("/commands/stopnow")
|
|
23
|
-
#
|
|
24
|
-
# The funky syntax for StopNow is a weird trick borrowed from
|
|
25
|
-
# the Camping framework. See the Mongrel::Plugin *function* (yes,
|
|
26
|
-
# function). What this basically does is register it
|
|
27
|
-
# into the namespace for plugins at /commands. You could go
|
|
28
|
-
# as arbitrarily nested as you like.
|
|
29
|
-
#
|
|
30
|
-
# Why this strange almost second namespace? Why not just use
|
|
31
|
-
# the ObjectSpace and/or Modules? The main reason is speed and
|
|
32
|
-
# to avoid cluttering the Ruby namespace with what is really a
|
|
33
|
-
# configuration statement. This lets implementors put code
|
|
34
|
-
# into the Ruby structuring they need, and still have Plugins
|
|
35
|
-
# available to Mongrel via simple URI-like names.
|
|
36
|
-
#
|
|
37
|
-
# The alternative (as pluginfactory does it) is to troll through
|
|
38
|
-
# ObjectSpace looking for stuff that *might* be plugins every time
|
|
39
|
-
# one is needed. This alternative also means that you are stuck
|
|
40
|
-
# naming your commands in specific ways and putting them in specific
|
|
41
|
-
# modules in order to configure how Mongrel should use them.
|
|
42
|
-
#
|
|
43
|
-
# One downside to this is that you need to subclass plugin to
|
|
44
|
-
# make it work. In this case use mixins to add other functionality.
|
|
45
|
-
class PluginManager
|
|
46
|
-
include Singleton
|
|
47
|
-
|
|
48
|
-
def initialize
|
|
49
|
-
@plugins = URIClassifier.new
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
# Tell the PluginManager to scan the given path (recursively)
|
|
53
|
-
# and load the *.rb files found there. This is how you'd
|
|
54
|
-
# setup your own plugin directory.
|
|
55
|
-
def load(path)
|
|
56
|
-
Dir.chdir(path) do
|
|
57
|
-
Dir["**/*.rb"].each do |rbfile|
|
|
58
|
-
STDERR.puts "Loading plugins from #{rbfile}"
|
|
59
|
-
require rbfile
|
|
60
|
-
end
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
# Not necessary for you to call directly, but this is
|
|
65
|
-
# how Mongrel::PluginBase.inherited actually adds a
|
|
66
|
-
# plugin to a category.
|
|
67
|
-
def register(category, name, klass)
|
|
68
|
-
cat, ignored, map = @plugins.resolve(category)
|
|
69
|
-
|
|
70
|
-
if not cat or ignored.length > 0
|
|
71
|
-
map = {name => klass}
|
|
72
|
-
@plugins.register(category, map)
|
|
73
|
-
elsif not map
|
|
74
|
-
raise "Unknown category #{category}"
|
|
75
|
-
else
|
|
76
|
-
map[name] = klass
|
|
77
|
-
end
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
# Resolves the given name (should include /category/name) to
|
|
81
|
-
# find the plugin class and create an instance. It uses
|
|
82
|
-
# the same URIClassifier that the rest of Mongrel does so it
|
|
83
|
-
# is fast.
|
|
84
|
-
def create(name, options = {})
|
|
85
|
-
category, plugin, map = @plugins.resolve(name)
|
|
86
|
-
|
|
87
|
-
if category and plugin and plugin.length > 0
|
|
88
|
-
map[plugin].new(options)
|
|
89
|
-
else
|
|
90
|
-
raise "Plugin #{name} does not exist"
|
|
91
|
-
end
|
|
92
|
-
end
|
|
93
|
-
|
|
94
|
-
# Returns a map of URIs->[handlers] that you can
|
|
95
|
-
# use to investigate available handlers.
|
|
96
|
-
def available
|
|
97
|
-
map = {}
|
|
98
|
-
@plugins.uris.each do |u|
|
|
99
|
-
cat, name, plugins = @plugins.resolve(u)
|
|
100
|
-
map[cat] ||= []
|
|
101
|
-
map[cat] += plugins.keys
|
|
102
|
-
end
|
|
103
|
-
|
|
104
|
-
return map
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
end
|
|
108
|
-
|
|
109
|
-
# This base class for plugins reallys does nothing
|
|
110
|
-
# more than wire up the new class into the right category.
|
|
111
|
-
# It is not thread-safe yet but will be soon.
|
|
112
|
-
class PluginBase
|
|
113
|
-
|
|
114
|
-
attr_reader :options
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
# See Mongrel::Plugin for an explanation.
|
|
118
|
-
def PluginBase.inherited(klass)
|
|
119
|
-
name = "/" + klass.to_s.downcase
|
|
120
|
-
PluginManager.instance.register(@@category, name, klass)
|
|
121
|
-
@@category = nil
|
|
122
|
-
end
|
|
123
|
-
|
|
124
|
-
# See Mongrel::Plugin for an explanation.
|
|
125
|
-
def PluginBase.category=(category)
|
|
126
|
-
@@category = category
|
|
127
|
-
end
|
|
128
|
-
|
|
129
|
-
def initialize(options = {})
|
|
130
|
-
@options = options
|
|
131
|
-
end
|
|
132
|
-
|
|
133
|
-
end
|
|
134
|
-
|
|
135
|
-
# This nifty function works with the PluginBase to give you
|
|
136
|
-
# the syntax:
|
|
137
|
-
#
|
|
138
|
-
# class MyThing < Plugin "/things"
|
|
139
|
-
# ...
|
|
140
|
-
# end
|
|
141
|
-
#
|
|
142
|
-
# What it does is temporarily sets the PluginBase.category, and then
|
|
143
|
-
# returns PluginBase. Since the next immediate thing Ruby does is
|
|
144
|
-
# use this returned class to create the new class, PluginBase.inherited
|
|
145
|
-
# gets called. PluginBase.inherited then uses the set category, class name,
|
|
146
|
-
# and class to register the plugin in the right way.
|
|
147
|
-
def Mongrel::Plugin(c)
|
|
148
|
-
PluginBase.category = c
|
|
149
|
-
PluginBase
|
|
150
|
-
end
|
|
151
|
-
|
|
152
|
-
end
|
|
1
|
+
require 'rubygems'
|
|
2
|
+
require_gem 'mongrel_plugin'
|
|
153
3
|
|
|
4
|
+
# file is just a stub that makes sure the mongrel_plugins gem is loaded and ready
|
|
154
5
|
|
|
155
6
|
|
|
156
7
|
|