ramaze 0.0.9 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (193) hide show
  1. data/Rakefile +14 -259
  2. data/bin/ramaze +52 -25
  3. data/doc/AUTHORS +6 -0
  4. data/doc/CHANGELOG +1363 -42
  5. data/doc/INSTALL +1 -1
  6. data/doc/README +48 -35
  7. data/doc/README.html +637 -0
  8. data/doc/TODO +7 -16
  9. data/doc/allison/allison.css +6 -7
  10. data/doc/allison/allison.gif +0 -0
  11. data/doc/allison/cache/STYLE +1 -2
  12. data/doc/changes.txt +3375 -0
  13. data/doc/changes.xml +3378 -0
  14. data/doc/meta/announcement.txt +47 -0
  15. data/doc/meta/configuration.txt +179 -0
  16. data/doc/meta/internals.txt +111 -0
  17. data/doc/readme_chunks/features.txt +8 -16
  18. data/doc/readme_chunks/installing.txt +7 -1
  19. data/doc/tutorial/todolist.txt +2 -3
  20. data/examples/blog/main.rb +9 -8
  21. data/examples/blog/public/styles/blog.css +132 -0
  22. data/examples/blog/src/controller.rb +14 -41
  23. data/examples/blog/src/model.rb +12 -13
  24. data/examples/blog/src/view.rb +16 -0
  25. data/examples/blog/template/edit.xhtml +19 -8
  26. data/examples/blog/template/index.xhtml +14 -22
  27. data/examples/blog/template/new.xhtml +18 -5
  28. data/examples/caching.rb +5 -8
  29. data/examples/element.rb +3 -3
  30. data/examples/hello.rb +3 -5
  31. data/examples/simple.rb +4 -7
  32. data/examples/templates/template/external.haml +8 -7
  33. data/examples/templates/template/external.mab +11 -8
  34. data/examples/templates/template_amrita2.rb +4 -4
  35. data/examples/templates/template_erubis.rb +3 -3
  36. data/examples/templates/template_ezamar.rb +1 -2
  37. data/examples/templates/template_haml.rb +24 -23
  38. data/examples/templates/template_liquid.rb +3 -1
  39. data/examples/templates/template_markaby.rb +15 -9
  40. data/examples/todolist/src/element/page.rb +1 -1
  41. data/lib/proto/conf/benchmark.yaml +6 -20
  42. data/lib/proto/conf/debug.yaml +6 -19
  43. data/lib/proto/conf/live.yaml +7 -19
  44. data/lib/proto/conf/silent.yaml +6 -16
  45. data/lib/proto/conf/stage.yaml +6 -18
  46. data/lib/proto/public/error.zmr +2 -2
  47. data/lib/ramaze.rb +34 -72
  48. data/lib/ramaze/adapter.rb +21 -18
  49. data/lib/ramaze/adapter/mongrel.rb +0 -3
  50. data/lib/ramaze/adapter/webrick.rb +6 -6
  51. data/lib/ramaze/cache/memcached.rb +3 -0
  52. data/lib/ramaze/controller.rb +227 -183
  53. data/lib/ramaze/dispatcher.rb +34 -129
  54. data/lib/ramaze/dispatcher/action.rb +28 -0
  55. data/lib/ramaze/dispatcher/error.rb +43 -0
  56. data/lib/ramaze/dispatcher/file.rb +34 -0
  57. data/lib/ramaze/global.rb +89 -48
  58. data/lib/ramaze/helper/aspect.rb +8 -6
  59. data/lib/ramaze/helper/auth.rb +3 -3
  60. data/lib/ramaze/helper/cache.rb +2 -2
  61. data/lib/ramaze/helper/file.rb +14 -0
  62. data/lib/ramaze/helper/inform.rb +36 -0
  63. data/lib/ramaze/helper/link.rb +7 -3
  64. data/lib/ramaze/helper/markaby.rb +30 -0
  65. data/lib/ramaze/helper/redirect.rb +2 -0
  66. data/lib/ramaze/inform.rb +8 -182
  67. data/lib/ramaze/inform/analogger.rb +19 -0
  68. data/lib/ramaze/inform/growl.rb +28 -0
  69. data/lib/ramaze/inform/hub.rb +26 -0
  70. data/lib/ramaze/inform/informer.rb +92 -0
  71. data/lib/ramaze/inform/informing.rb +44 -0
  72. data/lib/ramaze/inform/syslog.rb +27 -0
  73. data/lib/ramaze/inform/xosd.rb +42 -0
  74. data/lib/ramaze/snippets.rb +6 -2
  75. data/lib/ramaze/snippets/object/traits.rb +13 -1
  76. data/lib/ramaze/snippets/ramaze/autoreload.rb +58 -2
  77. data/lib/ramaze/snippets/string/color.rb +27 -0
  78. data/lib/ramaze/snippets/string/each.rb +6 -0
  79. data/lib/ramaze/snippets/struct/fill.rb +15 -0
  80. data/lib/ramaze/template/ezamar.rb +13 -22
  81. data/lib/ramaze/template/ezamar/element.rb +12 -12
  82. data/lib/ramaze/template/liquid.rb +19 -18
  83. data/lib/ramaze/template/markaby.rb +37 -58
  84. data/lib/ramaze/tool/localize.rb +128 -0
  85. data/lib/ramaze/tool/tidy.rb +51 -21
  86. data/lib/ramaze/trinity.rb +3 -3
  87. data/lib/ramaze/trinity/request.rb +41 -23
  88. data/lib/ramaze/trinity/response.rb +10 -5
  89. data/lib/ramaze/trinity/session.rb +17 -3
  90. data/lib/ramaze/version.rb +2 -2
  91. data/rake_tasks/conf.rake +56 -0
  92. data/rake_tasks/gem.rake +44 -0
  93. data/rake_tasks/maintaince.rake +187 -0
  94. data/spec/all.rb +32 -0
  95. data/spec/examples/caching.rb +19 -0
  96. data/spec/examples/element.rb +15 -0
  97. data/spec/examples/hello.rb +11 -0
  98. data/spec/examples/simple.rb +51 -0
  99. data/spec/examples/templates/template_amrita2.rb +14 -0
  100. data/spec/examples/templates/template_erubis.rb +21 -0
  101. data/spec/examples/templates/template_ezamar.rb +22 -0
  102. data/spec/examples/templates/template_haml.rb +23 -0
  103. data/spec/examples/templates/template_liquid.rb +24 -0
  104. data/spec/examples/templates/template_markaby.rb +21 -0
  105. data/spec/helper.rb +81 -0
  106. data/spec/{spec_helper_context.rb → helper/context.rb} +1 -1
  107. data/spec/helper/layout.rb +55 -0
  108. data/spec/helper/mock_http.rb +66 -0
  109. data/spec/{spec_helper_requester.rb → helper/requester.rb} +0 -6
  110. data/spec/{spec_helper_simple_http.rb → helper/simple_http.rb} +57 -57
  111. data/spec/helper/wrap.rb +193 -0
  112. data/spec/{adapter_spec.rb → ramaze/adapter.rb} +7 -5
  113. data/spec/{tc_adapter_mongrel.rb → ramaze/adapter/mongrel.rb} +2 -2
  114. data/spec/{tc_adapter_webrick.rb → ramaze/adapter/webrick.rb} +2 -2
  115. data/spec/{tc_cache.rb → ramaze/cache.rb} +16 -16
  116. data/spec/ramaze/conf/locale_de.yaml +6 -0
  117. data/spec/ramaze/conf/locale_en.yaml +6 -0
  118. data/spec/ramaze/controller.rb +184 -0
  119. data/spec/ramaze/controller/template/greet.xhtml +1 -0
  120. data/spec/ramaze/controller/template_resolving.rb +54 -0
  121. data/spec/ramaze/dependencies.rb +16 -0
  122. data/spec/{tc_element.rb → ramaze/element.rb} +21 -19
  123. data/spec/ramaze/error.rb +64 -0
  124. data/spec/{tc_gestalt.rb → ramaze/gestalt.rb} +10 -10
  125. data/spec/{tc_global.rb → ramaze/global.rb} +7 -7
  126. data/spec/{tc_helper_aspect.rb → ramaze/helper/aspect.rb} +22 -14
  127. data/spec/{tc_helper_auth.rb → ramaze/helper/auth.rb} +9 -7
  128. data/spec/{tc_helper_cache.rb → ramaze/helper/cache.rb} +14 -24
  129. data/spec/{tc_helper_feed.rb → ramaze/helper/feed.rb} +12 -12
  130. data/spec/ramaze/helper/file.rb +17 -0
  131. data/spec/{tc_helper_flash.rb → ramaze/helper/flash.rb} +16 -17
  132. data/spec/{tc_helper_form.rb → ramaze/helper/form.rb} +25 -26
  133. data/spec/{tc_helper_link.rb → ramaze/helper/link.rb} +9 -9
  134. data/spec/{tc_helper_redirect.rb → ramaze/helper/redirect.rb} +11 -10
  135. data/spec/{tc_helper_stack.rb → ramaze/helper/stack.rb} +10 -11
  136. data/spec/ramaze/inform/informer.rb +40 -0
  137. data/spec/ramaze/inform/syslog.rb +10 -0
  138. data/spec/ramaze/localize.rb +40 -0
  139. data/spec/ramaze/morpher.rb +82 -0
  140. data/spec/ramaze/params.rb +124 -0
  141. data/spec/{public → ramaze/public}/error404.xhtml +0 -0
  142. data/spec/{public → ramaze/public}/favicon.ico +0 -0
  143. data/spec/{public → ramaze/public}/ramaze.png +0 -0
  144. data/spec/{public → ramaze/public}/test_download.css +0 -0
  145. data/spec/ramaze/request.rb +129 -0
  146. data/spec/{tc_request_mongrel.rb → ramaze/request/mongrel.rb} +2 -2
  147. data/spec/{tc_request_webrick.rb → ramaze/request/webrick.rb} +1 -1
  148. data/spec/{tc_session.rb → ramaze/session.rb} +18 -18
  149. data/spec/{tc_store.rb → ramaze/store/default.rb} +10 -10
  150. data/spec/{tc_store_yaml.rb → ramaze/store/yaml.rb} +9 -9
  151. data/spec/ramaze/template.rb +86 -0
  152. data/spec/{tc_template_amrita2.rb → ramaze/template/amrita2.rb} +5 -5
  153. data/spec/{template → ramaze/template}/amrita2/data.amrita +0 -0
  154. data/spec/{template → ramaze/template}/amrita2/index.amrita +0 -0
  155. data/spec/{template → ramaze/template}/amrita2/sum.amrita +0 -0
  156. data/spec/{tc_template_erubis.rb → ramaze/template/erubis.rb} +9 -9
  157. data/spec/{template → ramaze/template}/erubis/sum.rhtml +0 -0
  158. data/spec/ramaze/template/ezamar.rb +62 -0
  159. data/spec/{template → ramaze/template}/ezamar/another/long/action.zmr +0 -0
  160. data/spec/{template → ramaze/template}/ezamar/combined.zmr +0 -0
  161. data/spec/{template → ramaze/template}/ezamar/file_only.zmr +0 -0
  162. data/spec/{template → ramaze/template}/ezamar/index.zmr +0 -0
  163. data/spec/ramaze/template/ezamar/nested.zmr +1 -0
  164. data/spec/{template → ramaze/template}/ezamar/some__long__action.zmr +0 -0
  165. data/spec/{template → ramaze/template}/ezamar/sum.zmr +0 -0
  166. data/spec/{tc_template_haml.rb → ramaze/template/haml.rb} +7 -7
  167. data/spec/{template → ramaze/template}/haml/index.haml +0 -0
  168. data/spec/{template → ramaze/template}/haml/with_vars.haml +0 -0
  169. data/spec/{tc_template_liquid.rb → ramaze/template/liquid.rb} +7 -7
  170. data/spec/{template → ramaze/template}/liquid/index.liquid +0 -0
  171. data/spec/{template → ramaze/template}/liquid/products.liquid +0 -0
  172. data/spec/ramaze/template/markaby.rb +59 -0
  173. data/spec/{template → ramaze/template}/markaby/external.mab +0 -0
  174. data/spec/{template → ramaze/template}/markaby/sum.mab +0 -0
  175. data/spec/ramaze/template/ramaze/external.test +1 -0
  176. data/spec/{tc_tidy.rb → ramaze/tidy.rb} +3 -3
  177. metadata +145 -81
  178. data/examples/blog/public/screen.css +0 -106
  179. data/examples/blog/src/element.rb +0 -58
  180. data/examples/blog/template/view.xhtml +0 -15
  181. data/examples/blog/test/tc_entry.rb +0 -18
  182. data/lib/proto/public/404.jpg +0 -0
  183. data/spec/request_tc_helper.rb +0 -135
  184. data/spec/spec_all.rb +0 -118
  185. data/spec/spec_helper.rb +0 -66
  186. data/spec/tc_controller.rb +0 -49
  187. data/spec/tc_dependencies.rb +0 -13
  188. data/spec/tc_error.rb +0 -43
  189. data/spec/tc_morpher.rb +0 -88
  190. data/spec/tc_params.rb +0 -125
  191. data/spec/tc_template_ezamar.rb +0 -64
  192. data/spec/tc_template_markaby.rb +0 -72
  193. data/spec/template/ezamar/nested.zmr +0 -1
