serverside 0.1.59 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +21 -1
- data/Rakefile +69 -40
- data/bin/serverside +7 -15
- data/doc/rdoc/classes/Daemon.html +18 -18
- data/doc/rdoc/classes/Daemon/Base.html +8 -6
- data/doc/rdoc/classes/Daemon/Cluster.html +36 -36
- data/doc/rdoc/classes/Daemon/Cluster/PidFile.html +20 -18
- data/doc/rdoc/classes/Daemon/PidFile.html +12 -12
- data/doc/rdoc/classes/Object.html +151 -0
- data/doc/rdoc/classes/Proc.html +151 -0
- data/doc/rdoc/classes/ServerSide.html +69 -0
- data/doc/rdoc/classes/ServerSide/Application.html +43 -11
- data/doc/rdoc/classes/ServerSide/Application/Base.html +30 -30
- data/doc/rdoc/classes/ServerSide/Application/Static.html +20 -18
- data/doc/rdoc/classes/ServerSide/Connection.html +3 -3
- data/doc/rdoc/classes/ServerSide/Connection/Base.html +142 -99
- data/doc/rdoc/classes/ServerSide/Connection/Const.html +11 -13
- data/doc/rdoc/classes/ServerSide/Connection/Router.html +464 -0
- data/doc/rdoc/classes/ServerSide/Server.html +8 -6
- data/doc/rdoc/classes/ServerSide/StaticFiles.html +75 -43
- data/doc/rdoc/classes/ServerSide/StaticFiles/Const.html +5 -0
- data/doc/rdoc/classes/String.html +20 -18
- data/doc/rdoc/classes/Symbol.html +2 -0
- data/doc/rdoc/created.rid +1 -1
- data/doc/rdoc/files/CHANGELOG.html +32 -2
- data/doc/rdoc/files/lib/serverside/application_rb.html +1 -1
- data/doc/rdoc/files/lib/serverside/connection_rb.html +1 -1
- data/doc/rdoc/files/lib/serverside/core_ext_rb.html +1 -1
- data/doc/rdoc/files/lib/serverside/daemon_rb.html +1 -1
- data/doc/rdoc/files/lib/serverside/routing_rb.html +101 -0
- data/doc/rdoc/files/lib/serverside/static_rb.html +1 -1
- data/doc/rdoc/fr_class_index.html +3 -1
- data/doc/rdoc/fr_file_index.html +1 -0
- data/doc/rdoc/fr_method_index.html +49 -33
- data/lib/serverside/application.rb +17 -4
- data/lib/serverside/connection.rb +23 -3
- data/lib/serverside/core_ext.rb +16 -1
- data/lib/serverside/routing.rb +119 -0
- data/lib/serverside/static.rb +9 -23
- data/test/functional/routing_server.rb +14 -0
- data/test/functional/routing_server_test.rb +41 -0
- data/test/functional/static_server_test.rb +8 -2
- data/test/unit/connection_test.rb +13 -0
- data/test/unit/core_ext_test.rb +14 -0
- data/test/unit/routing_test.rb +171 -0
- data/test/unit/static_test.rb +34 -1
- metadata +10 -3
- data/doc/rdoc/classes/ServerSide/Connection/Static.html +0 -172
@@ -65,7 +65,9 @@
|
|
65
65
|
<tr class="top-aligned-row">
|
66
66
|
<td><strong>Parent:</strong></td>
|
67
67
|
<td>
|
68
|
+
<a href="../Object.html">
|
68
69
|
Object
|
70
|
+
</a>
|
69
71
|
</td>
|
70
72
|
</tr>
|
71
73
|
</table>
|
@@ -95,7 +97,7 @@ techniques.
|
|
95
97
|
<h3 class="section-bar">Methods</h3>
|
96
98
|
|
97
99
|
<div class="name-list">
|
98
|
-
<a href="#
|
100
|
+
<a href="#M000050">new</a>
|
99
101
|
</div>
|
100
102
|
</div>
|
101
103
|
|
@@ -117,11 +119,11 @@ techniques.
|
|
117
119
|
<div id="methods">
|
118
120
|
<h3 class="section-bar">Public Class methods</h3>
|
119
121
|
|
120
|
-
<div id="method-
|
121
|
-
<a name="
|
122
|
+
<div id="method-M000050" class="method-detail">
|
123
|
+
<a name="M000050"></a>
|
122
124
|
|
123
125
|
<div class="method-heading">
|
124
|
-
<a href="#
|
126
|
+
<a href="#M000050" class="method-signature">
|
125
127
|
<span class="method-name">new</span><span class="method-args">(host, port, connection_class)</span>
|
126
128
|
</a>
|
127
129
|
</div>
|
@@ -133,8 +135,8 @@ loop. When a new connection is accepted, a new instance of the the supplied
|
|
133
135
|
connection class is instantiated and passed the connection for processing.
|
134
136
|
</p>
|
135
137
|
<p><a class="source-toggle" href="#"
|
136
|
-
onclick="toggleCode('
|
137
|
-
<div class="method-source-code" id="
|
138
|
+
onclick="toggleCode('M000050-source');return false;">[Source]</a></p>
|
139
|
+
<div class="method-source-code" id="M000050-source">
|
138
140
|
<pre>
|
139
141
|
<span class="ruby-comment cmt"># File lib/serverside/server.rb, line 12</span>
|
140
142
|
12: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">host</span>, <span class="ruby-identifier">port</span>, <span class="ruby-identifier">connection_class</span>)
|
@@ -75,8 +75,7 @@
|
|
75
75
|
<div id="description">
|
76
76
|
<p>
|
77
77
|
This module provides functionality for serving files and directory listings
|
78
|
-
over HTTP. It is mainly used by
|
79
|
-
href="Connection/Static.html">ServerSide::Connection::Static</a>.
|
78
|
+
over HTTP. It is mainly used by ServerSide::Connection::Static.
|
80
79
|
</p>
|
81
80
|
|
82
81
|
</div>
|
@@ -88,8 +87,9 @@ href="Connection/Static.html">ServerSide::Connection::Static</a>.
|
|
88
87
|
<h3 class="section-bar">Methods</h3>
|
89
88
|
|
90
89
|
<div class="name-list">
|
91
|
-
<a href="#
|
92
|
-
<a href="#
|
90
|
+
<a href="#M000025">serve_dir</a>
|
91
|
+
<a href="#M000024">serve_file</a>
|
92
|
+
<a href="#M000026">serve_static</a>
|
93
93
|
</div>
|
94
94
|
</div>
|
95
95
|
|
@@ -117,11 +117,11 @@ href="Connection/Static.html">ServerSide::Connection::Static</a>.
|
|
117
117
|
<div id="methods">
|
118
118
|
<h3 class="section-bar">Public Instance methods</h3>
|
119
119
|
|
120
|
-
<div id="method-
|
121
|
-
<a name="
|
120
|
+
<div id="method-M000025" class="method-detail">
|
121
|
+
<a name="M000025"></a>
|
122
122
|
|
123
123
|
<div class="method-heading">
|
124
|
-
<a href="#
|
124
|
+
<a href="#M000025" class="method-signature">
|
125
125
|
<span class="method-name">serve_dir</span><span class="method-args">(dir)</span>
|
126
126
|
</a>
|
127
127
|
</div>
|
@@ -131,27 +131,27 @@ href="Connection/Static.html">ServerSide::Connection::Static</a>.
|
|
131
131
|
Serves a directory listing over HTTP in the form of an HTML page.
|
132
132
|
</p>
|
133
133
|
<p><a class="source-toggle" href="#"
|
134
|
-
onclick="toggleCode('
|
135
|
-
<div class="method-source-code" id="
|
134
|
+
onclick="toggleCode('M000025-source');return false;">[Source]</a></p>
|
135
|
+
<div class="method-source-code" id="M000025-source">
|
136
136
|
<pre>
|
137
|
-
<span class="ruby-comment cmt"># File lib/serverside/static.rb, line
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
137
|
+
<span class="ruby-comment cmt"># File lib/serverside/static.rb, line 63</span>
|
138
|
+
63: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">serve_dir</span>(<span class="ruby-identifier">dir</span>)
|
139
|
+
64: <span class="ruby-identifier">html</span> = (<span class="ruby-constant">Const</span><span class="ruby-operator">::</span><span class="ruby-constant">DirListingStart</span> <span class="ruby-operator">%</span> [<span class="ruby-ivar">@path</span>, <span class="ruby-ivar">@path</span>]) <span class="ruby-operator">+</span>
|
140
|
+
65: <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">entries</span>(<span class="ruby-identifier">dir</span>).<span class="ruby-identifier">inject</span>(<span class="ruby-value str">''</span>) {<span class="ruby-operator">|</span><span class="ruby-identifier">m</span>, <span class="ruby-identifier">fn</span><span class="ruby-operator">|</span>
|
141
|
+
66: (<span class="ruby-identifier">fn</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'.'</span>) <span class="ruby-operator">?</span> <span class="ruby-identifier">m</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">m</span> <span class="ruby-operator"><<</span> <span class="ruby-constant">Const</span><span class="ruby-operator">::</span><span class="ruby-constant">DirListing</span> <span class="ruby-operator">%</span> [<span class="ruby-ivar">@path</span><span class="ruby-operator">/</span><span class="ruby-identifier">fn</span>, <span class="ruby-identifier">fn</span>]
|
142
|
+
67: } <span class="ruby-operator">+</span> <span class="ruby-constant">Const</span><span class="ruby-operator">::</span><span class="ruby-constant">DirListingStop</span>
|
143
|
+
68: <span class="ruby-identifier">send_response</span>(<span class="ruby-value">200</span>, <span class="ruby-value str">'text/html'</span>, <span class="ruby-identifier">html</span>)
|
144
|
+
69: <span class="ruby-keyword kw">end</span>
|
145
145
|
</pre>
|
146
146
|
</div>
|
147
147
|
</div>
|
148
148
|
</div>
|
149
149
|
|
150
|
-
<div id="method-
|
151
|
-
<a name="
|
150
|
+
<div id="method-M000024" class="method-detail">
|
151
|
+
<a name="M000024"></a>
|
152
152
|
|
153
153
|
<div class="method-heading">
|
154
|
-
<a href="#
|
154
|
+
<a href="#M000024" class="method-signature">
|
155
155
|
<span class="method-name">serve_file</span><span class="method-args">(fn)</span>
|
156
156
|
</a>
|
157
157
|
</div>
|
@@ -164,30 +164,62 @@ the file’s current ETag. If there’s a match, a 304 response is
|
|
164
164
|
rendered.
|
165
165
|
</p>
|
166
166
|
<p><a class="source-toggle" href="#"
|
167
|
-
onclick="toggleCode('
|
168
|
-
<div class="method-source-code" id="
|
167
|
+
onclick="toggleCode('M000024-source');return false;">[Source]</a></p>
|
168
|
+
<div class="method-source-code" id="M000024-source">
|
169
169
|
<pre>
|
170
|
-
<span class="ruby-comment cmt"># File lib/serverside/static.rb, line
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
170
|
+
<span class="ruby-comment cmt"># File lib/serverside/static.rb, line 41</span>
|
171
|
+
41: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">serve_file</span>(<span class="ruby-identifier">fn</span>)
|
172
|
+
42: <span class="ruby-identifier">stat</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">stat</span>(<span class="ruby-identifier">fn</span>)
|
173
|
+
43: <span class="ruby-identifier">etag</span> = (<span class="ruby-constant">Const</span><span class="ruby-operator">::</span><span class="ruby-constant">ETagFormat</span> <span class="ruby-operator">%</span> [<span class="ruby-identifier">stat</span>.<span class="ruby-identifier">mtime</span>.<span class="ruby-identifier">to_i</span>, <span class="ruby-identifier">stat</span>.<span class="ruby-identifier">size</span>, <span class="ruby-identifier">stat</span>.<span class="ruby-identifier">ino</span>]).<span class="ruby-identifier">freeze</span>
|
174
|
+
44: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">etag</span> <span class="ruby-operator">==</span> <span class="ruby-ivar">@headers</span>[<span class="ruby-constant">Const</span><span class="ruby-operator">::</span><span class="ruby-constant">IfNoneMatch</span>]
|
175
|
+
45: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@@static_files</span>[<span class="ruby-identifier">fn</span>] <span class="ruby-operator">&&</span> (<span class="ruby-ivar">@@static_files</span>[<span class="ruby-identifier">fn</span>][<span class="ruby-value">0</span>] <span class="ruby-operator">==</span> <span class="ruby-identifier">etag</span>)
|
176
|
+
46: <span class="ruby-identifier">content</span> = <span class="ruby-ivar">@@static_files</span>[<span class="ruby-identifier">fn</span>][<span class="ruby-value">1</span>]
|
177
|
+
47: <span class="ruby-keyword kw">else</span>
|
178
|
+
48: <span class="ruby-identifier">content</span> = <span class="ruby-constant">IO</span>.<span class="ruby-identifier">read</span>(<span class="ruby-identifier">fn</span>).<span class="ruby-identifier">freeze</span>
|
179
|
+
49: <span class="ruby-ivar">@@static_files</span>[<span class="ruby-identifier">fn</span>] = [<span class="ruby-identifier">etag</span>.<span class="ruby-identifier">freeze</span>, <span class="ruby-identifier">content</span>]
|
180
|
+
50: <span class="ruby-keyword kw">end</span>
|
181
|
+
51:
|
182
|
+
52: <span class="ruby-identifier">send_response</span>(<span class="ruby-value">200</span>, <span class="ruby-ivar">@@mime_types</span>[<span class="ruby-constant">File</span>.<span class="ruby-identifier">extname</span>(<span class="ruby-identifier">fn</span>)], <span class="ruby-identifier">content</span>, <span class="ruby-identifier">stat</span>.<span class="ruby-identifier">size</span>,
|
183
|
+
53: {<span class="ruby-constant">Const</span><span class="ruby-operator">::</span><span class="ruby-constant">ETag</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">etag</span>, <span class="ruby-constant">Const</span><span class="ruby-operator">::</span><span class="ruby-constant">CacheControl</span> =<span class="ruby-operator">></span> <span class="ruby-constant">Const</span><span class="ruby-operator">::</span><span class="ruby-constant">MaxAge</span>})
|
184
|
+
54: <span class="ruby-keyword kw">else</span>
|
185
|
+
55: <span class="ruby-ivar">@conn</span> <span class="ruby-operator"><<</span> ((<span class="ruby-ivar">@persistent</span> <span class="ruby-operator">?</span> <span class="ruby-constant">Const</span><span class="ruby-operator">::</span><span class="ruby-constant">NotModifiedPersist</span> <span class="ruby-operator">:</span>
|
186
|
+
56: <span class="ruby-constant">Const</span><span class="ruby-operator">::</span><span class="ruby-constant">NotModifiedClose</span>) <span class="ruby-operator">%</span> <span class="ruby-identifier">etag</span>)
|
187
|
+
57: <span class="ruby-keyword kw">end</span>
|
188
|
+
58: <span class="ruby-keyword kw">rescue</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">e</span>
|
189
|
+
59: <span class="ruby-identifier">send_response</span>(<span class="ruby-value">404</span>, <span class="ruby-constant">Const</span><span class="ruby-operator">::</span><span class="ruby-constant">TextPlain</span>, <span class="ruby-value str">'Error reading file.'</span>)
|
190
|
+
60: <span class="ruby-keyword kw">end</span>
|
191
|
+
</pre>
|
192
|
+
</div>
|
193
|
+
</div>
|
194
|
+
</div>
|
195
|
+
|
196
|
+
<div id="method-M000026" class="method-detail">
|
197
|
+
<a name="M000026"></a>
|
198
|
+
|
199
|
+
<div class="method-heading">
|
200
|
+
<a href="#M000026" class="method-signature">
|
201
|
+
<span class="method-name">serve_static</span><span class="method-args">(path)</span>
|
202
|
+
</a>
|
203
|
+
</div>
|
204
|
+
|
205
|
+
<div class="method-description">
|
206
|
+
<p>
|
207
|
+
Serves static files and directory listings.
|
208
|
+
</p>
|
209
|
+
<p><a class="source-toggle" href="#"
|
210
|
+
onclick="toggleCode('M000026-source');return false;">[Source]</a></p>
|
211
|
+
<div class="method-source-code" id="M000026-source">
|
212
|
+
<pre>
|
213
|
+
<span class="ruby-comment cmt"># File lib/serverside/static.rb, line 72</span>
|
214
|
+
72: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">serve_static</span>(<span class="ruby-identifier">path</span>)
|
215
|
+
73: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">file?</span>(<span class="ruby-identifier">path</span>)
|
216
|
+
74: <span class="ruby-identifier">serve_file</span>(<span class="ruby-identifier">path</span>)
|
217
|
+
75: <span class="ruby-keyword kw">elsif</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">directory?</span>(<span class="ruby-identifier">path</span>)
|
218
|
+
76: <span class="ruby-identifier">serve_dir</span>(<span class="ruby-identifier">path</span>)
|
219
|
+
77: <span class="ruby-keyword kw">else</span>
|
220
|
+
78: <span class="ruby-identifier">send_response</span>(<span class="ruby-value">404</span>, <span class="ruby-value str">'text'</span>, <span class="ruby-constant">Const</span><span class="ruby-operator">::</span><span class="ruby-constant">FileNotFound</span>)
|
221
|
+
79: <span class="ruby-keyword kw">end</span>
|
222
|
+
80: <span class="ruby-keyword kw">end</span>
|
191
223
|
</pre>
|
192
224
|
</div>
|
193
225
|
</div>
|
@@ -156,6 +156,11 @@ Frozen constants to be used by the module.
|
|
156
156
|
<td>=</td>
|
157
157
|
<td class="context-item-value">'</body></html>'.freeze</td>
|
158
158
|
</tr>
|
159
|
+
<tr class="top-aligned-row context-row">
|
160
|
+
<td class="context-item-name">FileNotFound</td>
|
161
|
+
<td>=</td>
|
162
|
+
<td class="context-item-value">'File not found.'.freeze</td>
|
163
|
+
</tr>
|
159
164
|
</table>
|
160
165
|
</div>
|
161
166
|
</div>
|
@@ -65,7 +65,9 @@
|
|
65
65
|
<tr class="top-aligned-row">
|
66
66
|
<td><strong>Parent:</strong></td>
|
67
67
|
<td>
|
68
|
+
<a href="Object.html">
|
68
69
|
Object
|
70
|
+
</a>
|
69
71
|
</td>
|
70
72
|
</tr>
|
71
73
|
</table>
|
@@ -92,9 +94,9 @@
|
|
92
94
|
<h3 class="section-bar">Methods</h3>
|
93
95
|
|
94
96
|
<div class="name-list">
|
95
|
-
<a href="#
|
96
|
-
<a href="#
|
97
|
-
<a href="#
|
97
|
+
<a href="#M000006">/</a>
|
98
|
+
<a href="#M000004">uri_escape</a>
|
99
|
+
<a href="#M000005">uri_unescape</a>
|
98
100
|
</div>
|
99
101
|
</div>
|
100
102
|
|
@@ -116,11 +118,11 @@
|
|
116
118
|
<div id="methods">
|
117
119
|
<h3 class="section-bar">Public Instance methods</h3>
|
118
120
|
|
119
|
-
<div id="method-
|
120
|
-
<a name="
|
121
|
+
<div id="method-M000006" class="method-detail">
|
122
|
+
<a name="M000006"></a>
|
121
123
|
|
122
124
|
<div class="method-heading">
|
123
|
-
<a href="#
|
125
|
+
<a href="#M000006" class="method-signature">
|
124
126
|
<span class="method-name">/</span><span class="method-args">(o)</span>
|
125
127
|
</a>
|
126
128
|
</div>
|
@@ -130,8 +132,8 @@
|
|
130
132
|
Concatenates a path (do we really need this sugar?)
|
131
133
|
</p>
|
132
134
|
<p><a class="source-toggle" href="#"
|
133
|
-
onclick="toggleCode('
|
134
|
-
<div class="method-source-code" id="
|
135
|
+
onclick="toggleCode('M000006-source');return false;">[Source]</a></p>
|
136
|
+
<div class="method-source-code" id="M000006-source">
|
135
137
|
<pre>
|
136
138
|
<span class="ruby-comment cmt"># File lib/serverside/core_ext.rb, line 15</span>
|
137
139
|
15: <span class="ruby-keyword kw">def</span> <span class="ruby-operator">/</span>(<span class="ruby-identifier">o</span>)
|
@@ -142,11 +144,11 @@ Concatenates a path (do we really need this sugar?)
|
|
142
144
|
</div>
|
143
145
|
</div>
|
144
146
|
|
145
|
-
<div id="method-
|
146
|
-
<a name="
|
147
|
+
<div id="method-M000004" class="method-detail">
|
148
|
+
<a name="M000004"></a>
|
147
149
|
|
148
150
|
<div class="method-heading">
|
149
|
-
<a href="#
|
151
|
+
<a href="#M000004" class="method-signature">
|
150
152
|
<span class="method-name">uri_escape</span><span class="method-args">()</span>
|
151
153
|
</a>
|
152
154
|
</div>
|
@@ -156,8 +158,8 @@ Concatenates a path (do we really need this sugar?)
|
|
156
158
|
Encodes a normal string to a URI string.
|
157
159
|
</p>
|
158
160
|
<p><a class="source-toggle" href="#"
|
159
|
-
onclick="toggleCode('
|
160
|
-
<div class="method-source-code" id="
|
161
|
+
onclick="toggleCode('M000004-source');return false;">[Source]</a></p>
|
162
|
+
<div class="method-source-code" id="M000004-source">
|
161
163
|
<pre>
|
162
164
|
<span class="ruby-comment cmt"># File lib/serverside/core_ext.rb, line 4</span>
|
163
165
|
4: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">uri_escape</span>
|
@@ -169,11 +171,11 @@ Encodes a normal string to a URI string.
|
|
169
171
|
</div>
|
170
172
|
</div>
|
171
173
|
|
172
|
-
<div id="method-
|
173
|
-
<a name="
|
174
|
+
<div id="method-M000005" class="method-detail">
|
175
|
+
<a name="M000005"></a>
|
174
176
|
|
175
177
|
<div class="method-heading">
|
176
|
-
<a href="#
|
178
|
+
<a href="#M000005" class="method-signature">
|
177
179
|
<span class="method-name">uri_unescape</span><span class="method-args">()</span>
|
178
180
|
</a>
|
179
181
|
</div>
|
@@ -183,8 +185,8 @@ Encodes a normal string to a URI string.
|
|
183
185
|
Decodes a URI string to a normal string.
|
184
186
|
</p>
|
185
187
|
<p><a class="source-toggle" href="#"
|
186
|
-
onclick="toggleCode('
|
187
|
-
<div class="method-source-code" id="
|
188
|
+
onclick="toggleCode('M000005-source');return false;">[Source]</a></p>
|
189
|
+
<div class="method-source-code" id="M000005-source">
|
188
190
|
<pre>
|
189
191
|
<span class="ruby-comment cmt"># File lib/serverside/core_ext.rb, line 10</span>
|
190
192
|
10: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">uri_unescape</span>
|
data/doc/rdoc/created.rid
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
Mon Aug 28 10:58:48 IDT 2006
|
@@ -56,7 +56,7 @@
|
|
56
56
|
</tr>
|
57
57
|
<tr class="top-aligned-row">
|
58
58
|
<td><strong>Last Update:</strong></td>
|
59
|
-
<td>Mon Aug
|
59
|
+
<td>Mon Aug 28 10:58:09 IDT 2006</td>
|
60
60
|
</tr>
|
61
61
|
</table>
|
62
62
|
</div>
|
@@ -70,9 +70,39 @@
|
|
70
70
|
|
71
71
|
<div id="description">
|
72
72
|
<p>
|
73
|
-
|
73
|
+
*0.2.0*
|
74
74
|
</p>
|
75
75
|
<ul>
|
76
|
+
<li>Changed substition of embedded parameters from (.*) to (.+).
|
77
|
+
|
78
|
+
</li>
|
79
|
+
<li>Added rule compilation after setting the default handler.
|
80
|
+
|
81
|
+
</li>
|
82
|
+
<li>Added doc_rforge rake task (for updating the docs on rubyforge.org).
|
83
|
+
|
84
|
+
</li>
|
85
|
+
<li>Added stats and svn_add rake tasks.
|
86
|
+
|
87
|
+
</li>
|
88
|
+
<li>Fixed routing unit tests.
|
89
|
+
|
90
|
+
</li>
|
91
|
+
<li>Added Router.has_routes? method.
|
92
|
+
|
93
|
+
</li>
|
94
|
+
<li>Finished unit tests for routing.
|
95
|
+
|
96
|
+
</li>
|
97
|
+
<li>Added Connection::Base.redirect.
|
98
|
+
|
99
|
+
</li>
|
100
|
+
<li>Added routing code from /research/routing, implemented functional test.
|
101
|
+
|
102
|
+
</li>
|
103
|
+
<li>Learned about the (?:) modifier and fixed the request parsing regexp.
|
104
|
+
|
105
|
+
</li>
|
76
106
|
<li>Added a profiled version of a static server -
|
77
107
|
/test/functional/static_profile.rb.
|
78
108
|
|
@@ -0,0 +1,101 @@
|
|
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: routing.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>routing.rb</h1>
|
51
|
+
<table class="header-table">
|
52
|
+
<tr class="top-aligned-row">
|
53
|
+
<td><strong>Path:</strong></td>
|
54
|
+
<td>lib/serverside/routing.rb
|
55
|
+
</td>
|
56
|
+
</tr>
|
57
|
+
<tr class="top-aligned-row">
|
58
|
+
<td><strong>Last Update:</strong></td>
|
59
|
+
<td>Mon Aug 28 10:43:50 IDT 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
|
+
|
73
|
+
</div>
|
74
|
+
|
75
|
+
|
76
|
+
</div>
|
77
|
+
|
78
|
+
|
79
|
+
<!-- if includes -->
|
80
|
+
|
81
|
+
<div id="section">
|
82
|
+
|
83
|
+
|
84
|
+
|
85
|
+
|
86
|
+
|
87
|
+
|
88
|
+
|
89
|
+
|
90
|
+
<!-- if method_list -->
|
91
|
+
|
92
|
+
|
93
|
+
</div>
|
94
|
+
|
95
|
+
|
96
|
+
<div id="validator-badges">
|
97
|
+
<p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
|
98
|
+
</div>
|
99
|
+
|
100
|
+
</body>
|
101
|
+
</html>
|