ramaze 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
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>