nitro 0.8.0 → 0.9.3
Sign up to get free protection for your applications and to get access to all the features.
- data/AUTHORS +3 -4
- data/ChangeLog +418 -0
- data/LICENSE +1 -1
- data/README +157 -89
- data/RELEASES +50 -0
- data/Rakefile +5 -7
- data/benchmark/nitro/bench.rb +5 -0
- data/benchmark/nitro/simple-webrick-n-200.txt +44 -0
- data/benchmark/nitro/static-webrick-n-200.txt +43 -0
- data/benchmark/nitro/tiny-lhttpd-n-200-c-5.txt +43 -0
- data/benchmark/nitro/tiny-webrick-n-200-c-5.txt +44 -0
- data/benchmark/nitro/tiny-webrick-n-200.txt +44 -0
- data/benchmark/nitro/tiny2-webrick-n-200.txt +44 -0
- data/{lib/nitro/server/cluster.rb → bin/cluster} +26 -30
- data/bin/proto/README +2 -2
- data/bin/proto/{apache.conf → conf/apache.conf} +0 -0
- data/bin/proto/conf/app.conf.rb +22 -0
- data/bin/proto/conf/lhttpd.conf +236 -0
- data/bin/proto/ctl +4 -0
- data/bin/proto/lib/README +5 -0
- data/bin/proto/log/README +3 -0
- data/bin/proto/root/fcgi.rb +6 -0
- data/bin/proto/root/index.xhtml +65 -7
- data/bin/proto/root/m/nitro.png +0 -0
- data/examples/blog/README +7 -5
- data/examples/blog/{apache.conf → conf/apache.conf} +0 -0
- data/examples/blog/conf/app.conf.rb +56 -0
- data/examples/blog/conf/lhttpd.conf +236 -0
- data/examples/blog/ctl +4 -0
- data/examples/blog/lib/blog.rb +11 -136
- data/examples/blog/lib/blog/controller.rb +99 -0
- data/examples/blog/lib/blog/model.rb +39 -0
- data/examples/blog/log/README +3 -0
- data/examples/blog/root/comments.xhtml +2 -2
- data/examples/blog/root/fcgi.rb +6 -0
- data/examples/blog/root/index.xhtml +4 -5
- data/examples/blog/root/login.xhtml +2 -2
- data/examples/blog/root/style.xsl +9 -9
- data/examples/blog/root/view_entry.xhtml +2 -2
- data/examples/flash/conf/app.conf.rb +23 -0
- data/examples/flash/ctl +4 -0
- data/examples/flash/log/README +3 -0
- data/examples/flash/root/index.xhtml +0 -9
- data/examples/flash/root/show_inline_text.xhtml +10 -5
- data/examples/no_xsl_blog/README +12 -0
- data/examples/no_xsl_blog/conf/apache.conf +0 -0
- data/examples/no_xsl_blog/conf/app.conf.rb +57 -0
- data/examples/no_xsl_blog/conf/lhttpd.conf +236 -0
- data/examples/no_xsl_blog/ctl +4 -0
- data/examples/no_xsl_blog/lib/blog.rb +20 -0
- data/examples/no_xsl_blog/lib/blog/controller.rb +102 -0
- data/examples/no_xsl_blog/lib/blog/model.rb +39 -0
- data/examples/no_xsl_blog/lib/blog/template.rb +134 -0
- data/examples/no_xsl_blog/log/README +3 -0
- data/examples/no_xsl_blog/root/comments.xhtml +41 -0
- data/examples/no_xsl_blog/root/entry_form.xhtml +22 -0
- data/examples/no_xsl_blog/root/fcgi.rb +6 -0
- data/examples/no_xsl_blog/root/index.xhtml +39 -0
- data/examples/no_xsl_blog/root/login.xhtml +21 -0
- data/examples/no_xsl_blog/root/m/bubbles.gif +0 -0
- data/examples/no_xsl_blog/root/m/comments_curve.gif +0 -0
- data/examples/no_xsl_blog/root/m/down.gif +0 -0
- data/examples/no_xsl_blog/root/m/footer_bg.gif +0 -0
- data/examples/no_xsl_blog/root/m/garrow.gif +0 -0
- data/examples/no_xsl_blog/root/m/gbull.gif +0 -0
- data/examples/no_xsl_blog/root/m/grbull.gif +0 -0
- data/examples/no_xsl_blog/root/m/h1_bg.gif +0 -0
- data/examples/no_xsl_blog/root/m/header_bg.gif +0 -0
- data/examples/no_xsl_blog/root/m/nitro.gif +0 -0
- data/examples/no_xsl_blog/root/m/obull.gif +0 -0
- data/examples/no_xsl_blog/root/m/page_bg.gif +0 -0
- data/examples/no_xsl_blog/root/m/rss.gif +0 -0
- data/examples/no_xsl_blog/root/m/side_title_bg.gif +0 -0
- data/examples/no_xsl_blog/root/m/sidebar_bg.gif +0 -0
- data/examples/no_xsl_blog/root/recent_posts.xhtml +14 -0
- data/examples/no_xsl_blog/root/style.css +301 -0
- data/examples/no_xsl_blog/root/view_entry.xhtml +25 -0
- data/examples/no_xsl_blog/root/view_entry.xml +12 -0
- data/examples/og/run.rb +2 -2
- data/examples/tiny/README +2 -2
- data/examples/tiny/conf/apache.conf +5 -0
- data/examples/tiny/conf/app.conf.rb +21 -0
- data/examples/tiny/conf/lhttpd.conf +236 -0
- data/examples/tiny/ctl +4 -0
- data/examples/tiny/log/README +3 -0
- data/examples/tiny/root/fcgi.rb +6 -0
- data/examples/tiny/root/index.xhtml +7 -4
- data/examples/tiny/root/nitro.png +0 -0
- data/lib/glue.rb +13 -9
- data/lib/glue/array.rb +1 -1
- data/lib/glue/cache.rb +1 -1
- data/lib/glue/flexob.rb +12 -0
- data/lib/glue/hash.rb +1 -1
- data/lib/glue/inflector.rb +2 -2
- data/lib/glue/logger.rb +4 -8
- data/lib/glue/misc.rb +14 -0
- data/lib/glue/number.rb +1 -1
- data/lib/glue/object.rb +26 -0
- data/lib/glue/pool.rb +1 -1
- data/lib/glue/property.rb +84 -91
- data/lib/glue/string.rb +1 -1
- data/lib/glue/time.rb +1 -1
- data/lib/glue/validation.rb +1 -1
- data/lib/nitro.rb +18 -6
- data/lib/nitro/adaptors/cgi.rb +291 -0
- data/lib/nitro/adaptors/fastcgi.rb +42 -0
- data/lib/nitro/adaptors/runner.rb +123 -0
- data/lib/nitro/adaptors/webrick.rb +110 -0
- data/lib/nitro/buffering.rb +43 -0
- data/lib/nitro/builders/form.rb +1 -1
- data/lib/nitro/builders/rss.rb +1 -1
- data/{bin → lib/nitro}/cluster.rb +26 -30
- data/lib/nitro/context.rb +82 -0
- data/lib/nitro/controller.rb +50 -0
- data/lib/nitro/cookie.rb +46 -0
- data/lib/nitro/dispatcher.rb +105 -0
- data/lib/nitro/filters.rb +9 -10
- data/lib/nitro/localization.rb +42 -0
- data/lib/nitro/mail.rb +11 -14
- data/lib/nitro/render.rb +275 -0
- data/lib/nitro/request.rb +128 -0
- data/lib/nitro/response.rb +38 -0
- data/lib/nitro/scaffold.rb +11 -11
- data/lib/nitro/session.rb +84 -0
- data/lib/nitro/{server/shaders.rb → shaders.rb} +56 -36
- data/lib/nitro/ui/pager.rb +23 -26
- data/lib/nitro/{sitemap.rb → ui/sitemap.rb} +4 -12
- data/lib/nitro/uri.rb +1 -1
- data/lib/nitro/version.rb +10 -8
- data/lib/og.rb +66 -65
- data/lib/og/backend.rb +1 -1
- data/lib/og/backends/mysql.rb +48 -52
- data/lib/og/backends/psql.rb +34 -37
- data/lib/og/connection.rb +15 -15
- data/lib/og/enchant.rb +16 -9
- data/lib/og/meta.rb +127 -54
- data/lib/og/mock.rb +18 -18
- data/lib/og/version.rb +6 -4
- data/lib/parts/content.rb +4 -8
- data/test/glue/tc_logger.rb +3 -0
- data/test/glue/tc_property.rb +19 -3
- data/test/nitro/adaptors/tc_cgi.rb +63 -0
- data/test/nitro/adaptors/tc_webrick.rb +15 -0
- data/test/nitro/builders/tc_xml.rb +2 -2
- data/test/nitro/tc_context.rb +13 -0
- data/test/nitro/tc_controller.rb +47 -0
- data/test/nitro/tc_dispatcher.rb +64 -0
- data/test/nitro/tc_session.rb +20 -0
- data/test/nitro/{tc_sitemap.rb → ui/tc_sitemap.rb} +1 -1
- data/test/root/blog/list.xhtml +6 -0
- data/test/tc_og.rb +41 -4
- metadata +115 -59
- data/bin/proto/app.rb +0 -20
- data/bin/proto/config.rb +0 -77
- data/examples/blog/app.rb +0 -21
- data/examples/blog/config.rb +0 -95
- data/examples/blog/env.rb +0 -22
- data/examples/flash/README +0 -34
- data/examples/flash/app.rb +0 -20
- data/examples/flash/config.rb +0 -38
- data/examples/flash/lib/flash.rb +0 -40
- data/examples/flash/tmp.swf +0 -0
- data/examples/tiny/app.rb +0 -19
- data/examples/tiny/config.rb +0 -29
- data/examples/tiny/root/nitro-small.png +0 -0
- data/lib/nitro/application.rb +0 -217
- data/lib/nitro/config.rb +0 -128
- data/lib/nitro/events.rb +0 -122
- data/lib/nitro/html.rb +0 -151
- data/lib/nitro/http.rb +0 -102
- data/lib/nitro/l10n.rb +0 -30
- data/lib/nitro/server.rb +0 -59
- data/lib/nitro/server/appserver.rb +0 -67
- data/lib/nitro/server/cookie.rb +0 -87
- data/lib/nitro/server/dispatcher.rb +0 -62
- data/lib/nitro/server/filters.rb +0 -75
- data/lib/nitro/server/filters/autologin.rb +0 -51
- data/lib/nitro/server/fragment.rb +0 -70
- data/lib/nitro/server/handlers.rb +0 -127
- data/lib/nitro/server/render.rb +0 -426
- data/lib/nitro/server/request.rb +0 -658
- data/lib/nitro/server/requestpart.rb +0 -54
- data/lib/nitro/server/script.rb +0 -387
- data/lib/nitro/server/server.rb +0 -57
- data/lib/nitro/server/session.rb +0 -220
- data/lib/nitro/server/user.rb +0 -46
- data/lib/nitro/server/webrick.rb +0 -180
- data/lib/nitro/service.rb +0 -26
- data/lib/xsl/ui.xsl +0 -51
- data/lib/xsl/xforms.xsl +0 -28
- data/test/nitro/server/tc_cookie.rb +0 -34
- data/test/nitro/server/tc_filters.rb +0 -38
- data/test/nitro/server/tc_request.rb +0 -70
- data/test/nitro/server/tc_requestpart.rb +0 -28
- data/test/nitro/server/tc_session.rb +0 -34
- data/test/nitro/tc_events.rb +0 -44
- data/test/nitro/tc_html.rb +0 -79
- data/test/nitro/tc_http.rb +0 -18
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<?xml version="1.0"?>
|
2
|
+
|
3
|
+
<span>
|
4
|
+
<h2>Recent posts</h2>
|
5
|
+
<?r if @entries ?>
|
6
|
+
<ul>
|
7
|
+
<?r for entry in @entries ?>
|
8
|
+
<li><a href="view_entry?oid=#{entry.oid}">#{entry.title}</a></li>
|
9
|
+
<?r end ?>
|
10
|
+
</ul>
|
11
|
+
<?r else ?>
|
12
|
+
no entries
|
13
|
+
<?r end ?>
|
14
|
+
</span>
|
@@ -0,0 +1,301 @@
|
|
1
|
+
body {
|
2
|
+
margin: 0;
|
3
|
+
padding: 0;
|
4
|
+
font-family: Verdana, sans-serif;
|
5
|
+
font-size: small;
|
6
|
+
color: #333;
|
7
|
+
background: #e0e0e0;
|
8
|
+
}
|
9
|
+
|
10
|
+
a:link {
|
11
|
+
color: #69c;
|
12
|
+
}
|
13
|
+
|
14
|
+
a:visited {
|
15
|
+
color: #666699;
|
16
|
+
}
|
17
|
+
|
18
|
+
a:hover {
|
19
|
+
color: #693;
|
20
|
+
}
|
21
|
+
|
22
|
+
a:active {
|
23
|
+
color: #cc3333;
|
24
|
+
text-decoration: none;
|
25
|
+
}
|
26
|
+
|
27
|
+
input, textarea {
|
28
|
+
font-family: Verdana, sans-serif;
|
29
|
+
font-size: small;
|
30
|
+
}
|
31
|
+
|
32
|
+
#page {
|
33
|
+
position: relative; top: 50%; left: 50%;
|
34
|
+
margin: 0px; margin-left: -400px;
|
35
|
+
width: 847px;
|
36
|
+
background: url(m/page_bg.gif) repeat-y;
|
37
|
+
}
|
38
|
+
|
39
|
+
#header {
|
40
|
+
margin: 0px;
|
41
|
+
color: #fff;
|
42
|
+
font-family: "Lucida Grande", "Trebuchet MS";
|
43
|
+
background: url(m/header_bg.gif) no-repeat top left;
|
44
|
+
}
|
45
|
+
|
46
|
+
#header h1 {
|
47
|
+
margin: 0px;
|
48
|
+
padding: 45px 60px 50px 160px;
|
49
|
+
background: url(m/h1_bg.gif) no-repeat bottom left;
|
50
|
+
}
|
51
|
+
|
52
|
+
#header h1 a {
|
53
|
+
color: #fff;
|
54
|
+
text-decoration: none;
|
55
|
+
}
|
56
|
+
|
57
|
+
#footer {
|
58
|
+
height: 40px;
|
59
|
+
color: #fff;
|
60
|
+
font-size: 80%;
|
61
|
+
background: url(m/footer_bg.gif) repeat-y;
|
62
|
+
padding-top: 15px; padding-left: 90px;
|
63
|
+
}
|
64
|
+
|
65
|
+
#footer a {
|
66
|
+
color: #fff;
|
67
|
+
}
|
68
|
+
|
69
|
+
#footer a:hover {
|
70
|
+
color: #fc0;
|
71
|
+
}
|
72
|
+
|
73
|
+
.main {
|
74
|
+
float: left;
|
75
|
+
margin: 10px; margin-left: 60px;
|
76
|
+
padding-left: 2px;
|
77
|
+
margin-bottom: 20px;
|
78
|
+
width: 460px;
|
79
|
+
}
|
80
|
+
|
81
|
+
.main li {
|
82
|
+
list-style: none;
|
83
|
+
padding-left: 14px;
|
84
|
+
margin-bottom: 3px;
|
85
|
+
background: url(m/obull.gif) no-repeat 0 6px;
|
86
|
+
}
|
87
|
+
|
88
|
+
.side {
|
89
|
+
color: #999;
|
90
|
+
margin: 0 41px 0px 547px;
|
91
|
+
padding-top: 25px; padding-left: 20px; padding-right: 20px;
|
92
|
+
font-size: 85%;
|
93
|
+
line-height: 1.4em;
|
94
|
+
background: url(m/sidebar_bg.gif) no-repeat 0 0;
|
95
|
+
}
|
96
|
+
|
97
|
+
.side h2 {
|
98
|
+
margin: 0 0 0 0;
|
99
|
+
padding: 25px 0 0 30px;
|
100
|
+
color: #666;
|
101
|
+
height: 32px !important;
|
102
|
+
height /**/:57px; /* for IE5/Win */
|
103
|
+
font-family: "Lucida Grande", "Trebuchet MS";
|
104
|
+
font-size: 130%;
|
105
|
+
background: url(m/side_title_bg.gif) no-repeat 0px 15px;
|
106
|
+
}
|
107
|
+
|
108
|
+
.side ul {
|
109
|
+
margin-top: 0px;
|
110
|
+
padding: 0px;
|
111
|
+
}
|
112
|
+
|
113
|
+
.side li {
|
114
|
+
list-style: none;
|
115
|
+
margin-left: 0px; margin-bottom: 3px;
|
116
|
+
padding-left: 14px;
|
117
|
+
background: url(m/gbull.gif) no-repeat 0 6px;
|
118
|
+
}
|
119
|
+
|
120
|
+
.entry {
|
121
|
+
border-bottom: 1px solid #eee;
|
122
|
+
margin-top: 15px; margin-bottom: 15px;
|
123
|
+
}
|
124
|
+
|
125
|
+
.full-entry {
|
126
|
+
margin-top: 15px; margin-bottom: 15px;
|
127
|
+
}
|
128
|
+
|
129
|
+
h2.date {
|
130
|
+
margin-top: 0;
|
131
|
+
padding-left: 14px;
|
132
|
+
font-size: 90%;
|
133
|
+
color: #f93;
|
134
|
+
background: url(m/down.gif) no-repeat 0 50%;
|
135
|
+
}
|
136
|
+
|
137
|
+
.post {
|
138
|
+
padding-left: 15px;
|
139
|
+
padding-bottom: 15px;
|
140
|
+
}
|
141
|
+
|
142
|
+
.post h3.title {
|
143
|
+
margin-top: 0;
|
144
|
+
font-family: "Lucida Grande", "Trebuchet MS";
|
145
|
+
font-size: 130%;
|
146
|
+
letter-spacing: -1px;
|
147
|
+
color: #f63;
|
148
|
+
}
|
149
|
+
|
150
|
+
.post .footer {
|
151
|
+
margin: 0; margin-top: 10px;
|
152
|
+
padding: 0 0 0 14px;
|
153
|
+
font-size: 88%;
|
154
|
+
color: #999;
|
155
|
+
background: url(m/grbull.gif) no-repeat 0 6px;
|
156
|
+
}
|
157
|
+
|
158
|
+
#comments {
|
159
|
+
margin-top: 30px;
|
160
|
+
padding-top: 10px;
|
161
|
+
font-size: 85%;
|
162
|
+
line-height: 1.5em;
|
163
|
+
color: #666;
|
164
|
+
background: #eee url(m/comments_curve.gif) no-repeat top left;
|
165
|
+
}
|
166
|
+
|
167
|
+
#comments h2 {
|
168
|
+
margin: 20px 0 15px 0;
|
169
|
+
padding: 8px 0 0 40px;
|
170
|
+
font-family: "Lucida Grande", "Trebuchet MS";
|
171
|
+
font-size: 130%;
|
172
|
+
color: #666;
|
173
|
+
background: url(m/bubbles.gif) no-repeat 10px 0;
|
174
|
+
height: 29px !important; /* for most browsers */
|
175
|
+
height /**/:37px; /* for IE5/Win */
|
176
|
+
}
|
177
|
+
|
178
|
+
#comments form {
|
179
|
+
margin: 10px;
|
180
|
+
padding-bottom: 10px;
|
181
|
+
}
|
182
|
+
|
183
|
+
.comment {
|
184
|
+
padding: 10px;
|
185
|
+
border-bottom: 1px solid #ddd;
|
186
|
+
}
|
187
|
+
|
188
|
+
.comment .footer {
|
189
|
+
margin: 4px 0 0 0;
|
190
|
+
padding: 0 0 0 60px;
|
191
|
+
color: #999;
|
192
|
+
background: url(m/garrow.gif) no-repeat 44px 2px;
|
193
|
+
}
|
194
|
+
|
195
|
+
.error {
|
196
|
+
color: #f00;
|
197
|
+
}
|
198
|
+
|
199
|
+
.clear {
|
200
|
+
clear: both;
|
201
|
+
height: 0px;
|
202
|
+
line-height: 0px;
|
203
|
+
font-size: 0px;
|
204
|
+
overflow: hidden;
|
205
|
+
background-color: #f00;
|
206
|
+
}
|
207
|
+
|
208
|
+
#rendering-errors {
|
209
|
+
float: left;
|
210
|
+
border: 1px solid red;
|
211
|
+
background: white;
|
212
|
+
padding: 10px;
|
213
|
+
margin: 20px;
|
214
|
+
}
|
215
|
+
|
216
|
+
.rss li {
|
217
|
+
list-style: none;
|
218
|
+
padding-left: 34px; padding-top: 3px;
|
219
|
+
margin-bottom: 3px;
|
220
|
+
height: 18px;
|
221
|
+
background: url(m/rss.gif) no-repeat 0 6px;
|
222
|
+
}
|
223
|
+
|
224
|
+
/* --- pager --- */
|
225
|
+
|
226
|
+
.pager {
|
227
|
+
margin-top: 40px; margin-bottom: 50px;
|
228
|
+
border-top: 1px solid #ccc;
|
229
|
+
background-color: #f0f0f0;
|
230
|
+
}
|
231
|
+
|
232
|
+
.pager .first {
|
233
|
+
float: left;
|
234
|
+
padding: 5px;
|
235
|
+
}
|
236
|
+
|
237
|
+
.pager .previous {
|
238
|
+
float: left;
|
239
|
+
padding: 5px;
|
240
|
+
margin-left: 5px;
|
241
|
+
}
|
242
|
+
|
243
|
+
.pager .next {
|
244
|
+
float: right;
|
245
|
+
padding: 5px;
|
246
|
+
margin-right: 5px;
|
247
|
+
}
|
248
|
+
|
249
|
+
.pager .last {
|
250
|
+
float: right;
|
251
|
+
padding: 5px;
|
252
|
+
}
|
253
|
+
|
254
|
+
.pager ul {
|
255
|
+
float: left;
|
256
|
+
margin: 0px;
|
257
|
+
padding: 0px;
|
258
|
+
}
|
259
|
+
|
260
|
+
.pager li {
|
261
|
+
float: left;
|
262
|
+
display: inline;
|
263
|
+
padding: 5px;
|
264
|
+
padding-left: 10px;
|
265
|
+
padding-right: 10px;
|
266
|
+
background: none;
|
267
|
+
}
|
268
|
+
|
269
|
+
.pager li.active {
|
270
|
+
background-color: #ffa;
|
271
|
+
}
|
272
|
+
|
273
|
+
.noitems {
|
274
|
+
padding: 5px;
|
275
|
+
text-align: center;
|
276
|
+
}
|
277
|
+
|
278
|
+
/* --- forms --- */
|
279
|
+
|
280
|
+
dl {
|
281
|
+
margin: 0px;
|
282
|
+
}
|
283
|
+
|
284
|
+
dt {
|
285
|
+
display: block;
|
286
|
+
margin: 0px;
|
287
|
+
margin-right: 10px;
|
288
|
+
padding-bottom: 10px;
|
289
|
+
font-weight: bold;
|
290
|
+
}
|
291
|
+
|
292
|
+
dd {
|
293
|
+
display: block;
|
294
|
+
margin: 0px;
|
295
|
+
padding-bottom: 10px;
|
296
|
+
}
|
297
|
+
|
298
|
+
textarea {
|
299
|
+
width: 90%;
|
300
|
+
height: 150px;
|
301
|
+
}
|
@@ -0,0 +1,25 @@
|
|
1
|
+
<?xml version="1.0"?>
|
2
|
+
|
3
|
+
#{s_page}
|
4
|
+
|
5
|
+
<div class="full-@entry">
|
6
|
+
<h2 class="date">#{@entry.create_time.strftime('%B %e, %G')}</h2>
|
7
|
+
<div class="post">
|
8
|
+
<h3 class="title">#{@entry.title}</h3>
|
9
|
+
#{@entry.body}
|
10
|
+
<div class="footer">
|
11
|
+
posted by gmosx at #{@entry.create_time.strftime('%R %p')}
|
12
|
+
<?r if session[:owner] ?>
|
13
|
+
[<a href="del_entry?oid=#{@entry.oid}">del</a>]
|
14
|
+
<?r end ?>
|
15
|
+
</div>
|
16
|
+
</div>
|
17
|
+
</div>
|
18
|
+
|
19
|
+
<div id="comments">
|
20
|
+
<render href="comments" />
|
21
|
+
</div>
|
22
|
+
|
23
|
+
<p><a href="/">Home</a></p>
|
24
|
+
|
25
|
+
#{e_page}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<?xml version="1.0"?>
|
2
|
+
|
3
|
+
<entry>
|
4
|
+
<title>#{@entry.title}</title>
|
5
|
+
<date>#{@entry.create_time.strftime('%B %e, %G')}</date>
|
6
|
+
<body>#{@entry.body}</body>
|
7
|
+
<comments>
|
8
|
+
<?r for comment in @entry.comments ?>
|
9
|
+
<comment>#{comment.body}</comment>
|
10
|
+
<?r end ?>
|
11
|
+
</comments>
|
12
|
+
</entry>
|
data/examples/og/run.rb
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
# * George Moschovitis <gm@navel.gr>
|
7
7
|
#
|
8
8
|
# (c) 2004 Navel, all rights reserved.
|
9
|
-
# $Id: run.rb
|
9
|
+
# $Id: run.rb 202 2005-01-17 10:44:13Z gmosx $
|
10
10
|
|
11
11
|
$:.unshift File.join(File.dirname(__FILE__), '..', '..', 'lib')
|
12
12
|
|
@@ -273,7 +273,7 @@ puts '---'
|
|
273
273
|
|
274
274
|
c2.articles.each { |a| puts a.title }
|
275
275
|
|
276
|
-
article.
|
276
|
+
article.delete_category(c1)
|
277
277
|
|
278
278
|
puts '---'
|
279
279
|
|
data/examples/tiny/README
CHANGED
@@ -0,0 +1,21 @@
|
|
1
|
+
# * George Moschovitis <gm@navel.gr>
|
2
|
+
# (c) 2004-2005 Navel, all rights reserved.
|
3
|
+
# $Id: app.rb 197 2004-12-21 13:50:17Z gmosx $
|
4
|
+
|
5
|
+
$:.unshift File.join(File.dirname(__FILE__), '..', '..', '..', 'lib')
|
6
|
+
|
7
|
+
$DBG = true
|
8
|
+
|
9
|
+
require 'nitro'
|
10
|
+
|
11
|
+
# gmosx, FIXME: make this default!
|
12
|
+
|
13
|
+
require 'ostruct'
|
14
|
+
|
15
|
+
conf = {
|
16
|
+
:host => 'localhost',
|
17
|
+
:port => 8080,
|
18
|
+
:dispatcher => N::Dispatcher.new
|
19
|
+
}
|
20
|
+
|
21
|
+
$conf = OpenStruct.new(conf)
|
@@ -0,0 +1,236 @@
|
|
1
|
+
# lighttpd configuration file
|
2
|
+
# $Id$
|
3
|
+
|
4
|
+
############ Options you really have to take care of ####################
|
5
|
+
|
6
|
+
## modules to load
|
7
|
+
# at least mod_access and mod_accesslog should be loaded
|
8
|
+
# all other module should only be loaded if really neccesary
|
9
|
+
# - saves some time
|
10
|
+
# - saves memory
|
11
|
+
|
12
|
+
server.modules = (
|
13
|
+
"mod_rewrite",
|
14
|
+
# "mod_redirect",
|
15
|
+
"mod_access",
|
16
|
+
# "mod_auth",
|
17
|
+
# "mod_status",
|
18
|
+
"mod_fastcgi",
|
19
|
+
# "mod_simple_vhost",
|
20
|
+
# "mod_evhost",
|
21
|
+
# "mod_cgi",
|
22
|
+
# "mod_compress",
|
23
|
+
# "mod_ssi",
|
24
|
+
# "mod_usertrack",
|
25
|
+
# "mod_rrdtool",
|
26
|
+
"mod_accesslog"
|
27
|
+
)
|
28
|
+
|
29
|
+
## a static document-root, for virtual-hosting take look at the
|
30
|
+
## server.virtual-* options
|
31
|
+
server.document-root = "/home/gmosx/navel/nitro/examples/tiny/root/"
|
32
|
+
|
33
|
+
## where to send error-messages to
|
34
|
+
server.errorlog = "/home/gmosx/navel/nitro/examples/tiny/log/lighttpd.error.log"
|
35
|
+
|
36
|
+
# files to check for if .../ is requested
|
37
|
+
server.indexfiles = ( "index.html" )
|
38
|
+
|
39
|
+
# mimetype mapping
|
40
|
+
mimetype.assign = (
|
41
|
+
".pdf" => "application/pdf",
|
42
|
+
".sig" => "application/pgp-signature",
|
43
|
+
".spl" => "application/futuresplash",
|
44
|
+
".class" => "application/octet-stream",
|
45
|
+
".ps" => "application/postscript",
|
46
|
+
".torrent" => "application/x-bittorrent",
|
47
|
+
".dvi" => "application/x-dvi",
|
48
|
+
".gz" => "application/x-gzip",
|
49
|
+
".pac" => "application/x-ns-proxy-autoconfig",
|
50
|
+
".swf" => "application/x-shockwave-flash",
|
51
|
+
".tar.gz" => "application/x-tgz",
|
52
|
+
".tgz" => "application/x-tgz",
|
53
|
+
".tar" => "application/x-tar",
|
54
|
+
".zip" => "application/zip",
|
55
|
+
".mp3" => "audio/mpeg",
|
56
|
+
".m3u" => "audio/x-mpegurl",
|
57
|
+
".wma" => "audio/x-ms-wma",
|
58
|
+
".wax" => "audio/x-ms-wax",
|
59
|
+
".ogg" => "audio/x-wav",
|
60
|
+
".wav" => "audio/x-wav",
|
61
|
+
".gif" => "image/gif",
|
62
|
+
".jpg" => "image/jpeg",
|
63
|
+
".jpeg" => "image/jpeg",
|
64
|
+
".png" => "image/png",
|
65
|
+
".xbm" => "image/x-xbitmap",
|
66
|
+
".xpm" => "image/x-xpixmap",
|
67
|
+
".xwd" => "image/x-xwindowdump",
|
68
|
+
".css" => "text/css",
|
69
|
+
".html" => "text/html",
|
70
|
+
".htm" => "text/html",
|
71
|
+
".js" => "text/javascript",
|
72
|
+
".asc" => "text/plain",
|
73
|
+
".c" => "text/plain",
|
74
|
+
".conf" => "text/plain",
|
75
|
+
".text" => "text/plain",
|
76
|
+
".txt" => "text/plain",
|
77
|
+
".dtd" => "text/xml",
|
78
|
+
".xml" => "text/xml",
|
79
|
+
".mpeg" => "video/mpeg",
|
80
|
+
".mpg" => "video/mpeg",
|
81
|
+
".mov" => "video/quicktime",
|
82
|
+
".qt" => "video/quicktime",
|
83
|
+
".avi" => "video/x-msvideo",
|
84
|
+
".asf" => "video/x-ms-asf",
|
85
|
+
".asx" => "video/x-ms-asf",
|
86
|
+
".wmv" => "video/x-ms-wmv"
|
87
|
+
)
|
88
|
+
|
89
|
+
# Use the "Content-Type" extended attribute to obtain mime type if possible
|
90
|
+
# mimetypes.use-xattr = "enable"
|
91
|
+
|
92
|
+
#### accesslog module
|
93
|
+
accesslog.filename = "/home/gmosx/navel/nitro/examples/tiny/log/access.log"
|
94
|
+
|
95
|
+
## deny access the file-extensions
|
96
|
+
#
|
97
|
+
# ~ is for backupfiles from vi, emacs, joe, ...
|
98
|
+
# .inc is often used for code includes which should in general not be part
|
99
|
+
# of the document-root
|
100
|
+
url.access-deny = ( "~", ".inc" )
|
101
|
+
|
102
|
+
|
103
|
+
|
104
|
+
######### Options that are good to be but not neccesary to be changed #######
|
105
|
+
|
106
|
+
## bind to port (default: 80)
|
107
|
+
server.port = 8080
|
108
|
+
|
109
|
+
## bind to localhost (default: all interfaces)
|
110
|
+
#server.bind = "grisu.home.kneschke.de"
|
111
|
+
|
112
|
+
## error-handler for status 404
|
113
|
+
#server.error-handler-404 = "/error-handler.html"
|
114
|
+
#server.error-handler-404 = "/error-handler.php"
|
115
|
+
|
116
|
+
## to help the rc.scripts
|
117
|
+
# server.pid-file = "/var/run/lighttpd.pid"
|
118
|
+
|
119
|
+
|
120
|
+
###### virtual hosts
|
121
|
+
##
|
122
|
+
## If you want name-based virtual hosting add the next three settings and load
|
123
|
+
## mod_simple_vhost
|
124
|
+
##
|
125
|
+
## document-root =
|
126
|
+
## virtual-server-root + virtual-server-default-host + virtual-server-docroot or
|
127
|
+
## virtual-server-root + http-host + virtual-server-docroot
|
128
|
+
##
|
129
|
+
#simple-vhost.server-root = "/home/weigon/wwwroot/servers/"
|
130
|
+
#simple-vhost.default-host = "grisu.home.kneschke.de"
|
131
|
+
#simple-vhost.document-root = "/pages/"
|
132
|
+
|
133
|
+
|
134
|
+
##
|
135
|
+
## Format: <errorfile-prefix><status>.html
|
136
|
+
## -> ..../status-404.html for 'File not found'
|
137
|
+
#server.errorfile-prefix = "/home/weigon/projects/lighttpd/doc/status-"
|
138
|
+
|
139
|
+
## virtual directory listings
|
140
|
+
#server.dir-listing = "enable"
|
141
|
+
|
142
|
+
## send unhandled HTTP-header headers to error-log
|
143
|
+
#debug.dump-unknown-headers = "enable"
|
144
|
+
|
145
|
+
### only root can use these options
|
146
|
+
#
|
147
|
+
# chroot() to directory (default: no chroot() )
|
148
|
+
#server.chroot = "/"
|
149
|
+
|
150
|
+
## change uid to <uid> (default: don't care)
|
151
|
+
#server.username = "wwwrun"
|
152
|
+
|
153
|
+
## change uid to <uid> (default: don't care)
|
154
|
+
#server.groupname = "wwwrun"
|
155
|
+
|
156
|
+
#### compress module
|
157
|
+
#compress.cache-dir = "/tmp/lighttpd/cache/compress/"
|
158
|
+
#compress.filetype = ("text/plain", "text/html")
|
159
|
+
|
160
|
+
#### fastcgi module
|
161
|
+
## read fastcgi.txt for more info
|
162
|
+
fastcgi.server = ( ".rb" =>
|
163
|
+
( "localhost" =>
|
164
|
+
(
|
165
|
+
"socket" => "/tmp/nitro-fcgi.socket",
|
166
|
+
"bin-path" => "/home/gmosx/navel/nitro/examples/tiny/root/fcgi.rb"
|
167
|
+
)
|
168
|
+
)
|
169
|
+
)
|
170
|
+
|
171
|
+
#### CGI module
|
172
|
+
#cgi.assign = ( ".pl" => "/usr/bin/perl",
|
173
|
+
# ".cgi" => "/usr/bin/perl" )
|
174
|
+
#
|
175
|
+
|
176
|
+
#### SSL engine
|
177
|
+
#ssl.engine = "enable"
|
178
|
+
#ssl.pemfile = "server.pem"
|
179
|
+
|
180
|
+
#### status module
|
181
|
+
# status.status-url = "/server-status"
|
182
|
+
# status.config-url = "/server-config"
|
183
|
+
|
184
|
+
#### auth module
|
185
|
+
## read authentification.txt for more info
|
186
|
+
# auth.backend = "plain"
|
187
|
+
# auth.backend.plain.userfile = "lighttpd.user"
|
188
|
+
# auth.backend.plain.groupfile = "lighttpd.group"
|
189
|
+
|
190
|
+
# auth.backend.ldap.hostname = "localhost"
|
191
|
+
# auth.backend.ldap.base-dn = "dc=my-domain,dc=com"
|
192
|
+
# auth.backend.ldap.filter = "(uid=$)"
|
193
|
+
|
194
|
+
# auth.require = ( "/server-status" =>
|
195
|
+
# (
|
196
|
+
# "method" => "digest",
|
197
|
+
# "realm" => "download archiv",
|
198
|
+
# "require" => "group=www|user=jan|host=192.168.2.10"
|
199
|
+
# ),
|
200
|
+
# "/server-info" =>
|
201
|
+
# (
|
202
|
+
# "method" => "digest",
|
203
|
+
# "realm" => "download archiv",
|
204
|
+
# "require" => "group=www|user=jan|host=192.168.2.10"
|
205
|
+
# )
|
206
|
+
# )
|
207
|
+
|
208
|
+
#### url handling modules (rewrite, redirect, access)
|
209
|
+
|
210
|
+
url.rewrite = (
|
211
|
+
"^/([\/\-_a-zA-Z0-9]+)?$" => "/fcgi.rb",
|
212
|
+
"^/([\/\-_a-zA-Z0-9]+)?\?([\-_a-zA-Z0-9=;&%]*)$" => "/fcgi.rb?$2"
|
213
|
+
)
|
214
|
+
|
215
|
+
# url.redirect = ( "^/wishlist/(.+)" => "http://www.123.org/$1" )
|
216
|
+
|
217
|
+
#
|
218
|
+
# define a pattern for the host url finding
|
219
|
+
# %% => % sign
|
220
|
+
# %0 => domain name + tld
|
221
|
+
# %1 => tld
|
222
|
+
# %2 => domain name without tld
|
223
|
+
# %3 => subdomain 1 name
|
224
|
+
# %4 => subdomain 2 name
|
225
|
+
#
|
226
|
+
# evhost.path-pattern = "/home/storage/dev/www/%3/htdocs/"
|
227
|
+
|
228
|
+
#### expire module
|
229
|
+
# expire.url = ( "/buggy/" => "access 2 hours", "/asdhas/" => "access plus 1 seconds 2 minutes")
|
230
|
+
|
231
|
+
#### ssi
|
232
|
+
# ssi.extension = ( ".shtml" )
|
233
|
+
|
234
|
+
#### rrdtool
|
235
|
+
# rrdtool.binary = "/usr/bin/rrdtool"
|
236
|
+
# rrdtool.db-name = "/var/www/lighttpd.rrd"
|