serverside 0.2.0 → 0.2.5
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/CHANGELOG +26 -0
- data/README +39 -22
- data/Rakefile +18 -2
- data/bin/serverside +21 -5
- data/doc/rdoc/classes/ServerSide/Application.html +12 -19
- data/doc/rdoc/classes/ServerSide/Connection/Base.html +203 -116
- data/doc/rdoc/classes/ServerSide/Connection/Const.html +35 -5
- data/doc/rdoc/classes/ServerSide/Connection/Router.html +107 -78
- data/doc/rdoc/classes/ServerSide/Server.html +1 -1
- data/doc/rdoc/classes/ServerSide/StaticFiles/Const.html +10 -0
- data/doc/rdoc/classes/ServerSide/StaticFiles.html +73 -43
- data/doc/rdoc/classes/ServerSide/Template.html +200 -0
- data/doc/rdoc/classes/ServerSide.html +13 -8
- data/doc/rdoc/created.rid +1 -1
- data/doc/rdoc/files/CHANGELOG.html +44 -1
- data/doc/rdoc/files/README.html +63 -35
- 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/routing_rb.html +1 -1
- data/doc/rdoc/files/lib/serverside/server_rb.html +1 -1
- data/doc/rdoc/files/lib/serverside/static_rb.html +1 -1
- data/doc/rdoc/files/lib/serverside/template_rb.html +108 -0
- data/doc/rdoc/fr_class_index.html +1 -2
- data/doc/rdoc/fr_file_index.html +1 -0
- data/doc/rdoc/fr_method_index.html +18 -16
- data/lib/serverside/application.rb +0 -28
- data/lib/serverside/connection.rb +38 -12
- data/lib/serverside/routing.rb +23 -2
- data/lib/serverside/server.rb +1 -1
- data/lib/serverside/static.rb +12 -0
- data/lib/serverside/template.rb +36 -0
- data/test/functional/primitive_static_server_test.rb +26 -2
- data/test/functional/static_rfuzz.rb +3 -39
- data/test/spec/core_ext_spec.rb +68 -0
- data/test/unit/connection_test.rb +37 -1
- data/test/unit/template_test.rb +78 -0
- metadata +8 -6
- data/doc/rdoc/classes/ServerSide/Application/Base.html +0 -196
- data/doc/rdoc/classes/ServerSide/Application/Static.html +0 -156
- data/test/unit/application_test.rb +0 -16
@@ -0,0 +1,200 @@
|
|
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: ServerSide::Template</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">ServerSide::Template</td>
|
54
|
+
</tr>
|
55
|
+
<tr class="top-aligned-row">
|
56
|
+
<td><strong>In:</strong></td>
|
57
|
+
<td>
|
58
|
+
<a href="../../files/lib/serverside/template_rb.html">
|
59
|
+
lib/serverside/template.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
|
+
<a href="../Object.html">
|
69
|
+
Object
|
70
|
+
</a>
|
71
|
+
</td>
|
72
|
+
</tr>
|
73
|
+
</table>
|
74
|
+
</div>
|
75
|
+
<!-- banner header -->
|
76
|
+
|
77
|
+
<div id="bodyContent">
|
78
|
+
|
79
|
+
|
80
|
+
|
81
|
+
<div id="contextContent">
|
82
|
+
|
83
|
+
<div id="description">
|
84
|
+
<p>
|
85
|
+
The <a href="Template.html">Template</a> module implements an ERB template
|
86
|
+
rendering system. Templates are cached and automatically reloaded if the
|
87
|
+
file changes.
|
88
|
+
</p>
|
89
|
+
|
90
|
+
</div>
|
91
|
+
|
92
|
+
|
93
|
+
</div>
|
94
|
+
|
95
|
+
<div id="method-list">
|
96
|
+
<h3 class="section-bar">Methods</h3>
|
97
|
+
|
98
|
+
<div class="name-list">
|
99
|
+
<a href="#M000052">render</a>
|
100
|
+
<a href="#M000051">set</a>
|
101
|
+
</div>
|
102
|
+
</div>
|
103
|
+
|
104
|
+
</div>
|
105
|
+
|
106
|
+
|
107
|
+
<!-- if includes -->
|
108
|
+
|
109
|
+
<div id="section">
|
110
|
+
|
111
|
+
|
112
|
+
|
113
|
+
|
114
|
+
|
115
|
+
|
116
|
+
|
117
|
+
|
118
|
+
<!-- if method_list -->
|
119
|
+
<div id="methods">
|
120
|
+
<h3 class="section-bar">Public Class methods</h3>
|
121
|
+
|
122
|
+
<div id="method-M000052" class="method-detail">
|
123
|
+
<a name="M000052"></a>
|
124
|
+
|
125
|
+
<div class="method-heading">
|
126
|
+
<a href="#M000052" class="method-signature">
|
127
|
+
<span class="method-name">render</span><span class="method-args">(name, binding)</span>
|
128
|
+
</a>
|
129
|
+
</div>
|
130
|
+
|
131
|
+
<div class="method-description">
|
132
|
+
<p>
|
133
|
+
Renders a template. If the template name is not found, attemps to load the
|
134
|
+
template from file. If the template has a non-nil stamp, the render method
|
135
|
+
compares it to the file stamp, and reloads the template content if
|
136
|
+
necessary.
|
137
|
+
</p>
|
138
|
+
<p><a class="source-toggle" href="#"
|
139
|
+
onclick="toggleCode('M000052-source');return false;">[Source]</a></p>
|
140
|
+
<div class="method-source-code" id="M000052-source">
|
141
|
+
<pre>
|
142
|
+
<span class="ruby-comment cmt"># File lib/serverside/template.rb, line 22</span>
|
143
|
+
22: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">render</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">binding</span>)
|
144
|
+
23: <span class="ruby-identifier">t</span> = <span class="ruby-ivar">@@templates</span>[<span class="ruby-identifier">name</span>]
|
145
|
+
24: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">t</span>[<span class="ruby-value">1</span>].<span class="ruby-identifier">result</span>(<span class="ruby-identifier">binding</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">t</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">t</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">nil?</span>
|
146
|
+
25:
|
147
|
+
26: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">file?</span>(<span class="ruby-identifier">name</span>)
|
148
|
+
27: <span class="ruby-identifier">stamp</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">mtime</span>(<span class="ruby-identifier">name</span>)
|
149
|
+
28: <span class="ruby-identifier">t</span> = <span class="ruby-identifier">set</span>(<span class="ruby-identifier">name</span>, <span class="ruby-constant">IO</span>.<span class="ruby-identifier">read</span>(<span class="ruby-identifier">name</span>), <span class="ruby-identifier">stamp</span>) <span class="ruby-keyword kw">if</span> (<span class="ruby-operator">!</span><span class="ruby-identifier">t</span> <span class="ruby-operator">||</span> (<span class="ruby-identifier">stamp</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">t</span>[<span class="ruby-value">0</span>]))
|
150
|
+
29: <span class="ruby-identifier">t</span>[<span class="ruby-value">1</span>].<span class="ruby-identifier">result</span>(<span class="ruby-identifier">binding</span>)
|
151
|
+
30: <span class="ruby-keyword kw">else</span>
|
152
|
+
31: <span class="ruby-ivar">@@templates</span>[<span class="ruby-identifier">name</span>] = <span class="ruby-keyword kw">nil</span>
|
153
|
+
32: <span class="ruby-identifier">raise</span> <span class="ruby-constant">RuntimeError</span>, <span class="ruby-value str">'Template not found.'</span>
|
154
|
+
33: <span class="ruby-keyword kw">end</span>
|
155
|
+
34: <span class="ruby-keyword kw">end</span>
|
156
|
+
</pre>
|
157
|
+
</div>
|
158
|
+
</div>
|
159
|
+
</div>
|
160
|
+
|
161
|
+
<div id="method-M000051" class="method-detail">
|
162
|
+
<a name="M000051"></a>
|
163
|
+
|
164
|
+
<div class="method-heading">
|
165
|
+
<a href="#M000051" class="method-signature">
|
166
|
+
<span class="method-name">set</span><span class="method-args">(name, body, stamp = nil)</span>
|
167
|
+
</a>
|
168
|
+
</div>
|
169
|
+
|
170
|
+
<div class="method-description">
|
171
|
+
<p>
|
172
|
+
Stores a template for later use. The stamp parameter is used only when the
|
173
|
+
content of a template file is stored.
|
174
|
+
</p>
|
175
|
+
<p><a class="source-toggle" href="#"
|
176
|
+
onclick="toggleCode('M000051-source');return false;">[Source]</a></p>
|
177
|
+
<div class="method-source-code" id="M000051-source">
|
178
|
+
<pre>
|
179
|
+
<span class="ruby-comment cmt"># File lib/serverside/template.rb, line 14</span>
|
180
|
+
14: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">set</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">body</span>, <span class="ruby-identifier">stamp</span> = <span class="ruby-keyword kw">nil</span>)
|
181
|
+
15: <span class="ruby-ivar">@@templates</span>[<span class="ruby-identifier">name</span>] = [<span class="ruby-identifier">stamp</span>, <span class="ruby-constant">ERB</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">body</span>)]
|
182
|
+
16: <span class="ruby-keyword kw">end</span>
|
183
|
+
</pre>
|
184
|
+
</div>
|
185
|
+
</div>
|
186
|
+
</div>
|
187
|
+
|
188
|
+
|
189
|
+
</div>
|
190
|
+
|
191
|
+
|
192
|
+
</div>
|
193
|
+
|
194
|
+
|
195
|
+
<div id="validator-badges">
|
196
|
+
<p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
|
197
|
+
</div>
|
198
|
+
|
199
|
+
</body>
|
200
|
+
</html>
|
@@ -78,6 +78,10 @@
|
|
78
78
|
<a href="../files/lib/serverside/routing_rb.html">
|
79
79
|
lib/serverside/routing.rb
|
80
80
|
</a>
|
81
|
+
<br />
|
82
|
+
<a href="../files/lib/serverside/template_rb.html">
|
83
|
+
lib/serverside/template.rb
|
84
|
+
</a>
|
81
85
|
<br />
|
82
86
|
</td>
|
83
87
|
</tr>
|
@@ -149,6 +153,7 @@ and streaming.
|
|
149
153
|
Module <a href="ServerSide/Connection.html" class="link">ServerSide::Connection</a><br />
|
150
154
|
Module <a href="ServerSide/StaticFiles.html" class="link">ServerSide::StaticFiles</a><br />
|
151
155
|
Class <a href="ServerSide/Server.html" class="link">ServerSide::Server</a><br />
|
156
|
+
Class <a href="ServerSide/Template.html" class="link">ServerSide::Template</a><br />
|
152
157
|
|
153
158
|
</div>
|
154
159
|
|
@@ -179,10 +184,10 @@ Adds a routing rule. This is a convenience method.
|
|
179
184
|
onclick="toggleCode('M000022-source');return false;">[Source]</a></p>
|
180
185
|
<div class="method-source-code" id="M000022-source">
|
181
186
|
<pre>
|
182
|
-
<span class="ruby-comment cmt"># File lib/serverside/routing.rb, line
|
183
|
-
|
184
|
-
|
185
|
-
|
187
|
+
<span class="ruby-comment cmt"># File lib/serverside/routing.rb, line 132</span>
|
188
|
+
132: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">route</span>(<span class="ruby-identifier">rule</span>, <span class="ruby-operator">&</span><span class="ruby-identifier">block</span>)
|
189
|
+
133: <span class="ruby-constant">Connection</span><span class="ruby-operator">::</span><span class="ruby-constant">Router</span>.<span class="ruby-identifier">route</span>(<span class="ruby-identifier">rule</span>, <span class="ruby-operator">&</span><span class="ruby-identifier">block</span>)
|
190
|
+
134: <span class="ruby-keyword kw">end</span>
|
186
191
|
</pre>
|
187
192
|
</div>
|
188
193
|
</div>
|
@@ -205,10 +210,10 @@ Sets the default request handler. This is a convenience method.
|
|
205
210
|
onclick="toggleCode('M000023-source');return false;">[Source]</a></p>
|
206
211
|
<div class="method-source-code" id="M000023-source">
|
207
212
|
<pre>
|
208
|
-
<span class="ruby-comment cmt"># File lib/serverside/routing.rb, line
|
209
|
-
|
210
|
-
|
211
|
-
|
213
|
+
<span class="ruby-comment cmt"># File lib/serverside/routing.rb, line 137</span>
|
214
|
+
137: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">route_default</span>(<span class="ruby-operator">&</span><span class="ruby-identifier">block</span>)
|
215
|
+
138: <span class="ruby-constant">Connection</span><span class="ruby-operator">::</span><span class="ruby-constant">Router</span>.<span class="ruby-identifier">route_default</span>(<span class="ruby-operator">&</span><span class="ruby-identifier">block</span>)
|
216
|
+
139: <span class="ruby-keyword kw">end</span>
|
212
217
|
</pre>
|
213
218
|
</div>
|
214
219
|
</div>
|
data/doc/rdoc/created.rid
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
Sun Sep 03 11:49:32 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>
|
59
|
+
<td>Sun Sep 03 11:48:20 IDT 2006</td>
|
60
60
|
</tr>
|
61
61
|
</table>
|
62
62
|
</div>
|
@@ -70,9 +70,52 @@
|
|
70
70
|
|
71
71
|
<div id="description">
|
72
72
|
<p>
|
73
|
+
*0.2.5*
|
74
|
+
</p>
|
75
|
+
<ul>
|
76
|
+
<li>Added template serving to static file module.
|
77
|
+
|
78
|
+
</li>
|
79
|
+
<li>Wrote a simple ERB template system.
|
80
|
+
|
81
|
+
</li>
|
82
|
+
<li>More documentation tweaks.
|
83
|
+
|
84
|
+
</li>
|
85
|
+
<li>Changed how response cookies are formatted for somewhat better performance.
|
86
|
+
|
87
|
+
</li>
|
88
|
+
<li>Updated documentation.
|
89
|
+
|
90
|
+
</li>
|
91
|
+
<li>Removed deprecated code in lib/serverside/application.rb.
|
92
|
+
|
93
|
+
</li>
|
94
|
+
<li>Added HTTP cookie functionality (parse, set and delete.)
|
95
|
+
|
96
|
+
</li>
|
97
|
+
<li>Updated rakefile to include a spec task, as well as an rcov task. Updated
|
98
|
+
test task to include spec and rcov tasks.
|
99
|
+
|
100
|
+
</li>
|
101
|
+
<li>Started writing RSpec tests. This looks like a very interesting concept.
|
102
|
+
|
103
|
+
</li>
|
104
|
+
<li>Added /test/spec directory.
|
105
|
+
|
106
|
+
</li>
|
107
|
+
</ul>
|
108
|
+
<p>
|
73
109
|
*0.2.0*
|
74
110
|
</p>
|
75
111
|
<ul>
|
112
|
+
<li>Updated RFuzz script to work, but it doesn’t still do anything
|
113
|
+
interesting.
|
114
|
+
|
115
|
+
</li>
|
116
|
+
<li>Added a serve command to serverside script.
|
117
|
+
|
118
|
+
</li>
|
76
119
|
<li>Changed substition of embedded parameters from (.*) to (.+).
|
77
120
|
|
78
121
|
</li>
|
data/doc/rdoc/files/README.html
CHANGED
@@ -56,7 +56,7 @@
|
|
56
56
|
</tr>
|
57
57
|
<tr class="top-aligned-row">
|
58
58
|
<td><strong>Last Update:</strong></td>
|
59
|
-
<td>
|
59
|
+
<td>Sun Sep 03 11:46:31 IDT 2006</td>
|
60
60
|
</tr>
|
61
61
|
</table>
|
62
62
|
</div>
|
@@ -77,65 +77,93 @@ use. <a href="../classes/ServerSide.html">ServerSide</a> includes a
|
|
77
77
|
full-featured HTTP server, a controller-view system and a bunch of other
|
78
78
|
tools to easily create servers and clusters of servers.
|
79
79
|
</p>
|
80
|
-
<h2>
|
81
|
-
<
|
82
|
-
<
|
83
|
-
|
84
|
-
|
80
|
+
<h2>Resources</h2>
|
81
|
+
<ul>
|
82
|
+
<li><a href="http://code.google.com/p/serverside/">Project page</a>
|
83
|
+
|
84
|
+
</li>
|
85
|
+
<li><a href="http://serverside.googlecode.com/svn/">Source code</a>
|
86
|
+
|
87
|
+
</li>
|
88
|
+
<li><a href="http://code.google.com/p/serverside/issues/list">Bug tracking</a>
|
89
|
+
|
90
|
+
</li>
|
91
|
+
<li><a href="http://rubyforge.org/projects/serverside/">RubyForge page</a>
|
92
|
+
|
93
|
+
</li>
|
94
|
+
</ul>
|
85
95
|
<p>
|
86
|
-
|
87
|
-
href="http://serverside.googlecode.com/svn">serverside.googlecode.com/svn</a>/
|
96
|
+
To check out the repository, just perform:
|
88
97
|
</p>
|
89
|
-
<
|
98
|
+
<pre>
|
99
|
+
svn co {http://serverside.googlecode.com/svn/}[http://serverside.googlecode.com/svn/]
|
100
|
+
</pre>
|
101
|
+
<h2>Installation</h2>
|
102
|
+
<pre>
|
103
|
+
sudo gem install serverside
|
104
|
+
</pre>
|
105
|
+
<h2>Usage</h2>
|
90
106
|
<p>
|
91
107
|
Once you have the <a href="../classes/ServerSide.html">ServerSide</a> gem
|
92
108
|
installed, you can use the <tt>serverside</tt> script to control servers.
|
93
109
|
For example:
|
94
110
|
</p>
|
111
|
+
<pre>
|
112
|
+
serverside start .
|
113
|
+
</pre>
|
95
114
|
<p>
|
96
|
-
|
115
|
+
will start an HTTP server on port 8000, serving the content of the working
|
116
|
+
directory. You can stop the server by running <tt>serverside stop .</tt>
|
97
117
|
</p>
|
98
118
|
<p>
|
99
|
-
|
100
|
-
You can stop the server by running <tt>serverside stop .</tt>
|
119
|
+
To run the server without forking, use the ‘serve’ command:
|
101
120
|
</p>
|
102
|
-
<
|
121
|
+
<pre>
|
122
|
+
serverside serve .
|
123
|
+
</pre>
|
124
|
+
<h2>Serving ERb Templates</h2>
|
103
125
|
<p>
|
104
|
-
|
105
|
-
href="
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
<p>
|
112
|
-
To start your app, you can either supply the <tt>serverside</tt> script
|
113
|
-
with your Ruby code file:
|
114
|
-
</p>
|
115
|
-
<p>
|
116
|
-
<tt>serverside start ~/myapp/myapp.rb</tt>
|
126
|
+
<a href="../classes/ServerSide.html">ServerSide</a> can render <a
|
127
|
+
href="http://www.ruby-doc.org/stdlib/libdoc/erb/rdoc/">ERb</a> templates in
|
128
|
+
a fashion similar to PHP. You can store templates in .rhtml files, and <a
|
129
|
+
href="../classes/ServerSide.html">ServerSide</a> takes care of all the
|
130
|
+
rest. <a href="../classes/ServerSide.html">ServerSide</a> is also smart
|
131
|
+
enough to allow you to use nice looking URL’s with your templates,
|
132
|
+
and automatically adds the .rhtml extension if the file is there.
|
117
133
|
</p>
|
134
|
+
<h2>Serving Dynamic Content</h2>
|
118
135
|
<p>
|
119
|
-
|
120
|
-
|
136
|
+
By default <a href="../classes/ServerSide.html">ServerSide</a> serves
|
137
|
+
static files, but you can change the behavior by creating custom <a
|
138
|
+
href="http://classes/ServerSide/Connection/Router.html">routing rules</a>.
|
139
|
+
Here’s a simple routing rule:
|
121
140
|
</p>
|
141
|
+
<pre>
|
142
|
+
ServerSide.route(:path => '/hello/:name') {
|
143
|
+
send_response(200, 'text', "Hello #{@parameters[:name]}!")
|
144
|
+
}
|
145
|
+
</pre>
|
122
146
|
<p>
|
123
|
-
<
|
147
|
+
The <a href="../classes/ServerSide.html">ServerSide</a> framework also lets
|
148
|
+
you route requests based on any attribute of incoming requests, such as
|
149
|
+
host name, path, URL parameters etc.
|
124
150
|
</p>
|
125
151
|
<p>
|
126
|
-
|
127
|
-
|
128
|
-
everything else.
|
152
|
+
To run your custom rules, you can either put them in a file called
|
153
|
+
serverside.rb, or tell serverside to explicitly load a specific file:
|
129
154
|
</p>
|
155
|
+
<pre>
|
156
|
+
serverside start ~/myapp/myapp.rb
|
157
|
+
</pre>
|
130
158
|
<h2>Running a Cluster of Servers</h2>
|
131
159
|
<p>
|
132
160
|
<a href="../classes/ServerSide.html">ServerSide</a> makes it easy to
|
133
161
|
control a cluster of servers. Just supply a range of ports instead of a
|
134
162
|
single port:
|
135
163
|
</p>
|
136
|
-
<
|
137
|
-
|
138
|
-
</
|
164
|
+
<pre>
|
165
|
+
serverside -p 8000..8009 start .
|
166
|
+
</pre>
|
139
167
|
|
140
168
|
</div>
|
141
169
|
|
@@ -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: template.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>template.rb</h1>
|
51
|
+
<table class="header-table">
|
52
|
+
<tr class="top-aligned-row">
|
53
|
+
<td><strong>Path:</strong></td>
|
54
|
+
<td>lib/serverside/template.rb
|
55
|
+
</td>
|
56
|
+
</tr>
|
57
|
+
<tr class="top-aligned-row">
|
58
|
+
<td><strong>Last Update:</strong></td>
|
59
|
+
<td>Sun Sep 03 11:33:15 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
|
+
<div id="requires-list">
|
73
|
+
<h3 class="section-bar">Required files</h3>
|
74
|
+
|
75
|
+
<div class="name-list">
|
76
|
+
erb
|
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>
|
@@ -29,8 +29,6 @@
|
|
29
29
|
<a href="classes/Proc.html">Proc</a><br />
|
30
30
|
<a href="classes/ServerSide.html">ServerSide</a><br />
|
31
31
|
<a href="classes/ServerSide/Application.html">ServerSide::Application</a><br />
|
32
|
-
<a href="classes/ServerSide/Application/Base.html">ServerSide::Application::Base</a><br />
|
33
|
-
<a href="classes/ServerSide/Application/Static.html">ServerSide::Application::Static</a><br />
|
34
32
|
<a href="classes/ServerSide/Connection.html">ServerSide::Connection</a><br />
|
35
33
|
<a href="classes/ServerSide/Connection/Base.html">ServerSide::Connection::Base</a><br />
|
36
34
|
<a href="classes/ServerSide/Connection/Const.html">ServerSide::Connection::Const</a><br />
|
@@ -38,6 +36,7 @@
|
|
38
36
|
<a href="classes/ServerSide/Server.html">ServerSide::Server</a><br />
|
39
37
|
<a href="classes/ServerSide/StaticFiles.html">ServerSide::StaticFiles</a><br />
|
40
38
|
<a href="classes/ServerSide/StaticFiles/Const.html">ServerSide::StaticFiles::Const</a><br />
|
39
|
+
<a href="classes/ServerSide/Template.html">ServerSide::Template</a><br />
|
41
40
|
<a href="classes/String.html">String</a><br />
|
42
41
|
<a href="classes/Symbol.html">Symbol</a><br />
|
43
42
|
</div>
|
data/doc/rdoc/fr_file_index.html
CHANGED
@@ -32,6 +32,7 @@
|
|
32
32
|
<a href="files/lib/serverside/routing_rb.html">lib/serverside/routing.rb</a><br />
|
33
33
|
<a href="files/lib/serverside/server_rb.html">lib/serverside/server.rb</a><br />
|
34
34
|
<a href="files/lib/serverside/static_rb.html">lib/serverside/static.rb</a><br />
|
35
|
+
<a href="files/lib/serverside/template_rb.html">lib/serverside/template.rb</a><br />
|
35
36
|
</div>
|
36
37
|
</div>
|
37
38
|
</body>
|