@@ -0,0 +1,47 @@
1
+ This is a one-time post to announce the creation of the Ramaze project, an open
2
+ source web framework with the aim to be light and modular.
3
+ Ramaze is already relatively stable and we decided that it is time to give it
4
+ broader exposure to find new users and contributors.
5
+
6
+ Home page: http://ramaze.rubyforge.org
7
+ IRC: #ramaze on irc.freenode.net
8
+
9
+ Features:
10
+ - Builds on top of the recently released Rack library, which provides easy use
11
+ of adapters like Mongrel, WEBrick, CGI or FCGI.
12
+
13
+ - Supports a wide range of templating-engines like:
14
+ Amrita2, Erubis, HAML, Liquid, Markaby and its own engine called Ezamar.
15
+
16
+ - Highly modular structure, you can just use the parts you like. This also
17
+ means that it's very simple to add your own customizations.
18
+
19
+ - A variety of helpers is already available, giving you things like advanced
20
+ caching, OpenID-authentication or aspect-oriented programming for your
21
+ controllers.
22
+
23
+ - It is possible to use the ORM you like, be it ActiveRecord, Og, Kansas or
24
+ something more simplistic like a wrapper around YAML::Store.
25
+
26
+ - Good documentation: although we don't have 100% documentation right now,
27
+ just about every part of Ramaze is covered with basic and advanced docs.
28
+ There are a variety of examples and a tutorial available.
29
+
30
+ - Friendly community: lastly, but still quite important, there are people from
31
+ all over the world using Ramaze, so you can get almost instant help and
32
+ info.
33
+
34
+
35
+ Features planned:
36
+ - Unified FormHelper for ORMs, making the framework mostly independent of the
37
+ underlying model.
38
+
39
+ - Improved configuration system, providing an way to totally change options
40
+ during runtime and link that with the CLI-parameter automatically.
41
+
42
+
43
+ For more information please come to http://ramaze.rubyforge.org or ask directly
44
+ on IRC (irc://irc.freenode.net/#ramaze)
45
+
46
+ Thank you,
47
+ Michael 'manveru' Fellinger and the Ramaze community
@@ -0,0 +1,179 @@
1
+ This chapter covers how to do configuration in Ramaze for your application.
2
+
3
+
4
+ ### Global
5
+
6
+ The object holding most configuration is called Global. It resides in the Ramaze
7
+ module/name space.
8
+
9
+ Global is a subclass of OpenStruct and behaves mostly like it, so you can assign
10
+ your own key/value pairs to do your own configuration. Just ensure you don't
11
+ change key/value pairs by accident that Ramaze itself uses (doing it intentional
12
+ is OK of course).
13
+
14
+ Before covering some of the available options let us see how to actually use it.
15
+
16
+ For the examples shown here we will assume that you did include Ramaze
17
+ into your main into your main name space. If you don't do that, just prefix
18
+ Global with Ramaze so it is written Ramaze::Global.
19
+
20
+
21
+ #### Basic assignment:
22
+
23
+ Global.ports = (7000..7010)
24
+
25
+ if you do that before calling Ramaze::start Ramaze will spawn one server on each
26
+ port in that Range. The first value of this Range is also assigned to
27
+ Global.port during the startup procedure.
28
+
29
+
30
+ #### Multiple assignment:
31
+
32
+ Global.setup :adapter => :mongrel,
33
+ :cache => MemcachedCache
34
+
35
+ So you can pass a Hash of all the options you want to change.
36
+ In this case you would use Mongrel as the adapter and use memcached for your
37
+ sessions and general caching.
38
+
39
+
40
+ #### Block assignment:
41
+
42
+ Global.setup do |g|
43
+ g.error_page = false
44
+ g.host = '127.0.0.1'
45
+ g.port = 7070
46
+ end
47
+
48
+ This method is similar to the hash-assignment, but may be preferred for some
49
+ applications.
50
+
51
+
52
+ #### Pass on Ramaze.start
53
+
54
+ Ramaze.start :run_loose => true
55
+
56
+ This way you can save a line or two in a small script.
57
+ Please note that the values passed here have precedence over the ones directly
58
+ set on Global and will overwrite them if you set them before, that is mostly
59
+ useful to quickly test some configuration.
60
+
61
+
62
+ ### Global options
63
+
64
+ Since this document is especially prone to be outdated at times make sure you
65
+ check lib/ramaze/global.rb in case you run into trouble, we will try to keep at
66
+ least the RDocs up to date. This update is from 2007/04/16.
67
+
68
+ This listing is here to provide you with descriptions of the most common
69
+ configurations in alphabetical order per section showing the default value next
70
+ to the key.
71
+
72
+
73
+ #### General Configuration:
74
+
75
+ :autoreload => 5
76
+
77
+ Autoreload is a nifty mechanism that takes advantage of the dynamics of Ruby,
78
+ it's basically a Thread that runs in the background and polls for files in the
79
+ application and framework that have changed (using mtime). The value specifies
80
+ roughly how fast your changes are going to be loaded and should be a usual
81
+ Fixnum.
82
+
83
+
84
+ :adapter => :webrick
85
+
86
+ The adapter is the server Ramaze runs to serve your application. This can be any
87
+ of mongrel/webrick/fcgi/cgi, please note that so far neither fcgi nor cgi have
88
+ received the necessary testing, but, as they are only wrappers around the
89
+ underlying Rack library, should work fine. Both fcgi and mongrel require
90
+ additional libraries to be installed, webrick and cgi run out of the box.
91
+ Generally the most supported and recommended for deployment is Mongrel.
92
+
93
+
94
+ :backtrace_size => 10
95
+
96
+ This option doesn't have a large impact and is most likely left on its default
97
+ value, it controls how long the backtrace shown in your log and on the error
98
+ page should be.
99
+
100
+
101
+ :cache => MemoryCache
102
+
103
+ The cache is one of the more important things for deployment, the default for
104
+ this is MemoryCache, a simple Hash.
105
+ The class you specify here is used throughout Ramaze to cache various things,
106
+ like sessions, page- and value-caching.
107
+ Included in Ramaze are the MemoryCache and YAMLStoreCache, after you install
108
+ 'memcached' you can also use the much more performant MemcachedCache that also
109
+ makes it easy to use the same cache between different applications (sharing
110
+ sessions is one of the most obvious uses).
111
+
112
+
113
+ :cache_all => false
114
+
115
+ Setting this value to true would enable caching for all pages served from the
116
+ Controller (all actions).
117
+ This is a very powerful setting and you might want to enable it if all pages
118
+ you serve are only built once and have no further dynamics, the key for this
119
+ cache consists of the controller and parameters, when repeated requests are
120
+ made it will always serve the same (now static) page.
121
+
122
+
123
+ :cookies => true
124
+
125
+ Enables sending cookies by setting this to false.
126
+ Please note that many functionalities of Ramaze depend on an intact session and
127
+ you will have to be careful not to use these.
128
+ This is most likely useful in combination with `cache_all`
129
+
130
+
131
+ :error_page => true
132
+
133
+ Enables the default Error page of Ramaze which is mostly useful for manual
134
+ testing and faster debugging. In most deployment-scenarios you will however
135
+ want to use your own Error page and so you can safely disable this setting.
136
+
137
+ :host => '0.0.0.0'
138
+
139
+ Tell the adapter where it accepts requests from, 0.0.0.0 says that every
140
+ IP will be accepted, 127.0.0.1 would accept only requests from loopback.
141
+
142
+
143
+ :logger => Ramaze::Informer
144
+
145
+ The logger is used during startup to set Ramaze::Inform, you may set this
146
+ to Ramaze::Syslog or in case you have 'analogger' installed, you can use
147
+ Ramaze::Analogger.
148
+
149
+
150
+ :mapping => {}
151
+
152
+ This is a very central and special setting, it contains key/value pairs
153
+ that define routes to your controllers, the keys are simple strings and
154
+ start with '/', which means http://yourhost.com/ - '/foo/bar' would point
155
+ to http://yourhost.com/foo/bar.
156
+ The value is the class of your controller.
157
+
158
+
159
+ :port => 7000
160
+
161
+ The port Ramaze runs on, if you can think of more information about this feel
162
+ free to tell us.
163
+
164
+
165
+ :run_loose => false
166
+
167
+ This option is mostly used to run the specs, it means that Ramaze will not
168
+ join the adapter-threads and therefor you are free to run any code you want
169
+ afterwards. You won't have to use this in most cases, example usage is in
170
+ spec/spec_helper.
171
+
172
+
173
+ :template_root => 'template'
174
+
175
+ The template_root is the point your templates are located relative to the
176
+ location of the entry-file (usually main.rb)
177
+ It is also worth to mention that inside this directory the `mapping` is used
178
+ to locate templates for each controller, only the controller mapped to '/' uses
179
+ the templates directly from the `template_root`
@@ -0,0 +1,111 @@
1
+ This document is a humble attempt to explain the internal workings of Ramaze and
2
+ how the different parts fit into the big picture.
3
+
4
+ It does not try to describe every little detail, as you will be better off
5
+ reading the actual source instead. But you will at least get an idea of where to
6
+ look.
7
+
8
+ ### Ramaze
9
+
10
+ Ramaze is a web framework and therefor tries to make it simple to deploy your
11
+ own applications on top of it.
12
+ Let's outline the realms that Ramaze works in as to show what the current
13
+ limitations and features are.
14
+
15
+
16
+ #### The Ramaze module
17
+
18
+ Ramaze is also the main module or so-called namespace that the framework lives
19
+ in. It has
20
+
21
+ startup
22
+ shutdown
23
+ initial tasks
24
+ exiting tasks
25
+
26
+
27
+ #### Global configuration
28
+
29
+ Any serious application or framework needs to be configured.
30
+ Yes, I wished there was a silver bullet to serve all your needs as well, but at
31
+ the current stage of programming development there is no such thing.
32
+ So, since we need to configure, we should make it as simple and painless as
33
+ possible, and, thanks to Ruby, it is actually quite enjoyable to do that.
34
+ You can find a very detailed description about Global in the section about
35
+ Configuration, for now just the basics.
36
+
37
+ The basis of Ramaze::Global, the instance that is holding most part of your
38
+ configuration or at least links to the actual places, is the
39
+ Ramaze::GlobalStruct (ramaze/global.rb), which is a subclass of OpenStruct. If
40
+ you are not yet familiar with OpenStruct, I very much recommend to read its
41
+ documentation and play around a bit, it is basically just a wrapper around a
42
+ normal Hash where you can access the keys instead of ostruct[:foo] with
43
+ ostruct.foo.
44
+ It simply defines a new accessors on assignment by catching things in
45
+ method_missing. I won't go into more details here, I hope you got the principle.
46
+
47
+ Now, based on this technique, GlobalStruct adds things like defaults and a
48
+ couple of convenience methods like they are common in Ruby, giving you more
49
+ power by tapping to the internal Hash of the GlobalStruct and adding
50
+ update/setup methods so you can assign many key/value pairs at once.
51
+ The RDocs will give you a very good overview of what is available and how one is
52
+ supposed to work with it.
53
+
54
+ Now back to the big picture.
55
+
56
+ Ramaze accesses Global all over the place, there have been made several choices
57
+ as to why using something like Global is considered beneficial against choosing
58
+ for example global variables, which would be considered as a fatal choice by
59
+ any respected Rubyist anyway.
60
+
61
+ Now to something more subtle, which has to do with Global. I speak about traits,
62
+ which is a very different concept in most of its implementations, but it is
63
+ something that basically fits this name. It is configuration of single Objects
64
+ and whole ancestries.
65
+ You can give an object a trait, and most likely will use it along the lines of
66
+ something like MyController.trait(:map => '/'), which would be picked up on
67
+ startup and used to create Global.mapping - where we are at configuration again.
68
+ Choosing this style of configuration complementary to a central place to put all
69
+ your configuration was made very early in the development of Ramaze, and the
70
+ basic code of how traits are implemented and used has proven very efficient both
71
+ in understanding and using them.
72
+
73
+ There is a basic distinction when to use Global and when to use traits and when
74
+ to generate or assume one based on the other.
75
+
76
+ If something affects your whole application and is either used directly in the
77
+ Ramaze module or throughout the framework it is considered to be put into Global
78
+ to gain benefits of better documentation and accessibility.
79
+
80
+ On the other hand - if something is used in a configuring manner by a class that
81
+ is instantiated often (like Controller is for example), or a module that cannot
82
+ hold instance variables in a nice manner and is also not a constant - then it is
83
+ configured using traits.
84
+
85
+
86
+ Ramaze
87
+ Global
88
+ Adapter
89
+ Dispatcher
90
+ Controller
91
+ Action
92
+
93
+ Session
94
+ Helper
95
+ Tool
96
+
97
+
98
+ #### The Web
99
+
100
+ The so called web consists of a plethora of data, most of it is browsable
101
+ through a web browser that just about every toaster has installed these days.
102
+ The browser is the target of a web author, trying to utilize common standards
103
+ like HTML and CSS which are means for data and layout to be combined, giving the
104
+ browser a way to display the data.
105
+ Ramaze works on the URI-scale web, meaning that addresses like
106
+ http://someserver.com/blog/article/1 have a unique representation on your
107
+ server.
108
+ If we stay with this example, we see already everything Ramaze needs to see to
109
+ serve a page based on your instructions.
110
+ We assume that blog/article is a Controller named ArticleController in the blog
111
+ application.
@@ -7,16 +7,14 @@ Ramaze offers following features at the moment:
7
7
 
8
8
  Rack supports at the moment:
9
9
 
10
- * Mongrel
10
+ * [Mongrel](http://mongrel.rubyforge.org/)
11
11
 
12
- http://mongrel.rubyforge.org/
13
12
  Mongrel is a fast HTTP library and server for Ruby that is intended for
14
13
  hosting Ruby web applications of any kind using plain HTTP rather than
15
14
  FastCGI or SCGI.
16
15
 
17
- * WEBrick
16
+ * [WEBrick](http://www.webrick.org/)
18
17
 
19
- http://www.webrick.org/
20
18
  WEBrick is a Ruby library program to build HTTP servers.
21
19
 
22
20
  * CGI
@@ -26,37 +24,31 @@ Ramaze offers following features at the moment:
26
24
 
27
25
 
28
26
  * Templates
29
- * Amrita2
27
+ * [Amrita2](http://amrita2.rubyforge.org/)
30
28
 
31
- http://amrita2.rubyforge.org/
32
29
  Amrita2 is a xml/xhtml template library for Ruby. It makes html documents
33
30
  from a template and a model data.
34
31
 
35
- * Erubis
32
+ * [Erubis](http://rubyforge.org/projects/erubis)
36
33
 
37
- http://rubyforge.org/projects/erubis
38
34
  Erubis is a fast, secure, and very extensible implementation of eRuby.
39
35
 
40
- * Haml
36
+ * [Haml](http://haml.hamptoncatlin.com/)
41
37
 
42
- http://haml.hamptoncatlin.com/
43
38
  Haml takes your gross, ugly templates and replaces them with veritable Haiku.
44
39
 
45
- * Liquid
40
+ * [Liquid](http://home.leetsoft.com/liquid)
46
41
 
47
- http://home.leetsoft.com/liquid
48
42
  Liquid's syntax and parse model are inspired by Django templates, as well
49
43
  as PHP's smarty.
50
44
 
51
- * Markaby
45
+ * [Markaby](http://code.whytheluckystiff.net/markaby/)
52
46
 
53
- http://code.whytheluckystiff.net/markaby/
54
47
  Markaby means Markup as Ruby.
55
48
 
56
49
  * Ezamar
57
50
 
58
- A simple homage to Nitros templating. Please check out http://nitroproject.org
59
- for more information.
51
+ A simple homage to [Nitro](http://nitroproject.org)s templating.
60
52
 
61
53
  * Cache
62
54
  * Hash
@@ -7,12 +7,13 @@
7
7
  in case you have RubyGems installed.
8
8
  (this will work as soon as I have registered on RubyForge ;)
9
9
 
10
+
10
11
  * via darcs
11
12
 
12
13
  To get the latest and sweetest, you can just pull from the repository and run
13
14
  Ramaze that way.
14
15
 
15
- $ darcs get http://manveru.mine.nu/ramaze
16
+ $ darcs get --partial http://manveru.mine.nu/ramaze
16
17
 
17
18
  Please read the man page or `darcs help` for more information about updating
18
19
  and creating your own patches.
@@ -39,3 +40,8 @@
39
40
 
40
41
  $ darcs send -o ramaze_bundle
41
42
  $ gzip -c ramaze_bundle > ramaze_bundle.gz
43
+
44
+
45
+ * via install.rb
46
+
47
+ Support for install.rb has been canceled and the file removed.
@@ -453,7 +453,7 @@ so far:
453
453
  <title>TodoList</title>
454
454
  </head>
455
455
  <body>
456
- <h1>#{@hash['title']}</h1>
456
+ <h1>#{@title}</h1>
457
457
  #{content}
458
458
  </body>
459
459
  </html>
@@ -461,8 +461,7 @@ so far:
461
461
  end
462
462
  end
463
463
 
464
- Please note that the @hash is filled with the things you pass as parameters
465
- to tye Page-tag.
464
+ Please note that instance variables reflecting the parameters are set.
466
465
 
467
466
  And let's change our templates as well.
468
467
 
@@ -1,16 +1,17 @@
1
- # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
2
- # All files in this distribution are subject to the terms of the Ruby license.
1
+ $DBG = true # turn on debugging in Og
3
2
 
4
- require 'yaml'
5
- require 'bluecloth'
6
3
  require 'ramaze'
7
-
8
- require 'src/model'
4
+ require 'og'
9
5
 
10
6
  include Ramaze
7
+
8
+ require 'src/model'
9
+ require 'src/view'
11
10
  require 'src/controller'
12
- require 'src/element'
13
11
 
14
- Global.setup
12
+ Og.setup :evolve_schema => :full
13
+
14
+ Entry.create "Blog created", "Exciting news today, this blog was created!" if
15
+ Entry.count == 0
15
16
 
16
17
  start