Pistos-ramaze 2009.04.08 → 2009.06.12

Sign up to get free protection for your applications and to get access to all the features.
Files changed (227) hide show
  1. data/.gitignore +3 -0
  2. data/MANIFEST +37 -22
  3. data/{README.markdown → README.md} +5 -24
  4. data/Rakefile +33 -26
  5. data/benchmark/bench_templates/bench.rb +67 -0
  6. data/benchmark/bench_templates/view/large.erb +79 -0
  7. data/benchmark/bench_templates/view/large.haml +41 -0
  8. data/benchmark/bench_templates/view/large.xhtml +79 -0
  9. data/benchmark/bench_templates/view/small.erb +21 -0
  10. data/benchmark/bench_templates/view/small.haml +12 -0
  11. data/benchmark/bench_templates/view/small.xhtml +21 -0
  12. data/benchmark/run.rb +14 -21
  13. data/benchmark/suite/minimal.rb +3 -5
  14. data/benchmark/suite/no_informer.rb +0 -2
  15. data/benchmark/suite/no_sessions.rb +3 -4
  16. data/benchmark/suite/no_template.rb +1 -3
  17. data/benchmark/suite/simple.rb +1 -3
  18. data/benchmark/suite/template_erubis.rb +0 -2
  19. data/benchmark/suite/template_etanni.rb +8 -0
  20. data/benchmark/suite/template_ezamar.rb +1 -3
  21. data/benchmark/suite/template_haml.rb +0 -2
  22. data/benchmark/suite/template_liquid.rb +0 -2
  23. data/benchmark/suite/template_markaby.rb +0 -2
  24. data/benchmark/suite/template_nagoro.rb +1 -3
  25. data/benchmark/suite/template_redcloth.rb +0 -2
  26. data/benchmark/suite/template_tenjin.rb +0 -2
  27. data/bin/ramaze +11 -163
  28. data/doc/AUTHORS +15 -8
  29. data/doc/CHANGELOG +10094 -12262
  30. data/doc/meta/announcement.txt +93 -46
  31. data/doc/tutorial/todolist.html +22 -58
  32. data/doc/tutorial/todolist.txt +20 -39
  33. data/examples/app/auth/layout/{auth.nag → auth.xhtml} +0 -0
  34. data/examples/app/auth/view/{index.nag → index.xhtml} +0 -0
  35. data/examples/app/auth/view/{login.nag → login.xhtml} +0 -0
  36. data/examples/app/auth/view/{secret.nag → secret.xhtml} +0 -0
  37. data/examples/app/blog/app.rb +1 -1
  38. data/examples/app/blog/controller/comment.rb +1 -1
  39. data/examples/app/blog/controller/entry.rb +12 -3
  40. data/examples/app/blog/model/init.rb +5 -0
  41. data/examples/app/blog/model/tag.rb +2 -2
  42. data/examples/app/blog/view/entry/index.nag +3 -3
  43. data/examples/app/blog/view/feed.atom.nag +1 -1
  44. data/examples/app/blog/view/feed.rss.nag +1 -1
  45. data/examples/app/blog/view/index.nag +1 -1
  46. data/examples/app/blog/view/tag/index.nag +1 -1
  47. data/examples/app/chat/layout/{default.nag → default.xhtml} +0 -0
  48. data/examples/app/chat/view/{chat.nag → chat.xhtml} +0 -0
  49. data/examples/app/chat/view/{index.nag → index.xhtml} +0 -0
  50. data/examples/app/localization/locale/de.yaml +5 -0
  51. data/examples/app/localization/locale/en.yaml +5 -0
  52. data/examples/app/localization/locale/ja.yaml +5 -0
  53. data/examples/app/localization/start.rb +33 -20
  54. data/examples/app/wikore/spec/wikore.rb +4 -6
  55. data/examples/app/wikore/src/controller.rb +9 -11
  56. data/examples/app/wikore/src/model.rb +7 -10
  57. data/examples/app/wikore/start.rb +1 -1
  58. data/examples/app/wikore/{template → view}/index.xhtml +0 -0
  59. data/examples/helpers/cache.rb +6 -4
  60. data/examples/misc/css.rb +6 -12
  61. data/examples/misc/rapp.rb +28 -17
  62. data/lib/proto/app.rb +14 -0
  63. data/lib/proto/config.ru +8 -5
  64. data/lib/proto/controller/init.rb +3 -3
  65. data/lib/proto/spec/main.rb +9 -11
  66. data/lib/proto/start.rb +6 -10
  67. data/lib/ramaze.rb +8 -9
  68. data/lib/ramaze/app.rb +4 -3
  69. data/lib/ramaze/cache/localmemcache.rb +2 -2
  70. data/lib/ramaze/cache/memcache.rb +26 -1
  71. data/lib/ramaze/cache/sequel.rb +24 -9
  72. data/lib/ramaze/contrib/addressable_route.rb +56 -0
  73. data/lib/ramaze/contrib/email.rb +2 -0
  74. data/lib/ramaze/contrib/facebook/facebook.rb +4 -4
  75. data/lib/ramaze/contrib/sequel/create_join.rb +1 -0
  76. data/lib/ramaze/contrib/sequel/form_field.rb +4 -4
  77. data/lib/ramaze/contrib/sequel/image.rb +9 -11
  78. data/lib/ramaze/contrib/sequel/relation.rb +17 -3
  79. data/lib/ramaze/controller.rb +26 -18
  80. data/lib/ramaze/gestalt.rb +4 -1
  81. data/lib/ramaze/helper.rb +1 -0
  82. data/lib/ramaze/helper/auth.rb +0 -5
  83. data/lib/ramaze/helper/cache.rb +65 -25
  84. data/lib/ramaze/helper/form.rb +14 -2
  85. data/lib/ramaze/helper/formatting.rb +3 -1
  86. data/lib/ramaze/helper/gestalt.rb +32 -0
  87. data/lib/ramaze/helper/identity.rb +3 -3
  88. data/lib/ramaze/helper/layout.rb +97 -0
  89. data/lib/ramaze/helper/link.rb +6 -25
  90. data/lib/ramaze/helper/localize.rb +13 -3
  91. data/lib/ramaze/helper/paginate.rb +4 -2
  92. data/lib/ramaze/helper/ultraviolet.rb +2 -0
  93. data/lib/ramaze/helper/user.rb +3 -3
  94. data/lib/ramaze/log/rotatinginformer.rb +10 -10
  95. data/lib/ramaze/request.rb +3 -5
  96. data/lib/ramaze/setup.rb +22 -9
  97. data/lib/ramaze/spec.rb +8 -12
  98. data/lib/ramaze/spec/bacon.rb +34 -0
  99. data/lib/ramaze/spec/helper/template_examples.rb +15 -22
  100. data/lib/ramaze/tool/bin.rb +340 -0
  101. data/lib/ramaze/tool/project_creator.rb +1 -1
  102. data/lib/ramaze/version.rb +1 -1
  103. data/lib/ramaze/view.rb +6 -11
  104. data/lib/ramaze/view/erubis.rb +2 -2
  105. data/lib/ramaze/view/ezamar.rb +2 -2
  106. data/lib/ramaze/view/gestalt.rb +14 -0
  107. data/lib/ramaze/view/haml.rb +2 -1
  108. data/lib/ramaze/view/liquid.rb +45 -11
  109. data/lib/ramaze/view/maruku.rb +2 -1
  110. data/lib/ramaze/view/nagoro/render_partial.rb +9 -9
  111. data/lib/ramaze/view/sass.rb +1 -1
  112. data/lib/ramaze/view/tenjin.rb +7 -4
  113. data/lib/vendor/etag.rb +4 -2
  114. data/lib/vendor/route_exceptions.rb +9 -15
  115. data/ramaze.gemspec +56 -9
  116. data/spec/contrib/addressable_route.rb +30 -0
  117. data/spec/contrib/rest.rb +2 -2
  118. data/spec/examples/caching.rb +5 -7
  119. data/spec/examples/css.rb +3 -3
  120. data/spec/examples/element.rb +4 -3
  121. data/spec/examples/hello.rb +3 -3
  122. data/spec/examples/helpers/httpdigest.rb +44 -69
  123. data/spec/examples/linking.rb +3 -3
  124. data/spec/examples/simple.rb +3 -3
  125. data/spec/examples/templates/template_erubis.rb +8 -4
  126. data/spec/examples/templates/template_ezamar.rb +9 -4
  127. data/spec/examples/templates/template_haml.rb +8 -4
  128. data/spec/examples/templates/template_liquid.rb +8 -4
  129. data/spec/examples/templates/template_markaby.rb +9 -5
  130. data/spec/examples/templates/template_nagoro.rb +9 -5
  131. data/spec/examples/templates/template_redcloth.rb +8 -4
  132. data/spec/examples/templates/template_remarkably.rb +8 -4
  133. data/spec/examples/templates/template_tenjin.rb +8 -4
  134. data/spec/helper.rb +1 -2
  135. data/spec/ramaze/action/render.rb +4 -1
  136. data/spec/ramaze/app.rb +5 -2
  137. data/spec/ramaze/bin/ramaze.rb +96 -0
  138. data/spec/ramaze/cache/localmemcache.rb +1 -1
  139. data/spec/ramaze/cache/memcache.rb +7 -1
  140. data/spec/ramaze/cache/sequel.rb +1 -1
  141. data/spec/ramaze/controller/actionless_templates.rb +2 -2
  142. data/spec/ramaze/controller/lonely_mapping.rb +18 -0
  143. data/spec/ramaze/controller/mapping.rb +4 -15
  144. data/spec/ramaze/controller/provide_inheritance.rb +5 -2
  145. data/spec/ramaze/controller/resolve.rb +2 -2
  146. data/spec/ramaze/controller/subclass.rb +2 -2
  147. data/spec/ramaze/controller/template_resolving.rb +2 -2
  148. data/spec/ramaze/dispatcher/directory.rb +5 -2
  149. data/spec/ramaze/dispatcher/file.rb +28 -26
  150. data/spec/ramaze/error.rb +3 -3
  151. data/spec/ramaze/files.rb +5 -2
  152. data/spec/ramaze/gestalt.rb +26 -17
  153. data/spec/ramaze/helper/auth.rb +30 -41
  154. data/spec/ramaze/helper/bench.rb +6 -2
  155. data/spec/ramaze/helper/cache.rb +45 -5
  156. data/spec/ramaze/helper/flash.rb +11 -15
  157. data/spec/ramaze/helper/form.rb +6 -3
  158. data/spec/ramaze/helper/formatting.rb +4 -1
  159. data/spec/ramaze/helper/gestalt.rb +4 -1
  160. data/spec/ramaze/helper/gravatar.rb +4 -1
  161. data/spec/ramaze/helper/httpdigest.rb +51 -66
  162. data/spec/ramaze/helper/layout.rb +79 -0
  163. data/spec/ramaze/helper/layout/default.xhtml +5 -0
  164. data/spec/ramaze/helper/link.rb +33 -12
  165. data/spec/ramaze/helper/localize.rb +9 -4
  166. data/spec/ramaze/helper/maruku.rb +5 -2
  167. data/spec/ramaze/helper/pager.rb +2 -2
  168. data/spec/ramaze/helper/paginate.rb +5 -2
  169. data/spec/ramaze/helper/request_accessor.rb +5 -2
  170. data/spec/ramaze/helper/sequel_form.rb +7 -2
  171. data/spec/ramaze/helper/simple_captcha.rb +10 -14
  172. data/spec/ramaze/helper/stack.rb +32 -40
  173. data/spec/ramaze/helper/user.rb +19 -14
  174. data/spec/ramaze/helper/xhtml.rb +4 -1
  175. data/spec/ramaze/log/informer.rb +1 -1
  176. data/spec/ramaze/log/logging.rb +4 -1
  177. data/spec/ramaze/log/syslog.rb +6 -6
  178. data/spec/ramaze/params.rb +5 -6
  179. data/spec/ramaze/request.rb +16 -1
  180. data/spec/ramaze/session/memcache.rb +66 -0
  181. data/spec/ramaze/struct.rb +4 -1
  182. data/spec/ramaze/view.rb +2 -2
  183. data/spec/ramaze/view/erubis.rb +2 -2
  184. data/spec/ramaze/view/ezamar.rb +2 -2
  185. data/spec/ramaze/view/gestalt.rb +94 -0
  186. data/spec/ramaze/view/gestalt/external.ges +8 -0
  187. data/spec/ramaze/view/haml.rb +2 -2
  188. data/spec/ramaze/view/liquid.rb +2 -2
  189. data/spec/ramaze/view/nagoro.rb +2 -2
  190. data/spec/ramaze/view/redcloth.rb +2 -2
  191. data/spec/ramaze/view/remarkably.rb +2 -2
  192. data/spec/ramaze/view/sass.rb +2 -2
  193. data/spec/ramaze/view/tagz.rb +2 -2
  194. data/spec/ramaze/view/tenjin.rb +2 -2
  195. data/spec/snippets/array/put_within.rb +30 -25
  196. data/spec/snippets/binding/locals.rb +4 -1
  197. data/spec/snippets/numeric/filesize_format.rb +4 -1
  198. data/spec/snippets/numeric/time.rb +5 -2
  199. data/spec/snippets/object/__dir__.rb +4 -1
  200. data/spec/snippets/ordered_set.rb +4 -1
  201. data/spec/snippets/ramaze/acquire.rb +4 -1
  202. data/spec/snippets/ramaze/dictionary.rb +4 -1
  203. data/spec/snippets/ramaze/struct.rb +4 -1
  204. data/spec/snippets/string/camel_case.rb +4 -1
  205. data/spec/snippets/string/color.rb +4 -1
  206. data/spec/snippets/string/snake_case.rb +4 -1
  207. data/spec/snippets/string/unindent.rb +4 -1
  208. data/spec/snippets/thread/into.rb +4 -1
  209. data/tasks/bacon.rake +5 -3
  210. data/tasks/changelog.rake +3 -1
  211. data/tasks/{gem_installer.rake → gem_setup.rake} +45 -22
  212. data/tasks/release.rake +12 -27
  213. data/tasks/setup.rake +6 -0
  214. data/tasks/todo.rake +2 -4
  215. metadata +205 -31
  216. data/CHANGELOG +0 -16546
  217. data/benchmark/suite/template_builder.rb +0 -12
  218. data/doc/tutorial/todolist.mkd +0 -787
  219. data/examples/helpers/provide.rb +0 -23
  220. data/lib/proto/view/page.xhtml +0 -27
  221. data/lib/ramaze/snippets/divide.rb +0 -22
  222. data/lib/ramaze/snippets/kernel/constant.rb +0 -41
  223. data/lib/ramaze/snippets/object/acquire.rb +0 -37
  224. data/lib/ramaze/snippets/string/each.rb +0 -19
  225. data/spec/ramaze/helper/partial.rb +0 -40
  226. data/spec/snippets/kernel/constant.rb +0 -23
  227. data/tasks/install_dependencies.rake +0 -6
