ramaze 0.2.0 → 0.2.1

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 (55) hide show
  1. data/Rakefile +13 -7
  2. data/doc/README +1 -1
  3. data/doc/README.html +729 -0
  4. data/doc/meta/users.kml +61 -59
  5. data/doc/readme_chunks/installing.txt +1 -1
  6. data/examples/auth/auth.rb +13 -8
  7. data/examples/element.rb +1 -2
  8. data/examples/ramaise.rb +139 -0
  9. data/examples/simple.rb +2 -5
  10. data/examples/sourceview/public/coderay.css +104 -0
  11. data/examples/sourceview/public/jquery.treeview.css +10 -9
  12. data/examples/sourceview/public/jquery.treeview.js +7 -7
  13. data/examples/sourceview/public/sourceview.js +43 -7
  14. data/examples/sourceview/sourceview.rb +36 -33
  15. data/examples/sourceview/template/index.haml +33 -17
  16. data/examples/wikore/spec/wikore.rb +1 -0
  17. data/examples/wikore/src/controller.rb +0 -1
  18. data/examples/wikore/src/model.rb +17 -16
  19. data/lib/proto/src/controller/main.rb +1 -1
  20. data/lib/proto/start.rb +2 -3
  21. data/lib/ramaze.rb +3 -0
  22. data/lib/ramaze/contrib/auto_params.rb +3 -3
  23. data/lib/ramaze/contrib/gzip_filter.rb +3 -4
  24. data/lib/ramaze/contrib/route.rb +5 -0
  25. data/lib/ramaze/controller/resolve.rb +1 -1
  26. data/lib/ramaze/dispatcher/action.rb +1 -1
  27. data/lib/ramaze/dispatcher/error.rb +7 -4
  28. data/lib/ramaze/gestalt.rb +1 -2
  29. data/lib/ramaze/helper.rb +8 -4
  30. data/lib/ramaze/helper/auth.rb +1 -1
  31. data/lib/ramaze/helper/cache.rb +4 -0
  32. data/lib/ramaze/helper/identity.rb +2 -2
  33. data/lib/ramaze/snippets/{string/DIVIDE.rb → divide.rb} +11 -8
  34. data/lib/ramaze/snippets/string/unindent.rb +7 -0
  35. data/lib/ramaze/snippets/thread/into.rb +5 -12
  36. data/lib/ramaze/spec/helper/wrap.rb +1 -1
  37. data/lib/ramaze/template/haml.rb +4 -14
  38. data/lib/ramaze/template/sass.rb +4 -14
  39. data/lib/ramaze/trinity/request.rb +34 -1
  40. data/lib/ramaze/version.rb +1 -1
  41. data/rake_tasks/coverage.rake +46 -0
  42. data/rake_tasks/spec.rake +1 -1
  43. data/spec/contrib/auto_params.rb +6 -1
  44. data/spec/contrib/route.rb +0 -2
  45. data/spec/contrib/sequel/fill.rb +6 -4
  46. data/spec/ramaze/controller/resolve.rb +31 -0
  47. data/spec/ramaze/helper/cache.rb +14 -7
  48. data/spec/ramaze/template/haml.rb +14 -0
  49. data/spec/ramaze/template/sass.rb +23 -1
  50. data/spec/ramaze/trinity/request.rb +19 -0
  51. data/spec/snippets/{string/DIVIDE.rb → divide.rb} +5 -1
  52. data/spec/snippets/kernel/__dir__.rb +1 -1
  53. data/spec/snippets/string/unindent.rb +22 -0
  54. data/spec/snippets/thread/into.rb +21 -0
  55. metadata +90 -80
data/Rakefile CHANGED
@@ -16,6 +16,7 @@ load 'rake_tasks/conf.rake'
16
16
  load 'rake_tasks/gem.rake'
17
17
  load 'rake_tasks/maintenance.rake'
18
18
  load 'rake_tasks/spec.rake'
19
+ load 'rake_tasks/coverage.rake'
19
20
 
20
21
  task :default => ['test:all']
