merb 0.0.3 → 0.0.4

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.
Files changed (65) hide show
  1. data/README +68 -58
  2. data/Rakefile +7 -6
  3. data/TODO +18 -0
  4. data/bin/merb +2 -2
  5. data/doc/rdoc/classes/Hash.html +148 -0
  6. data/doc/rdoc/classes/Merb/Config.html +161 -0
  7. data/doc/rdoc/classes/Merb/Controller.html +488 -0
  8. data/doc/rdoc/classes/Merb/RouteMatcher.html +354 -0
  9. data/doc/rdoc/classes/Merb/Server.html +288 -0
  10. data/doc/rdoc/classes/Merb.html +143 -0
  11. data/doc/rdoc/classes/MerbHandler.html +404 -0
  12. data/doc/rdoc/classes/MerbHash.html +457 -0
  13. data/doc/rdoc/classes/Noroutefound.html +172 -0
  14. data/doc/rdoc/classes/Object.html +149 -0
  15. data/doc/rdoc/classes/String.html +200 -0
  16. data/doc/rdoc/classes/Symbol.html +172 -0
  17. data/doc/rdoc/created.rid +1 -0
  18. data/doc/rdoc/files/LICENSE.html +129 -0
  19. data/doc/rdoc/files/README.html +330 -0
  20. data/doc/rdoc/files/TODO.html +154 -0
  21. data/doc/rdoc/files/lib/merb/merb_controller_rb.html +101 -0
  22. data/doc/rdoc/files/lib/merb/merb_daemon_rb.html +113 -0
  23. data/doc/rdoc/files/lib/merb/merb_handler_rb.html +108 -0
  24. data/doc/rdoc/files/lib/merb/merb_router_rb.html +101 -0
  25. data/doc/rdoc/files/lib/merb/merb_utils_rb.html +101 -0
  26. data/doc/rdoc/files/lib/merb/noroutefound_rb.html +101 -0
  27. data/doc/rdoc/files/lib/merb_config_rb.html +101 -0
  28. data/doc/rdoc/files/lib/merb_rb.html +112 -0
  29. data/doc/rdoc/fr_class_index.html +38 -0
  30. data/doc/rdoc/fr_file_index.html +38 -0
  31. data/doc/rdoc/fr_method_index.html +78 -0
  32. data/doc/rdoc/index.html +24 -0
  33. data/doc/rdoc/rdoc-style.css +208 -0
  34. data/examples/sample_app/{app → dist/app}/controllers/posts.rb +8 -8
  35. data/examples/sample_app/{app → dist/app}/controllers/test.rb +8 -5
  36. data/examples/sample_app/{app → dist/app}/controllers/upload.rb +13 -5
  37. data/examples/sample_app/dist/app/models/post.rb +13 -0
  38. data/examples/sample_app/dist/app/views/layout/application.rhtml +6 -0
  39. data/examples/sample_app/dist/app/views/layout/foo.rhtml +6 -0
  40. data/examples/sample_app/dist/app/views/layout/posts.rhtml +6 -0
  41. data/examples/sample_app/{app → dist/app}/views/posts/list.rhtml +1 -7
  42. data/examples/sample_app/{app → dist/app}/views/posts/new.rhtml +1 -7
  43. data/examples/sample_app/{app → dist/app}/views/posts/show.rhtml +1 -8
  44. data/examples/sample_app/dist/app/views/test/foo.rhtml +2 -0
  45. data/examples/sample_app/{app → dist/app}/views/test/hello.rhtml +1 -8
  46. data/examples/sample_app/{app → dist/app}/views/upload/start.rhtml +0 -8
  47. data/examples/sample_app/{app → dist/app}/views/upload/upload.rhtml +0 -0
  48. data/examples/sample_app/{conf → dist/conf}/merb_init.rb +5 -2
  49. data/examples/sample_app/{conf → dist/conf}/router.rb +6 -8
  50. data/examples/sample_app/test/test_helper.rb +1 -0
  51. data/examples/skeleton/dist/conf/merb_init.rb +21 -0
  52. data/examples/skeleton/dist/conf/router.rb +23 -0
  53. data/examples/skeleton/test/test_helper.rb +1 -0
  54. data/lib/merb/merb_controller.rb +54 -15
  55. data/lib/merb/merb_daemon.rb +35 -20
  56. data/lib/merb/merb_handler.rb +49 -38
  57. data/lib/merb/merb_router.rb +25 -28
  58. data/lib/merb/merb_utils.rb +98 -9
  59. data/{examples/sample_app/app/controllers → lib/merb}/noroutefound.rb +1 -1
  60. data/lib/merb.rb +4 -4
  61. data/lib/merb_config.rb +1 -1
  62. data/test/unit/route_matcher_test.rb +12 -31
  63. metadata +109 -28
  64. data/examples/sample_app/app/models/post.rb +0 -2
  65. data/examples/sample_app/app/views/test/foo.rhtml +0 -6