@@ -2,7 +2,7 @@ require 'rubygems'
2
2
  require 'ramaze'
3
3
 
4
4
  Ramaze.setup :verbose => true do
5
- gem 'sequel', '2.11.0'
5
+ gem 'sequel', '2.12.0'
6
6
  gem 'maruku', '0.5.9'
7
7
  end
8
8
 
@@ -23,7 +23,7 @@ module Blog
23
23
  if @comment.update(@entry, request)
24
24
  redirect @comment.href
25
25
  else
26
- partial_content(:form, :comment => @comment, :entry => @entry)
26
+ render_partial(:form, :comment => @comment, :entry => @entry)
27
27
  end
28
28
  end
29
29
 
@@ -25,9 +25,6 @@ module Blog
25
25
  @comment_count = number_counter(@entry.comments.count, 'comment')
26
26
  end
27
27
 
28
- def feed
29
- end
30
-
31
28
  def edit(slug)
32
29
  login_required
33
30
  @entry = Entry.from_slug(slug)
@@ -61,6 +58,18 @@ module Blog
61
58
  Entry.from_slug(slug).destroy
62
59
  end
63
60
 
61
+ def trackback(slug)
62
+ render_partial(:index){|a|
63
+ a.method = :index
64
+ a.params << slug
65
+ } + <<-COMMENT.strip
66
+ I really have not the faintest idea about what this is supposed to do.<br />
67
+ People tell me it's broken, but nobody tells me how to fix it :)<br />
68
+ For now I'll just use it to show off how to modify an action that requires a
69
+ method parameter.
70
+ COMMENT
71
+ end
72
+
64
73
  private