21
22
  task :test => ['test:all']
@@ -55,11 +56,11 @@ end
55
56
 
56
57
  require 'spec/rake/spectask'
57
58
  desc "Generate HTML coverage report"
58
- Spec::Rake::SpecTask.new(:rcov_summary => :rcov_dir) do |t|
59
- t.spec_files = FileList['test/tc_adapter.rb']
60
- t.spec_opts = ["--format", "html"]
61
- t.out = 'doc/output/tools/rcov/test.html'
62
- t.fail_on_error = false
59
+ task :rcov_summary => :rcov_dir do
60
+ `rcov --version`
61
+ raise LoadError, "Please `gem install rcov` first" if $?.exitstatus == 127
62
+ raise "Run `rake coverage` to generate coverage data first" unless File.exists? 'coverage.data'
63
+ sh "rcov --aggregate coverage.data -o doc/output/tools/rcov/"
63
64
  end
64
65
 
65
66
  desc "generate rdoc"
@@ -70,7 +71,9 @@ end
70
71
  desc "generate improved allison-rdoc"
71
72
  task :allison => :clean do
72
73
  opts = RDOC_OPTS
73
- opts << %w[--template '/home/manveru/prog/projects/allison/allison.rb']
74
+ path = `allison --path`.strip
75
+ raise LoadError, "Please `gem install allison` first" if $?.exitstatus == 127
76
+ opts << %W[--template '#{path}']
74
77
  sh "rdoc #{(RDOC_OPTS + RDOC_FILES).join(' ')}"
75
78
  end
76
79
 
@@ -120,9 +123,12 @@ end
120
123
 
121
124
  desc "show how many patches we made so far"
122
125
  task :patchsize do
123
- size = `darcs changes`.split("\n").reject{|l| l =~ /^\s/ or l.empty?}.size
126
+ patches = `darcs changes --reverse`.split("\n")
127
+ size = patches.reject{|l| l =~ /^\s/ or l.empty?}.size
124
128
  puts "currently we have #{size} patches"
125
129
  puts "shall i now play some Death-Metal for you?" if size == 666
130
+ days = (Time.now - Time.parse(patches[0])) / (3600*24)
131
+ puts "#{days.round} days since init, avg #{"%4.2f" % (size/days)} patches per day"
126
132
  end
127
133
 
128
134
  desc "show who made how many patches"
data/doc/README CHANGED
@@ -251,7 +251,7 @@ There are some basic principles that Ramaze tries to follow:
251
251
  To get the latest and sweetest, you can just pull from the repository and run
252
252
  Ramaze that way.
253
253
 
254
- $ darcs get --partial http://manveru.mine.nu/ramaze
254
+ $ darcs get --partial http://darcs.ramaze.net/ramaze
255
255
 
256
256
  Please read the man page or `darcs help` for more information about updating
257
257
  and creating your own patches.