@@ -0,0 +1,330 @@
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: README</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>README</h1>
51
+ <table class="header-table">
52
+ <tr class="top-aligned-row">
53
+ <td><strong>Path:</strong></td>
54
+ <td>README
55
+ </td>
56
+ </tr>
57
+ <tr class="top-aligned-row">
58
+ <td><strong>Last Update:</strong></td>
59
+ <td>Thu Oct 26 18:01:00 -0700 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
+ <div id="description">
72
+ <p>
73
+ Copyright (c) 2006 Ezra Zygmuntowicz
74
+ </p>
75
+ <p>
76
+ <a href="../classes/Merb.html">Merb</a>. Mongrel+Erb
77
+ </p>
78
+ <p>
79
+ Little bitty lightweight ruby app server. For when you really need
80
+ performance for simple dynamic pages.
81
+ </p>
82
+ <p>
83
+ **Sample APP included**
84
+ </p>
85
+ <p>
86
+ Unpack the gem and grab the sample app
87
+ </p>
88
+ <p>
89
+ $ gem unpack merb
90
+ </p>
91
+ <p>
92
+ cd merb* cd examples/sample_app
93
+ </p>
94
+ <p>
95
+ $ merb
96
+ </p>
97
+ <p>
98
+ then the sample app will be running on port 4000 in the foreground. you can
99
+ go to a few urls:
100
+ </p>
101
+ <p>
102
+ <a
103
+ href="http://localhost:4000/upload/start">localhost:4000/upload/start</a>
104
+ </p>
105
+ <p>
106
+ <a
107
+ href="http://localhost:4000/foo/123/baz/12234345">localhost:4000/foo/123/baz/12234345</a>
108
+ </p>
109
+ <p>
110
+ *<b>FEATURES</b>* 1. Mongrel handler built in that parses incoming requests
111
+ including multipart uploads and post as well as ?query=strings. Puts the
112
+ params into params and the cookies into cookies when it instantiates your
113
+ controller class.
114
+ </p>
115
+ <ol>
116
+ <li>New RouteMatcher and route compiler. Reads your route definition and
117
+ compiles
118
+
119
+ </li>
120
+ </ol>
121
+ <p>
122
+ a method on the fly that will match the request path against each route and
123
+ do the right thing. So the following routes:
124
+ </p>
125
+ <p>
126
+ Merb::RouteMatcher.prepare do |r|
127
+ </p>
128
+ <pre>
129
+ r.add '/foo/:bar/baz/:id', :controller =&gt; 'Test', :action =&gt; 'foo'
130
+ r.add '/:controller/:action/:id'
131
+ r.add '/bar/:*rest', :controller =&gt; 'Test', :action =&gt; 'glob'
132
+ </pre>
133
+ <p>
134
+ end
135
+ </p>
136
+ <p>
137
+ Will be compiled and defined as a method with this lambda as the body:
138
+ </p>
139
+ <p>
140
+ lambda{|path|
141
+ </p>
142
+ <pre>
143
+ case path
144
+ when Regexp.new('/foo/([^/;.,?]+)/baz/([^/;.,?]+)')
145
+ @sections[:bar] = $1
146
+ @sections[:id] = $2
147
+ return {:controller=&gt;&quot;Test&quot;, :action=&gt;&quot;foo&quot;}.merge(@sections)
148
+ when /\A\/([^\/;.,?]+)(?:\/?\Z|\/([^\/;.,?]+)\/?)(?:\/?\Z|\/([^\/;.,?]+)\/?)\Z/
149
+ @sections[:controller] = $1
150
+ @sections[:action] = $2 || 'index'
151
+ @sections[:id] = $3 || nil
152
+ return @sections
153
+ when Regexp.new('/bar/([^;.,?]+)')
154
+ @sections[:rest] = $1
155
+ return {:controller=&gt;&quot;Test&quot;, :action=&gt;&quot;glob&quot;}.merge(@sections)
156
+ else
157
+ return {:controller=&gt;'Noroutefound', :action=&gt;'noroute'}
158
+ end
159
+ </pre>
160
+ <p>
161
+ }
162
+ </p>
163
+ <ol>
164
+ <li>Simple controller classes with built in render method and template handling
165
+
166
+ </li>
167
+ </ol>
168
+ <p>
169
+ with instance vars available in the views automatically. <a
170
+ href="../classes/Merb.html">Merb</a> also supports layouts. It will look
171
+ for a layout named after your controller class first and then fall back to
172
+ application.rhtml if no layout exists named after your controller. You can
173
+ use render_no_layout or do layout :none right before you render
174
+ </p>
175
+ <p>
176
+ class Test &lt; <a
177
+ href="../classes/Merb/Controller.html">Merb::Controller</a>
178
+ </p>
179
+ <pre>
180
+ def hello
181
+ # params, headers and cookies are available here. string
182
+ # keys and not symbols just yet.
183
+ # Assign the parameter to an instance variable
184
+ @name = params[:name]
185
+ render
186
+ end
187
+ </pre>
188
+ <p>
189
+ end
190
+ </p>
191
+ <p>
192
+ &lt;html&gt;
193
+ </p>
194
+ <pre>
195
+ &lt;head&gt;
196
+ &lt;title&gt;Hello, &lt;%= @name %&gt;&lt;/title&gt;
197
+ &lt;/head&gt;
198
+ &lt;body&gt;
199
+ </pre>
200
+ <p>
201
+ &lt;%= @layout_content %&gt;
202
+ </p>
203
+ <pre>
204
+ &lt;/body&gt;
205
+ </pre>
206
+ <p>
207
+ &lt;/html&gt;
208
+ </p>
209
+ <p>
210
+ &lt;h1&gt;&lt;%= params.inspect %&gt;&lt;/h1&gt; &lt;h1&gt;&lt;%=
211
+ cookies.inspect %&gt;&lt;/h1&gt; &lt;% 5.times do %&gt;
212
+ </p>
213
+ <pre>
214
+ &lt;h1&gt;Hello, &lt;%= @name %&gt;!&lt;/h1&gt;
215
+ </pre>
216
+ <p>
217
+ &lt;% end %&gt;
218
+ </p>
219
+ <ol>
220
+ <li>the server. right now you add your routes in
221
+
222
+ </li>
223
+ </ol>
224
+ <p>
225
+ the appdir/conf/router.rb file. So by default it runs on port 4000
226
+ </p>
227
+ <p>
228
+ $ cd /path/to/your/merb/app $ merb
229
+ </p>
230
+ <ol>
231
+ <li>File uploads. This is the thing that <a
232
+ href="../classes/Merb.html">Merb</a> was written for. Rails doesn&#8216;t
233
+ allow
234
+
235
+ </li>
236
+ </ol>
237
+ <p>
238
+ multiple concurrent file uploads at once without blocking an entire rails
239
+ backend for each file upload. <a href="../classes/Merb.html">Merb</a>
240
+ allows multiple file uploads at once. Start the server and browse to <a
241
+ href="http://localhost:4000/upload/start">localhost:4000/upload/start</a>
242
+ and you will get a file upload form. There is a very simple upload
243
+ controller example that handles this upload. When a file is uploaded with
244
+ <a href="../classes/Merb.html">Merb</a>, it gets put in a Tempfile. So you
245
+ just want to copy it to the right place on the filesystem.
246
+ </p>
247
+ <p>
248
+ def upload
249
+ </p>
250
+ <pre>
251
+ puts params[:file].inspect
252
+
253
+ FileUtils.mv params[:file][:tempfile].path, MERB_ROOT+&quot;/uploads/#{params[:file][:filename]}&quot;
254
+
255
+ render
256
+ </pre>
257
+ <p>
258
+ end
259
+ </p>
260
+ <ol>
261
+ <li><a href="../classes/Merb.html">Merb</a> app layout. A <a
262
+ href="../classes/Merb.html">Merb</a> app contains everything it needs to
263
+ run in production in the
264
+
265
+ </li>
266
+ </ol>
267
+ <p>
268
+ MERB_ROOT/dist directory. So for deployment you only need to deploy the
269
+ dist dir. This keeps your test code and development plugins separate from
270
+ your main app and lets you not deploy them to the live server. You deal
271
+ with two things with this setup, MERB_ROOT and DIST_ROOT. MERB_ROOT is the
272
+ root of the whole tree. And DISTROOT is MERB_ROOT+/dist You will cd into
273
+ MERB_ROOT to run the merb command line. ANd when you deploy live you will
274
+ put the dist dir into another empty MERB_ROOT on the production server.
275
+ </p>
276
+ <p>
277
+ skeleton_app
278
+ </p>
279
+ <pre>
280
+ Rakefile
281
+ README
282
+ scripts
283
+ test
284
+ fixtures
285
+ spec
286
+ unit
287
+ plugins
288
+ dist
289
+ app
290
+ controllers
291
+ models
292
+ views
293
+ conf
294
+ lib
295
+ public
296
+ plugins
297
+ </pre>
298
+
299
+ </div>
300
+
301
+
302
+ </div>
303
+
304
+
305
+ </div>
306
+
307
+
308
+ <!-- if includes -->
309
+
310
+ <div id="section">
311
+
312
+
313
+
314
+
315
+
316
+
317
+
318
+
319
+ <!-- if method_list -->
320
+
321
+
322
+ </div>
323
+
324
+
325
+ <div id="validator-badges">
326
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
327
+ </div>
328
+
329
+ </body>
330
+ </html>
@@ -0,0 +1,154 @@
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: TODO</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>TODO</h1>
51
+ <table class="header-table">
52
+ <tr class="top-aligned-row">
53
+ <td><strong>Path:</strong></td>
54
+ <td>TODO
55
+ </td>
56
+ </tr>
57
+ <tr class="top-aligned-row">
58
+ <td><strong>Last Update:</strong></td>
59
+ <td>Wed Oct 25 17:21:28 -0700 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
+ <div id="description">
72
+ <p>
73
+ [TODO]
74
+ </p>
75
+ <ul>
76
+ <li>Irb Console *<b>DONE</b>*
77
+
78
+ </li>
79
+ <li>Migrations
80
+
81
+ </li>
82
+ <li>Helpers
83
+
84
+ </li>
85
+ <li>config file
86
+
87
+ </li>
88
+ <li>merg args and params *<b>DONE</b>*
89
+
90
+ </li>
91
+ <li>session ** AR ** DRb
92
+
93
+ </li>
94
+ <li>Rails integration
95
+
96
+ </li>
97
+ <li>Mongoose ?
98
+
99
+ </li>
100
+ <li>Text backend?
101
+
102
+ </li>
103
+ <li>plugins support(rails plugins too?)
104
+
105
+ </li>
106
+ <li>Layouts
107
+
108
+ </li>
109
+ <li>auto template_dir
110
+
111
+ </li>
112
+ <li>before/after filters
113
+
114
+ </li>
115
+ <li>merbjs
116
+
117
+ </li>
118
+ <li>testing
119
+
120
+ </li>
121
+ </ul>
122
+
123
+ </div>
124
+
125
+
126
+ </div>
127
+
128
+
129
+ </div>
130
+
131
+
132
+ <!-- if includes -->
133
+
134
+ <div id="section">
135
+
136
+
137
+
138
+
139
+
140
+
141
+
142
+
143
+ <!-- if method_list -->
144
+
145
+
146
+ </div>
147
+
148
+
149
+ <div id="validator-badges">
150
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
151
+ </div>
152
+
153
+ </body>
154
+ </html>
@@ -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: merb_controller.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>merb_controller.rb</h1>
51
+ <table class="header-table">
52
+ <tr class="top-aligned-row">
53
+ <td><strong>Path:</strong></td>
54
+ <td>lib/merb/merb_controller.rb
55
+ </td>
56
+ </tr>
57
+ <tr class="top-aligned-row">
58
+ <td><strong>Last Update:</strong></td>
59
+ <td>Thu Oct 26 17:16:57 -0700 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>
@@ -0,0 +1,113 @@
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: merb_daemon.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>merb_daemon.rb</h1>
51
+ <table class="header-table">
52
+ <tr class="top-aligned-row">
53
+ <td><strong>Path:</strong></td>
54
+ <td>lib/merb/merb_daemon.rb
55
+ </td>
56
+ </tr>
57
+ <tr class="top-aligned-row">
58
+ <td><strong>Last Update:</strong></td>
59
+ <td>Wed Oct 25 20:49:15 -0700 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&nbsp;&nbsp;
77
+ merb&nbsp;&nbsp;
78
+ optparse&nbsp;&nbsp;
79
+ ostruct&nbsp;&nbsp;
80
+ irb&nbsp;&nbsp;
81
+ irb/completion&nbsp;&nbsp;
82
+ </div>
83
+ </div>
84
+
85
+ </div>
86
+
87
+
88
+ </div>
89
+
90
+
91
+ <!-- if includes -->
92
+
93
+ <div id="section">
94
+
95
+
96
+
97
+
98
+
99
+
100
+
101
+
102
+ <!-- if method_list -->
103
+
104
+
105
+ </div>
106
+
107
+
108
+ <div id="validator-badges">
109
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
110
+ </div>
111
+
112
+ </body>
113
+ </html>