65
74
 
66
75
  def fetch_tags
@@ -1,10 +1,15 @@
1
1
  require 'sequel'
2
+ require 'sequel/extensions/inflector'
2
3
 
3
4
  module Blog
4
5
  DB = Sequel.sqlite("#{__DIR__}/../blog.db")
5
6
  # DB = Sequel.connect("sqlite:///#{__DIR__}/../blog.db")
6
7
  end
7
8
 
9
+ Sequel::Model.plugin :validation_class_methods
10
+ Sequel::Model.plugin :schema
11
+ Sequel::Model.plugin :hook_class_methods
12
+
8
13
  require 'model/tag'
9
14
  require 'model/entry'
10
15
  require 'model/comment'
@@ -7,8 +7,8 @@ module Blog
7
7
  foreign_key :tag_id
8
8
  end
9
9
 
10
- belongs_to :entry, :class => 'Blog::Entry'
11
- belongs_to :tag, :class => 'Blog::Tag'
10
+ many_to_one :entry, :class => 'Blog::Entry'
11
+ many_to_one :tag, :class => 'Blog::Tag'
12
12
 
13
13
  create_table unless table_exists?
14
14
  end
@@ -1,7 +1,7 @@
1
- #{ Blog::Entries.partial_content(:show, :entry => @entry) }
1
+ #{ Blog::Entries.render_partial(:show, :entry => @entry) }
2
2
  <div id="comments" class="comments">