@@ -0,0 +1,729 @@
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>doc/README
55
+ </td>
56
+ </tr>
57
+ <tr class="top-aligned-row">
58
+ <td><strong>Last Update:</strong></td>
59
+ <td>Wed Nov 21 14:52:17 +0900 2007</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
+ <pre>
73
+ Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
74
+ All files in this distribution are subject to the terms of the Ruby license.
75
+ </pre>
76
+ <h1>About Ramaze</h1>
77
+ <p>
78
+ Ramaze is a very simple and straight-forward web-framework. The philosophy
79
+ of it could be expressed in a mix of KISS and POLS, trying to make simple
80
+ things simple and complex things possible.
81
+ </p>
82
+ <p>
83
+ This of course is nothing new to anyone who knows some ruby, but is often
84
+ forgotten in a chase for new functionality and features. Ramaze only tries
85
+ to give you the ultimate tools, but you have to use them yourself to
86
+ achieve perfect custom-tailored results.
87
+ </p>
88
+ <p>
89
+ Another one of the goals during development of Ramaze was to make every
90
+ part as modular and therefor reuasable as possible, not only to provide a
91
+ basic understanding after the first glance, but also to make it as simple
92
+ as possible to reuse parts of the code.
93
+ </p>
94
+ <p>
95
+ The original purpose of Ramaze was to act as a kind of framework to build
96
+ web-frameworks, this was made obsolete by the introduction of rack, which
97
+ provides this feature at a better level without trying to enforce any
98
+ structural layout of the resulting framework.
99
+ </p>
100
+ <h1>Features Overview</h1>
101
+ <p>
102
+ Ramaze offers following features at the moment:
103
+ </p>
104
+ <ul>
105
+ <li>Adapters
106
+
107
+ <pre>
108
+ Ramaze takes advantage of the rack library to provide a common way of
109
+ handling different ways to serve its content.
110
+
111
+ Rack supports at the moment:
112
+
113
+ * [Mongrel](http://mongrel.rubyforge.org/)
114
+
115
+ Mongrel is a fast HTTP library and server for Ruby that is intended for
116
+ hosting Ruby web applications of any kind using plain HTTP rather than
117
+ FastCGI or SCGI.
118
+
119
+ * [WEBrick](http://www.webrick.org/)
120
+
121
+ WEBrick is a Ruby library program to build HTTP servers.
122
+
123
+ * CGI
124
+
125
+ CGI is the Common Gateway Interface and is one of the most basic ways
126
+ to integrate into Webservers like Apache or Lighttpd.
127
+
128
+ * FCGI
129
+
130
+ Improvment of CGI as it doesn't start up a new connection to Ramaze on
131
+ every request.
132
+ </pre>
133
+ </li>
134
+ <li>Templates
135
+
136
+ <ul>
137
+ <li>[Amrita2](<a
138
+ href="http://amrita2.rubyforge.org">amrita2.rubyforge.org</a>/)
139
+
140
+ <p>
141
+ Amrita2 is a xml/xhtml template library for Ruby. It makes html documents
142
+ from a template and a model data.
143
+ </p>
144
+ </li>
145
+ <li>[Erubis](<a
146
+ href="http://rubyforge.org/projects/erubis">rubyforge.org/projects/erubis</a>)
147
+
148
+ <p>
149
+ Erubis is a fast, secure, and very extensible implementation of eRuby.
150
+ </p>
151
+ </li>
152
+ <li>[Haml](<a href="http://haml.hamptoncatlin.com">haml.hamptoncatlin.com</a>/)
153
+
154
+ <p>
155
+ Haml takes your gross, ugly templates and replaces them with veritable
156
+ Haiku.
157
+ </p>
158
+ </li>
159
+ <li>[Liquid](<a
160
+ href="http://home.leetsoft.com/liquid">home.leetsoft.com/liquid</a>)
161
+
162
+ <p>
163
+ Liquid&#8216;s syntax and parse model are inspired by Django templates, as
164
+ well as PHP&#8216;s smarty.
165
+ </p>
166
+ </li>
167
+ <li>[Remarkably](<a
168
+ href="http://rubyforge.org/projects/remarkably">rubyforge.org/projects/remarkably</a>)
169
+
170
+ <p>
171
+ Remarkably is a very tiny Markaby-like XML builder
172
+ </p>
173
+ </li>
174
+ <li>[Markaby](<a
175
+ href="http://code.whytheluckystiff.net/markaby">code.whytheluckystiff.net/markaby</a>/)
176
+
177
+ <p>
178
+ Markaby means Markup as Ruby.
179
+ </p>
180
+ </li>
181
+ <li>[Sass](<a
182
+ href="http://haml.hamptoncatlin.com/docs/sass">haml.hamptoncatlin.com/docs/sass</a>)
183
+
184
+ <p>
185
+ Sass is a meta-language on top of CSS that‘s used to describe the style
186
+ of a document cleanly and structurally, with more power than flat CSS
187
+ allows.
188
+ </p>
189
+ </li>
190
+ <li>Ezamar
191
+
192
+ <p>
193
+ A simple homage to [Nitro](<a
194
+ href="http://nitroproject.org)s">nitroproject.org)s</a> templating, is
195
+ shipped together with Ramaze.
196
+ </p>
197
+ </li>
198
+ </ul>
199
+ </li>
200
+ <li>Cache
201
+
202
+ <ul>
203
+ <li>Hash
204
+
205
+ </li>
206
+ <li>YAML::Store
207
+
208
+ </li>
209
+ <li>MemCache
210
+
211
+ </li>
212
+ </ul>
213
+ </li>
214
+ <li>Helper
215
+
216
+ <ul>
217
+ <li>Active by default
218
+
219
+ <ul>
220
+ <li>CGI
221
+
222
+ <p>
223
+ Shortcuts for escape/unescape of the CGI module.
224
+ </p>
225
+ </li>
226
+ <li>File
227
+
228
+ <p>
229
+ Helps you serving files from your Controller.
230
+ </p>
231
+ </li>
232
+ <li>Flash
233
+
234
+ <p>
235
+ Store a couple of values for one request associated with a session.
236
+ </p>
237
+ </li>
238
+ <li>Link
239
+
240
+ <p>
241
+ Easier linking to the various parts of your applications Controllers and
242
+ Actions.
243
+ </p>
244
+ </li>
245
+ <li>Redirect
246
+
247
+ <p>
248
+ Easy redirection.
249
+ </p>
250
+ </li>
251
+ </ul>
252
+ </li>
253
+ <li>Optional
254
+
255
+ <ul>
256
+ <li>Aspect
257
+
258
+ <p>
259
+ Allows you to wrap different Actions on your Controller with code.
260
+ </p>
261
+ </li>
262
+ <li>Auth
263
+
264
+ <p>
265
+ Simple way to add basic authentication.
266
+ </p>
267
+ </li>
268
+ <li>Cache
269
+
270
+ <p>
271
+ Easy caching Actions and values.
272
+ </p>
273
+ </li>
274
+ <li>Identity
275
+
276
+ <p>
277
+ For ease of use of the OpenID authentication mechanism.
278
+ </p>
279
+ </li>
280
+ <li>Inform
281
+
282
+ <p>
283
+ Wrapping the functionality of Ramazes logging facilities.
284
+ </p>
285
+ </li>
286
+ <li>Markaby
287
+
288
+ <p>
289
+ Allows you to use Markaby in your Controller without having it as the
290
+ default templating engine.
291
+ </p>
292
+ </li>
293
+ <li>Nitroform
294
+
295
+ <p>
296
+ Hooks up on nitros form builder to help you creating forms from Og objects.
297
+ </p>
298
+ </li>
299
+ <li>OpenID
300
+
301
+ <p>
302
+ Authentication via OpenID made easy.
303
+ </p>
304
+ </li>
305
+ <li>Pager
306
+
307
+ <p>
308
+ Displays a collection of entitities in multiple pages.
309
+ </p>
310
+ </li>
311
+ <li>Partial
312
+
313
+ <p>
314
+ Renders so-called partials.
315
+ </p>
316
+ </li>
317
+ <li>Stack
318
+
319
+ <p>
320
+ Allows you to use a call/answer mechanism for things like redirection to
321
+ the site a user entered login-forms from.
322
+ </p>
323
+ </li>
324
+ </ul>
325
+ </li>
326
+ </ul>
327
+ </li>
328
+ <li>Various
329
+
330
+ <ul>
331
+ <li>Sessions
332
+
333
+ </li>
334
+ <li>Global configuration system
335
+
336
+ </li>
337
+ <li>Simple request/response handling
338
+
339
+ </li>
340
+ <li>Custom sophisticated Error-handling
341
+
342
+ </li>
343
+ </ul>
344
+ </li>
345
+ </ul>
346
+ <h1>Basic Principles</h1>
347
+ <p>
348
+ There are some basic principles that Ramaze tries to follow:
349
+ </p>
350
+ <ul>
351
+ <li>KISS (Keep It Super Simple)
352
+
353
+ <p>
354
+ Ramaze doesn&#8216;t introduce any major change of paradigm for everyone
355
+ familiar with Ruby and the basics of Web-development.
356
+ </p>
357
+ </li>
358
+ <li>POLS (Principle Of Least Surprise)
359
+
360
+ <p>
361
+ Ramaze tries to be intuitive and easy to learn. Most functionality is built
362
+ in a way to help, not to obfuscate or confuse.
363
+ </p>
364
+ </li>
365
+ <li>Modular design
366
+
367
+ <p>
368
+ Use what you want and how you want it.
369
+ </p>
370
+ <p>
371
+ Through Ruby Ramaze provides one of the most powerful programming-languages
372
+ available, giving you full control over your system.
373
+ </p>
374
+ <p>
375
+ Even the most essential parts of Ramaze can easily be replaced and/or
376
+ modified without losing the advantage of the whole framework.
377
+ </p>
378
+ </li>
379
+ <li>Minimal dependencies
380
+
381
+ <p>
382
+ Nothing besides Ruby is required for the basic features.
383
+ </p>
384
+ <p>
385
+ Of course you can take advantage of several wonderful libraries, but Ramaze
386
+ is built in a way to be run on any basic setup.
387
+ </p>
388
+ </li>
389
+ <li>Documentation
390
+
391
+ <p>
392
+ Document everything, classes, modules, methods, configuration&#8230;
393
+ </p>
394
+ <p>
395
+ Through 100% documentation Ramaze gives the developer easy and solid
396
+ understanding of the underlying concepts and functionality.
397
+ </p>
398
+ </li>
399
+ <li>Open development
400
+
401
+ <p>
402
+ Everyone is welcome to contribute to Ramaze in the easiest way possible.
403
+ The repository is open for patches passing the Test-suite.
404
+ </p>
405
+ </li>
406
+ <li>Examples
407
+
408
+ <p>
409
+ Everyone learns different, some only read the source, others browse
410
+ documentation, but everyone loves examples for a quick and painless start.
411
+ </p>
412
+ <p>
413
+ Ramaze addresses this need and offers a wide variety of examples of usage,
414
+ basic functionality, project-layout and more advanced applications.
415
+ </p>
416
+ </li>
417
+ <li>Fully BDD (Behaviour Driven Design)
418
+
419
+ <p>
420
+ Ramaze has a very complete set of so-called specifications built by RSpec.
421
+ These specs define the way Ramaze has to behave.
422
+ </p>
423
+ <p>
424
+ The specs are checked every time a new patch is pushed into the repository,
425
+ deciding whether the changes the patch applies are valid and don&#8216;t
426
+ break the framework.
427
+ </p>
428
+ </li>
429
+ </ul>
430
+ <h1>Installation</h1>
431
+ <ul>
432
+ <li>via RubyGems
433
+
434
+ <p>
435
+ The simplest way of installing Ramaze is via
436
+ </p>
437
+ <pre>
438
+ $ gem install ramaze
439
+ </pre>
440
+ <p>
441
+ in case you have RubyGems installed.
442
+ </p>
443
+ </li>
444
+ <li>via darcs
445
+
446
+ <p>
447
+ To get the latest and sweetest, you can just pull from the repository and
448
+ run Ramaze that way.
449
+ </p>
450
+ <pre>
451
+ $ darcs get --partial http://darcs.ramaze.net/ramaze
452
+ </pre>
453
+ <p>
454
+ Please read the man page or `darcs help` for more information about
455
+ updating and creating your own patches. This is at the moment the premier
456
+ way to use Ramaze, since it is the way I use it.
457
+ </p>
458
+ <p>
459
+ Some hints for the usage of Darcs.
460
+ </p>
461
+ <ul>
462
+ <li>use require &#8216;ramaze&#8217; from everywhere
463
+
464
+ <p>
465
+ add a file to your site_ruby named &#8216;ramaze.rb&#8217; the content
466
+ should be: &quot;require
467
+ &#8217;/path/to/darcs/repo/ramaze/lib/ramaze&#8217;&quot;
468
+ </p>
469
+ </li>
470
+ <li>get the latest version (from inside the ramaze-directory)
471
+
472
+ <p>
473
+ $ darcs pull
474
+ </p>
475
+ </li>
476
+ <li>record a patch
477
+
478
+ <p>
479
+ $ darcs record
480
+ </p>
481
+ </li>
482
+ <li>output your patches into a bundle ready to be mailed (compress it before
483
+ sending to make sure it arrives in the way you sent it)
484
+
485
+ <p>
486
+ $ darcs send -o ramaze_bundle $ gzip -c ramaze_bundle &gt; ramaze_bundle.gz
487
+ </p>
488
+ </li>
489
+ </ul>
490
+ </li>
491
+ <li>via install.rb
492
+
493
+ <p>
494
+ Support for install.rb has been canceled and the file removed.
495
+ </p>
496
+ </li>
497
+ </ul>
498
+ <h1>Getting Started</h1>
499
+ <p>
500
+ Now that you have a vague idea of what you&#8216;re about to get into you
501
+ might just want to get a way to get up and running ASAP. Please read below
502
+ for more information about installation.
503
+ </p>
504
+ <p>
505
+ Depending on what you are planning to do you can either just go and start
506
+ reading the source or directly get some hands-on experience by trying some
507
+ of the examples. Most things will require dependencies though. The basic
508
+ functionality is provided by the WEBrick adapter and the Template::Ramaze,
509
+ which just run out of the box. For more features you will have to install
510
+ some templating-engines and mongrel (<em>very</em> recommended). Ramaze
511
+ will inform you when it needs further dependencies, so just go and try some
512
+ things.
513
+ </p>
514
+ <p>
515
+ Some places to get started are:
516
+ </p>
517
+ <ul>
518
+ <li>Read the documentation.
519
+
520
+ </li>
521
+ <li>Run and read the test cases.
522
+
523
+ </li>
524
+ <li>Look at the examples and run/modify them.
525
+
526
+ </li>
527
+ </ul>
528
+ <h1>A couple of Examples</h1>
529
+ <p>
530
+ There are some examples for your instant pleasure inside the
531
+ examples-directory in the Ramaze-distribution. To start up an example, you
532
+ can use the Ramaze binary located in bin/ramaze for example:
533
+ </p>
534
+ <pre>
535
+ $ ramaze examples/hello.rb
536
+ </pre>
537
+ <p>
538
+ Or:
539
+ </p>
540
+ <pre>
541
+ $ cd examples/blog
542
+ $ ramaze
543
+ </pre>
544
+ <p>
545
+ Since ramaze uses the start.rb by default if you don&#8216;t pass anything
546
+ else.
547
+ </p>
548
+ <p>
549
+ For more information about the usage of ramaze try:
550
+ </p>
551
+ <pre>
552
+ $ ramaze --help
553
+ </pre>
554
+ <p>
555
+ Examples include:
556
+ </p>
557
+ <ul>
558
+ <li>examples/hello.rb Hello, World!
559
+
560
+ </li>
561
+ <li>examples/simple.rb A bit more advanced than the hello-example, but still
562
+ very basic.
563
+
564
+ </li>
565
+ <li>examples/blog Not yet fully functional, but coming along.
566
+
567
+ </li>
568
+ <li>examples/whywiki A basic examples of a minimalistic application, based on
569
+ the Wiki of _why in his camping-framework.
570
+
571
+ </li>
572
+ <li>examples/templates examples of real usage of the templating-engines. Tries
573
+ to implement the same functionality in each template_*.rb file using a
574
+ different engine.
575
+
576
+ </li>
577
+ </ul>
578
+ <h1>How to find Help</h1>
579
+ <p>
580
+ For help you can:
581
+ </p>
582
+ <ul>
583
+ <li>Visit us in the channel ramaze on irc.freenode.net
584
+
585
+ </li>
586
+ <li>Join the Mailinglist at <a
587
+ href="http://ramaze.rubyforge.org">ramaze.rubyforge.org</a>
588
+
589
+ </li>
590
+ </ul>
591
+ <h1>Appendix</h1>
592
+ <ul>
593
+ <li>Performance
594
+
595
+ <ul>
596
+ <li>Serving
597
+
598
+ <p>
599
+ For best performance you should consider using Mongrel to host your
600
+ application.
601
+ </p>
602
+ </li>
603
+ <li>Caching
604
+
605
+ <p>
606
+ You can easily cache your pages using the CacheHelper. Also, using MemCache
607
+ gives you high-end performance and security.
608
+ </p>
609
+ </li>
610
+ </ul>
611
+ </li>
612
+ </ul>
613
+ <h1>And thanks to&#8230;</h1>
614
+ <p>
615
+ There is a large number of people who made Ramaze possibe by their ongoing
616
+ efforts in the world of open source and by encouraging and helping me.
617
+ </p>
618
+ <p>
619
+ This list is by no means a full listing of all these people, but I try to
620
+ get a good coverage despite that.
621
+ </p>
622
+ <p>
623
+ I would like to thank:
624
+ </p>
625
+ <ul>
626
+ <li>Yukihiro Matsumoto a.k.a matz
627
+
628
+ <pre>
629
+ For giving the world Ruby and bringing fun back into programming.
630
+ </pre>
631
+ </li>
632
+ <li>Zed Shawn a.k.a. zedas
633
+
634
+ <pre>
635
+ For developing Mongrel, Ramaze started out as a simple Hello World based
636
+ on that awesome server.
637
+ </pre>
638
+ </li>
639
+ <li>Christian Neukirchen a.k.a chris2
640
+
641
+ <pre>
642
+ For building rack, which is just what the numerous web-developers had
643
+ anticipated and which will, with no doubt, change the world.
644
+ </pre>
645
+ </li>
646
+ <li>Pistos
647
+
648
+ <pre>
649
+ For continious encouragment and building the first real webpage on Ramaze.
650
+ His bugreports were invaluable.
651
+ </pre>
652
+ </li>
653
+ <li>Jim Weirich
654
+
655
+ <pre>
656
+ For Rake, which lifts off a lot of tasks from the shoulders of every
657
+ developer who uses it.
658
+ </pre>
659
+ </li>
660
+ <li>Thomas Sawyer a.k.a Trans
661
+
662
+ <pre>
663
+ Dragging me deep into the rabbit-hole and showing me how awesome Ruby
664
+ truely is through his work on facets, ratchets and tons of other projects.
665
+ </pre>
666
+ </li>
667
+ <li>George Moschovitis a.k.a gmosx
668
+
669
+ <pre>
670
+ For his tremendous efforts in the Nitro/Og framework, which is a source of
671
+ steady inspiration for Ramaze and brought me to Ruby in the first place.
672
+ </pre>
673
+ </li>
674
+ <li>Rob Levin a.k.a. lilo
675
+
676
+ <pre>
677
+ He founded the most excellent Freenode IRC-network, where the most important
678
+ channels for rubyists are located (as is #ramaze).
679
+ May he rest in peace.
680
+ </pre>
681
+ </li>
682
+ <li>The guys (and gals) in the various channels on Freenode
683
+
684
+ <pre>
685
+ As the people are way too many to be listed, here the channels that i call
686
+ my online home.
687
+ All the people in there deserve special thanks for getting me hooked to Ruby
688
+ and providing their help in a friendly and patient manner.
689
+
690
+ * #nitro
691
+ * #ruby-de
692
+ * #ruby-lang
693
+ * #rubyforce
694
+ </pre>
695
+ </li>
696
+ </ul>
697
+
698
+ </div>
699
+
700
+
701
+ </div>
702
+
703
+
704
+ </div>
705
+
706
+
707
+ <!-- if includes -->
708
+
709
+ <div id="section">
710
+
711
+
712
+
713
+
714
+
715
+
716
+
717
+
718
+ <!-- if method_list -->
719
+
720
+
721
+ </div>
722
+
723
+
724
+ <div id="validator-badges">
725
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
726
+ </div>
727
+
728
+ </body>
729
+ </html>