3
3
  <?r @entry.comments.each do |comment| ?>
4
- #{ Blog::Comments.partial_content(:show, :comment => comment) }
4
+ #{ Blog::Comments.render_partial(:show, :comment => comment) }
5
5
  <?r end ?>
6
- #{ Blog::Comments.partial_content(:form, :entry => @entry) }
6
+ #{ Blog::Comments.render_partial(:form, :entry => @entry) }
7
7
  </div>
@@ -13,6 +13,6 @@
13
13
  <id>#{ "#{ Blog.options.uuid }/atom" }</id>
14
14
  <generator uri='#{ @generator_uri }'>#{ @generator }</generator>
15
15
  <?r @entries.each do |entry| ?>
16
- #{ Blog::Entries.partial_content('feed.atom', :entry => entry) }
16
+ #{ Blog::Entries.render_partial('feed.atom', :entry => entry) }
17
17
  <?end ?>
18
18
  </feed>
@@ -19,7 +19,7 @@
19
19
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
20
20
  <ttl>240</ttl>
21
21
  <?r @entries.each do |entry| ?>
22
- #{ Blog::Entries.partial_content('feed.rss', :entry => entry) }
22
+ #{ Blog::Entries.render_partial('feed.rss', :entry => entry) }
23
23
  <?r end ?>
24
24
  </channel>
25
25
  </rss>
@@ -1,6 +1,6 @@
1
1
  <div id="entries">
2
2
  <?r @pager.each do |entry| ?>
3
- #{Blog::Entries.partial_content(:show, :entry => entry)}
3
+ #{Blog::Entries.render_partial(:show, :entry => entry)}
4
4
  <?r end ?>
5
5
  #{ @pager.navigation if @pager.needed? }
6
6
  </div>
@@ -1,5 +1,5 @@
1
1
  <?r @tags.each do |tag| ?>
2
2
  <?r tag.entries.each do |entry| ?>
3
- #{Blog::Entries.partial_content(:show, :entry => entry)}
3
+ #{Blog::Entries.render_partial(:show, :entry => entry)}
4
4
  <?r end ?>
5
5
  <?r end ?>
@@ -0,0 +1,5 @@
1
+ 'hello world': 'Guten Tag Welt!'
2
+ 'just for fun': 'halm im Scherz'
3
+ 'english': 'Englisch'
4
+ 'japanese': 'Japanisch'
5
+ 'german': 'Deutsch'
@@ -0,0 +1,5 @@
1
+ 'hello world': 'Hello world!'
2
+ 'just for fun': 'Just for fun'
3
+ 'english': 'English'
4
+ 'japanese': 'Japanese'
5
+ 'german': 'German'
@@ -0,0 +1,5 @@
1
+ 'hello world': 'おはよう世界!'
2
+ 'just for fun': '冗談半分に'
3
+ 'english': '英語'
4
+ 'japanese': '日本語'
5
+ 'german': 'ドイツ語'
@@ -1,34 +1,47 @@
1
+ # -*- coding: utf-8 -*-
1
2
  require 'rubygems'
2
3
  require 'ramaze'
3
4
 
4
5
  # require YAML based localization
5
- require 'ramaze/tool/localize'
6
-
7
- # Activate localization
8
- # Setup localization options
9
- class Ramaze::Tool::Localize
10
- Ramaze::Dispatcher::Action::FILTER << self
11
-
12
- trait :default_language => 'en',
13
- :languages => %w[ en ja cn es de it ],
14
- :file => lambda{|l| Ramaze::Global.root/"locale/#{l}.yaml" }
15
- # alternative, problematic if you want to run from another pwd.
16
- # :file => "locale/%s.yaml"
17
- end
6
+ require 'ramaze/helper/localize'
18
7
 
8
+ #
9
+ # Old Dispatcher::Action::FILTER style localization.
10
+ #
19
11
  class MainController < Ramaze::Controller
12
+ helper :localize
13
+
20
14
  def index
21
- # Enclose the strings that have to be localized with [[]]
22
- # This works with any templating engine.
23
- "<h1>[[hello world]]</h1>
24
- <p>[[just for fun]]</p>
25
- <a href='/locale/en'>[[English]]</a><br />
26
- <a href='/locale/de'>[[German]]</a><br />
15
+ # Enclose the strings that have to be localized with {}
16
+ "<h1>{hello world}</h1>
17
+ <p>{just for fun}</p>
18
+ <a href='/locale/en'>{english}</a><br />
19
+ <a href='/locale/ja'>{japanese}</a><br />
20
+ <a href='/locale/de'>{german}</a><br />
27
21
  "
28
22
  end
29
23
 
30
24
  def locale(name)
31
- session[:LOCALE] = name
25
+ session[:lang] = name
26
+ redirect r(:/)
27
+ end
28
+
29
+ # for Localization
30
+ alias :raw_wrap_action_call :wrap_action_call
31
+
32
+ def wrap_action_call(action, &block)
33
+ localize(raw_wrap_action_call(action, &block))
34
+ end
35
+
36
+ private
37
+
38
+ Dictionary = Ramaze::Helper::Localize::Dictionary.new
39
+ Dir.glob('./locale/*.yaml').each do |path|
40
+ Dictionary.load(File.basename(path, '.yaml').intern, :yaml => path)
41
+ end
42
+
43
+ def localize_dictionary
44
+ Dictionary
32
45
  end
33
46
  end
34
47
 
@@ -1,20 +1,18 @@
1
1
  require 'ramaze'
2
- require 'ramaze/spec/helper'
2
+ require 'ramaze/spec'
3
3
 
4
- spec_require 'hpricot', 'sequel'
4
+ spec_requires 'hpricot', 'sequel'
5
5
 
6
6
  $LOAD_PATH.unshift base = __DIR__('..')
7
7
  require 'start'
8
8
 
9
9
  describe 'Wikore' do
10
- behaves_like 'http'
11
- ramaze :public_root => base/:public,
12
- :view_root => base/:template
10
+ behaves_like :mock
13
11
 
14
12
  def check_redirect(to = '/')
15
13
  response = yield
16
14
  response.status.should == 302
17
- response.body.should =~ /<a href="#{to}">/
15
+ response.body.should =~ /<a href='.*#{to}'>/
18
16
  end
19
17
 
20
18
  def page_should_exist(name, *matches)
@@ -18,26 +18,28 @@ class MainController < Ramaze::Controller
18
18
  end
19
19
  end
20
20
 
21
- class PageController < Ramaze::Controller
21
+ class Pages < Ramaze::Controller
22
22
  map '/page'
23
23
 
24
- helper :aspect
25
-
26
24
  def create
25
+ redirect_referer unless request.post?
26
+
27
27
  change "Created Page '%s'" do |title, text|
28
28
  Page.create(:title => title, :text => text, :version => 1)
29
- redirect R(MainController, title)
29
+ redirect MainController.r(:/, title)
30
30
  end
31
31
  end
32
32
 
33
33
  def save
34
+ redirect_referer unless request.post?
35
+
34
36
  change "Updated Page '%s'" do |title, text|
35
37
  page = Page[:title => title]
36
38
  page.backup
37
39
  page.text = text
38
40
  page.version += 1
39
41
  page.save
40
- redirect R(MainController, title)
42
+ redirect MainController.r(:/, title)
41
43
  end
42
44
  end
43
45
 
@@ -60,11 +62,7 @@ class PageController < Ramaze::Controller
60
62
  def revert(title)
61
63
  page = Page[:title => title]
62
64
  page.revert
63
- redirect R(MainController, title)
64
- end
65
-
66
- before :create, :save do
67
- redirect_referer unless request.post?
65
+ redirect MainController.r(:/, title)
68
66
  end
69
67
 
70
68
  private
@@ -75,6 +73,6 @@ class PageController < Ramaze::Controller
75
73
  message % title
76
74
  end
77
75
 
78
- redirect(R(MainController, redirect_to))
76
+ redirect MainController.r(redirect_to)
79
77
  end
80
78
  end
@@ -1,17 +1,14 @@
1
1
  require 'sequel'
2
2
 
3
- begin
4
- case $wikore_db
5
- when :memory
6
- DB = Sequel.sqlite
7
- else
8
- DB_FILE = __DIR__('wikore.db')
9
- DB = Sequel.connect("sqlite://#{DB_FILE}")
10
- end
11
- rescue NoMethodError
12
- raise LoadError, 'Install latest Sequel gem'
3
+ if $wikore_db == :memory
4
+ DB = Sequel.sqlite
5
+ else
6
+ DB_FILE = __DIR__('wikore.db')
7
+ DB = Sequel.connect("sqlite://#{DB_FILE}")
13
8
  end
14
9
 
10
+ Sequel::Model.plugin :schema
11
+
15
12
  module Model
16
13
  PAGE_SCHEMA = lambda{
17
14
  primary_key :id
@@ -6,4 +6,4 @@ $wikore = {}
6
6
  require 'src/model'
7
7
  require 'src/controller'
8
8
 
9
- Ramaze.start
9
+ Ramaze.start :file => __FILE__
@@ -6,12 +6,14 @@ class MainController < Ramaze::Controller
6
6
  helper :cache
7
7
 
8
8
  def index
9
- %[
9
+ @number = rand * 100
10
+
11
+ %q[
10
12
  <html>
11
13
  <head><title>examples/caching</title></head>
12
14
  <body>
13
15
  <p>
14
- This action just shows you a random number: #{rand * 100}.<br />
16
+ This action just shows you a random number: #{@number}.<br />
15
17
  If you <a href="/">refresh</a> the page it won't change since you see a cached version.<br />
16
18
  But if you <a href="/invalidate">invalidate</a> it, the page will be regenerated.
17
19
  </p>
@@ -20,10 +22,10 @@ class MainController < Ramaze::Controller
20
22
  ]
21
23
  end
22
24
 
23
- cache_action :method => :index
25
+ cache_action :method => 'index'
24
26
 
25
27
  def invalidate
26
- Ramaze::Cache.action.delete(:method => 'index')
28
+ Ramaze::Cache.action.delete('/')
27
29
  redirect :/
28
30
  end
29
31
  end
@@ -10,15 +10,10 @@ module Ramaze::SourceReloadHooks
10
10
  end
11
11
 
12
12
  class CSSController < Ramaze::Controller
13
- engine :Sass
14
-
15
- helper :aspect
16
- before_all do
17
- response['Content-Type'] = 'text/css'
18
- nil
19
- end
13
+ helper :cache
14
+ provide :css, :type => 'text/css', :engine => :Sass
20
15
 
21
- define_method('style.css') do
16
+ def style
22
17
  %(
23
18
  body
24
19
  font:
@@ -29,9 +24,8 @@ body
29
24
  )
30
25
  end
31
26
 
32
- helper :cache
33
- cache 'style.css'
27
+ cache_action :method => 'style'
34
28
  end
35
29
 
36
- # http://localhost:81/css/style.css
37
- Ramaze.start :adapter => :mongrel, :port => 81
30
+ # http://localhost:7000/css/style.css
31
+ Ramaze.start :adapter => :mongrel, :port => 7000
@@ -4,10 +4,13 @@
4
4
  require 'rubygems'
5
5
  require 'ramaze'
6
6
  require 'sequel'
7
+ require 'abbrev'
7
8
 
8
- DB = Sequel.sqlite :logger => Ramaze::Log
9
+ DB = Sequel.sqlite
9
10
 
10
11
  class Post < Sequel::Model
12
+ plugin :schema
13
+ plugin :hook_class_methods
11
14
  set_schema{ primary_key :id; time :created_at; text :text }
12
15
  before_create{ self.created_at ||= Time.now }
13
16
  create_table
@@ -18,27 +21,35 @@ end
18
21
  class MainController < Ramaze::Controller
19
22
  def index
20
23
  @posts = Post.order(:created_at.desc).first(10)
21
- %q(<h1>Welcome to Rapp</h1>
22
- <h2>A minimal chat wall</h2>
23
- <p>Recent Posts:</p>
24
- <div id="posts" class="container">
25
- <?r @posts.each do |post| ?>
26
- <div id="post-#{post.id}" class="post">
27
- <p class="text">#{post.text}</p>
28
- <p class="created">#{post.created_at}</p>
24
+
25
+ <<-'TEMPLATE'.strip
26
+ <html>
27
+ <head><title>Rapp</title></head>
28
+ <body>
29
+ <h1>Welcome to Rapp</h1>
30
+ <h2>A minimal chat wall</h2>
31
+ <p>Recent Posts:</p>
32
+ <div id="posts" class="container">
33
+ <?r @posts.each do |post| ?>
34
+ <div id="post-#{post.id}" class="post">
35
+ <p class="text">#{post.text}</p>
36
+ <p class="created">#{post.created_at}</p>
37
+ </div>
38
+ <?r end ?>
29
39
  </div>
30
- <?r end ?>
31
- </div>
32
- <p>Post Something:</p>
33
- <form action="#{Rs(:create)}" method="POST">
34
- <input type="text" size="40" name="text" />
35
- <input type="submit" value="Post Message!" />
36
- </form>)
40
+ <p>Post Something:</p>
41
+ <form action="#{r(:create)}" method="POST">
42
+ <input type="text" size="40" name="text" />
43
+ <input type="submit" value="Post Message!" />
44
+ </form>
45
+ </body>
46
+ </html>
47
+ TEMPLATE
37
48
  end
38
49
 
39
50
  def create
40
51
  Post.create(:text => request[:text])
41
- redirect Rs(:/)
52
+ redirect r(:/)
42
53
  end
43
54
  end
44
55