ramaze 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (304) hide show
  1. data/Rakefile +20 -3
  2. data/bin/ramaze +1 -4
  3. data/doc/AUTHORS +2 -1
  4. data/doc/CHANGELOG +539 -32
  5. data/doc/LEGAL +4 -0
  6. data/doc/meta/announcement.txt +79 -47
  7. data/examples/blog/README +2 -2
  8. data/examples/blog/spec/blog.rb +33 -48
  9. data/examples/blog/src/controller.rb +15 -13
  10. data/examples/blog/src/model.rb +28 -10
  11. data/examples/blog/start.rb +0 -10
  12. data/examples/blog/template/edit.xhtml +1 -1
  13. data/examples/blog/template/index.xhtml +2 -2
  14. data/examples/facebook.rb +152 -0
  15. data/examples/linking.rb +28 -0
  16. data/examples/ramaise.rb +4 -11
  17. data/examples/rammit/spec/rammit.rb +30 -0
  18. data/examples/rammit/src/controller/main.rb +3 -0
  19. data/examples/rammit/src/controller/page.rb +16 -0
  20. data/examples/rammit/src/model.rb +33 -0
  21. data/examples/rammit/start.rb +7 -0
  22. data/examples/rammit/template/index.xhtml +14 -0
  23. data/examples/rammit/template/page/view.xhtml +4 -0
  24. data/examples/rapaste/Rakefile +28 -0
  25. data/examples/rapaste/public/css/active4d.css +114 -0
  26. data/examples/rapaste/public/css/all_hallows_eve.css +72 -0
  27. data/examples/rapaste/public/css/amy.css +147 -0
  28. data/examples/rapaste/public/css/blackboard.css +88 -0
  29. data/examples/rapaste/public/css/brilliance_black.css +605 -0
  30. data/examples/rapaste/public/css/brilliance_dull.css +599 -0
  31. data/examples/rapaste/public/css/cobalt.css +149 -0
  32. data/examples/rapaste/public/css/dawn.css +121 -0
  33. data/examples/rapaste/public/css/display.css +179 -0
  34. data/examples/rapaste/public/css/eiffel.css +121 -0
  35. data/examples/rapaste/public/css/espresso_libre.css +109 -0
  36. data/examples/rapaste/public/css/idle.css +62 -0
  37. data/examples/rapaste/public/css/iplastic.css +80 -0
  38. data/examples/rapaste/public/css/lazy.css +73 -0
  39. data/examples/rapaste/public/css/mac_classic.css +123 -0
  40. data/examples/rapaste/public/css/magicwb_amiga.css +104 -0
  41. data/examples/rapaste/public/css/pastels_on_dark.css +188 -0
  42. data/examples/rapaste/public/css/slush_poppies.css +85 -0
  43. data/examples/rapaste/public/css/spacecadet.css +51 -0
  44. data/examples/rapaste/public/css/sunburst.css +180 -0
  45. data/examples/rapaste/public/css/twilight.css +137 -0
  46. data/examples/rapaste/public/css/zenburnesque.css +91 -0
  47. data/examples/rapaste/public/js/jquery.js +11 -0
  48. data/examples/rapaste/rapaste.sqlite +0 -0
  49. data/examples/rapaste/spec/rapaste.rb +49 -0
  50. data/examples/rapaste/src/controller.rb +69 -0
  51. data/examples/rapaste/src/model.rb +61 -0
  52. data/examples/rapaste/start.rb +20 -0
  53. data/examples/rapaste/template/copy.xhtml +10 -0
  54. data/examples/rapaste/template/index.xhtml +9 -0
  55. data/examples/rapaste/template/layout.xhtml +22 -0
  56. data/examples/rapaste/template/list.xhtml +28 -0
  57. data/examples/rapaste/template/view.xhtml +37 -0
  58. data/examples/sourceview/sourceview.rb +3 -3
  59. data/examples/templates/template_amrita2.rb +1 -3
  60. data/examples/todolist/spec/todolist.rb +15 -18
  61. data/examples/whywiki/spec/whywiki.rb +15 -20
  62. data/examples/whywiki/start.rb +0 -1
  63. data/examples/wikore/spec/wikore.rb +14 -19
  64. data/examples/wiktacular/spec/wiktacular.rb +8 -15
  65. data/lib/proto/{src/controller → controller}/main.rb +4 -4
  66. data/lib/proto/public/css/ramaze_error.css +39 -3
  67. data/lib/proto/public/js/jquery.js +2039 -1020
  68. data/lib/proto/spec/main.rb +27 -0
  69. data/lib/proto/start.rb +5 -5
  70. data/lib/proto/view/error.xhtml +62 -0
  71. data/lib/proto/view/index.xhtml +34 -0
  72. data/lib/proto/view/page.xhtml +15 -0
  73. data/lib/ramaze.rb +9 -7
  74. data/lib/ramaze/action.rb +7 -3
  75. data/lib/ramaze/action/render.rb +15 -5
  76. data/lib/ramaze/adapter.rb +5 -5
  77. data/lib/ramaze/adapter/base.rb +2 -2
  78. data/lib/ramaze/adapter/cgi.rb +1 -1
  79. data/lib/ramaze/adapter/evented_mongrel.rb +1 -1
  80. data/lib/ramaze/adapter/fcgi.rb +2 -2
  81. data/lib/ramaze/adapter/mongrel.rb +1 -1
  82. data/lib/ramaze/adapter/swiftiplied_mongrel.rb +1 -1
  83. data/lib/ramaze/adapter/thin.rb +25 -0
  84. data/lib/ramaze/adapter/webrick.rb +1 -1
  85. data/lib/ramaze/cache.rb +3 -2
  86. data/lib/ramaze/cache/memcached.rb +1 -1
  87. data/lib/ramaze/cache/memory.rb +1 -1
  88. data/lib/ramaze/cache/yaml_store.rb +1 -1
  89. data/lib/ramaze/contrib.rb +1 -1
  90. data/lib/ramaze/contrib/auto_params.rb +12 -5
  91. data/lib/ramaze/contrib/auto_params/get_args.rb +1 -0
  92. data/lib/ramaze/contrib/facebook.rb +23 -0
  93. data/lib/ramaze/contrib/facebook/facebook.rb +168 -0
  94. data/lib/ramaze/contrib/gettext.rb +111 -0
  95. data/lib/ramaze/contrib/gettext/mo.rb +155 -0
  96. data/lib/ramaze/contrib/gettext/po.rb +109 -0
  97. data/lib/ramaze/contrib/gzip_filter.rb +1 -1
  98. data/lib/ramaze/contrib/route.rb +15 -5
  99. data/lib/ramaze/contrib/sequel/fill.rb +1 -1
  100. data/lib/ramaze/controller.rb +10 -4
  101. data/lib/ramaze/controller/error.rb +5 -13
  102. data/lib/ramaze/controller/main.rb +2 -0
  103. data/lib/ramaze/controller/resolve.rb +18 -10
  104. data/lib/ramaze/dispatcher.rb +1 -1
  105. data/lib/ramaze/dispatcher/action.rb +1 -1
  106. data/lib/ramaze/dispatcher/directory.rb +3 -2
  107. data/lib/ramaze/dispatcher/error.rb +5 -5
  108. data/lib/ramaze/dispatcher/file.rb +13 -2
  109. data/lib/ramaze/error.rb +1 -1
  110. data/lib/ramaze/gestalt.rb +2 -2
  111. data/lib/ramaze/global.rb +5 -5
  112. data/lib/ramaze/global/dsl.rb +1 -1
  113. data/lib/ramaze/global/globalstruct.rb +11 -5
  114. data/lib/ramaze/helper.rb +1 -1
  115. data/lib/ramaze/helper/aspect.rb +1 -1
  116. data/lib/ramaze/helper/auth.rb +2 -2
  117. data/lib/ramaze/helper/cache.rb +1 -1
  118. data/lib/ramaze/helper/cgi.rb +1 -1
  119. data/lib/ramaze/helper/file.rb +1 -1
  120. data/lib/ramaze/helper/flash.rb +1 -1
  121. data/lib/ramaze/helper/formatting.rb +1 -1
  122. data/lib/ramaze/helper/identity.rb +1 -1
  123. data/lib/ramaze/helper/inform.rb +1 -1
  124. data/lib/ramaze/helper/link.rb +4 -4
  125. data/lib/ramaze/helper/markaby.rb +1 -1
  126. data/lib/ramaze/helper/nitroform.rb +1 -1
  127. data/lib/ramaze/helper/pager.rb +2 -1
  128. data/lib/ramaze/helper/partial.rb +1 -1
  129. data/lib/ramaze/helper/redirect.rb +6 -1
  130. data/lib/ramaze/helper/sequel.rb +54 -0
  131. data/lib/ramaze/helper/stack.rb +1 -1
  132. data/lib/ramaze/inform.rb +1 -1
  133. data/lib/ramaze/inform/analogger.rb +1 -1
  134. data/lib/ramaze/inform/growl.rb +1 -1
  135. data/lib/ramaze/inform/hub.rb +1 -1
  136. data/lib/ramaze/inform/informer.rb +1 -1
  137. data/lib/ramaze/inform/informing.rb +2 -2
  138. data/lib/ramaze/inform/knotify.rb +1 -1
  139. data/lib/ramaze/inform/syslog.rb +1 -1
  140. data/lib/ramaze/inform/xosd.rb +1 -1
  141. data/lib/ramaze/snippets.rb +1 -1
  142. data/lib/ramaze/snippets/array/put_within.rb +1 -1
  143. data/lib/ramaze/snippets/blankslate.rb +7 -0
  144. data/lib/ramaze/snippets/dictionary.rb +6 -1
  145. data/lib/ramaze/snippets/divide.rb +1 -1
  146. data/lib/ramaze/snippets/kernel/__dir__.rb +1 -1
  147. data/lib/ramaze/snippets/kernel/acquire.rb +39 -0
  148. data/lib/ramaze/snippets/kernel/aquire.rb +1 -34
  149. data/lib/ramaze/snippets/kernel/constant.rb +1 -1
  150. data/lib/ramaze/snippets/kernel/pretty_inspect.rb +1 -1
  151. data/lib/ramaze/snippets/numeric/filesize_format.rb +1 -1
  152. data/lib/ramaze/snippets/object/traits.rb +1 -1
  153. data/lib/ramaze/snippets/ordered_set.rb +12 -7
  154. data/lib/ramaze/snippets/ramaze/caller_info.rb +1 -1
  155. data/lib/ramaze/snippets/ramaze/caller_lines.rb +1 -1
  156. data/lib/ramaze/snippets/string/camel_case.rb +1 -1
  157. data/lib/ramaze/snippets/string/color.rb +2 -4
  158. data/lib/ramaze/snippets/string/each.rb +1 -1
  159. data/lib/ramaze/snippets/string/ord.rb +15 -0
  160. data/lib/ramaze/snippets/string/snake_case.rb +1 -1
  161. data/lib/ramaze/snippets/struct/fill.rb +4 -2
  162. data/lib/ramaze/snippets/struct/values_at.rb +2 -2
  163. data/lib/ramaze/snippets/symbol/to_proc.rb +15 -8
  164. data/lib/ramaze/snippets/thread/into.rb +1 -1
  165. data/lib/ramaze/sourcereload.rb +4 -3
  166. data/lib/ramaze/spec/helper.rb +85 -32
  167. data/lib/ramaze/spec/helper/bacon.rb +7 -0
  168. data/lib/ramaze/spec/helper/browser.rb +1 -2
  169. data/lib/ramaze/spec/helper/mock_http.rb +1 -1
  170. data/lib/ramaze/spec/helper/pretty_output.rb +70 -0
  171. data/lib/ramaze/spec/helper/requester.rb +1 -1
  172. data/lib/ramaze/spec/helper/simple_http.rb +5 -4
  173. data/lib/ramaze/spec/helper/snippets.rb +6 -0
  174. data/lib/ramaze/store/default.rb +1 -1
  175. data/lib/ramaze/template.rb +1 -1
  176. data/lib/ramaze/template/amrita2.rb +6 -5
  177. data/lib/ramaze/template/erubis.rb +1 -1
  178. data/lib/ramaze/template/ezamar.rb +1 -1
  179. data/lib/ramaze/template/ezamar/element.rb +1 -1
  180. data/lib/ramaze/template/ezamar/engine.rb +1 -1
  181. data/lib/ramaze/template/ezamar/morpher.rb +1 -1
  182. data/lib/ramaze/template/ezamar/render_partial.rb +1 -1
  183. data/lib/ramaze/template/haml.rb +1 -1
  184. data/lib/ramaze/template/liquid.rb +1 -1
  185. data/lib/ramaze/template/markaby.rb +1 -1
  186. data/lib/ramaze/template/nagoro.rb +4 -6
  187. data/lib/ramaze/template/none.rb +1 -1
  188. data/lib/ramaze/template/remarkably.rb +1 -1
  189. data/lib/ramaze/template/sass.rb +1 -1
  190. data/lib/ramaze/tool.rb +1 -1
  191. data/lib/ramaze/tool/create.rb +7 -1
  192. data/lib/ramaze/tool/localize.rb +7 -14
  193. data/lib/ramaze/tool/mime.rb +1 -1
  194. data/lib/ramaze/tool/record.rb +1 -1
  195. data/lib/ramaze/trinity.rb +1 -1
  196. data/lib/ramaze/trinity/request.rb +4 -2
  197. data/lib/ramaze/trinity/response.rb +1 -1
  198. data/lib/ramaze/trinity/session.rb +7 -1
  199. data/lib/ramaze/version.rb +3 -3
  200. data/lib/vendor/bacon.rb +317 -0
  201. data/rake_tasks/conf.rake +1 -1
  202. data/rake_tasks/maintenance.rake +7 -5
  203. data/rake_tasks/spec.rake +54 -40
  204. data/spec/contrib/auto_params.rb +21 -4
  205. data/spec/contrib/route.rb +31 -4
  206. data/spec/contrib/sequel/fill.rb +3 -4
  207. data/spec/examples/caching.rb +5 -2
  208. data/spec/examples/css.rb +5 -2
  209. data/spec/examples/element.rb +5 -4
  210. data/spec/examples/hello.rb +1 -0
  211. data/spec/examples/linking.rb +18 -0
  212. data/spec/examples/simple.rb +13 -18
  213. data/spec/examples/templates/template_amrita2.rb +3 -2
  214. data/spec/examples/templates/template_erubis.rb +3 -2
  215. data/spec/examples/templates/template_ezamar.rb +2 -1
  216. data/spec/examples/templates/template_haml.rb +3 -2
  217. data/spec/examples/templates/template_liquid.rb +3 -2
  218. data/spec/examples/templates/template_markaby.rb +3 -2
  219. data/spec/examples/templates/template_remarkably.rb +3 -2
  220. data/spec/ramaze/action/basics.rb +4 -4
  221. data/spec/ramaze/action/cache.rb +11 -13
  222. data/spec/ramaze/action/layout.rb +47 -3
  223. data/spec/ramaze/action/render.rb +3 -3
  224. data/spec/ramaze/action/template/instancevars/layout.xhtml +1 -0
  225. data/spec/ramaze/adapter.rb +7 -7
  226. data/spec/ramaze/adapter/mongrel.rb +1 -1
  227. data/spec/ramaze/adapter/record.rb +7 -7
  228. data/spec/ramaze/adapter/webrick.rb +1 -1
  229. data/spec/ramaze/cache.rb +6 -8
  230. data/spec/ramaze/controller.rb +77 -65
  231. data/spec/ramaze/controller/resolve.rb +2 -1
  232. data/spec/ramaze/controller/template_resolving.rb +3 -4
  233. data/spec/ramaze/dispatcher.rb +3 -4
  234. data/spec/ramaze/dispatcher/directory.rb +35 -35
  235. data/spec/ramaze/dispatcher/file.rb +8 -5
  236. data/spec/ramaze/element.rb +4 -4
  237. data/spec/ramaze/error.rb +13 -11
  238. data/spec/ramaze/gestalt.rb +1 -1
  239. data/spec/ramaze/helper/aspect.rb +2 -1
  240. data/spec/ramaze/helper/auth.rb +4 -2
  241. data/spec/ramaze/helper/cache.rb +10 -9
  242. data/spec/ramaze/helper/cgi.rb +2 -2
  243. data/spec/ramaze/helper/file.rb +1 -0
  244. data/spec/ramaze/helper/flash.rb +5 -4
  245. data/spec/ramaze/helper/formatting.rb +1 -1
  246. data/spec/ramaze/helper/link.rb +3 -3
  247. data/spec/ramaze/helper/pager.rb +44 -80
  248. data/spec/ramaze/helper/partial.rb +2 -3
  249. data/spec/ramaze/helper/redirect.rb +10 -1
  250. data/spec/ramaze/helper/stack.rb +4 -3
  251. data/spec/ramaze/helper/template/loop.xhtml +2 -1
  252. data/spec/ramaze/inform/informer.rb +2 -2
  253. data/spec/ramaze/inform/syslog.rb +1 -1
  254. data/spec/ramaze/localize.rb +26 -26
  255. data/spec/ramaze/morpher.rb +6 -7
  256. data/spec/ramaze/params.rb +7 -8
  257. data/spec/ramaze/request.rb +27 -6
  258. data/spec/ramaze/request/mongrel.rb +1 -1
  259. data/spec/ramaze/request/thin.rb +9 -0
  260. data/spec/ramaze/session.rb +2 -1
  261. data/spec/ramaze/store/default.rb +14 -17
  262. data/spec/ramaze/template.rb +5 -7
  263. data/spec/ramaze/template/amrita2.rb +4 -1
  264. data/spec/ramaze/template/erubis.rb +2 -1
  265. data/spec/ramaze/template/ezamar.rb +2 -3
  266. data/spec/ramaze/template/ezamar/other__index.xhtml +1 -0
  267. data/spec/ramaze/template/haml.rb +2 -1
  268. data/spec/ramaze/template/liquid.rb +4 -2
  269. data/spec/ramaze/template/markaby.rb +4 -2
  270. data/spec/ramaze/template/nagoro.rb +3 -4
  271. data/spec/ramaze/template/remarkably.rb +4 -2
  272. data/spec/ramaze/template/sass.rb +3 -2
  273. data/spec/ramaze/template/xslt.rb +4 -7
  274. data/spec/ramaze/trinity/request.rb +4 -3
  275. data/spec/ramaze/trinity/session.rb +6 -4
  276. data/spec/snippets/array/put_within.rb +3 -2
  277. data/spec/snippets/divide.rb +1 -4
  278. data/spec/snippets/kernel/__dir__.rb +1 -1
  279. data/spec/snippets/kernel/acquire.rb +71 -0
  280. data/spec/snippets/kernel/constant.rb +4 -8
  281. data/spec/snippets/numeric/filesize_format.rb +1 -1
  282. data/spec/snippets/ordered_set.rb +9 -2
  283. data/spec/snippets/ramaze/caller_info.rb +3 -3
  284. data/spec/snippets/ramaze/caller_lines.rb +3 -3
  285. data/spec/snippets/string/camel_case.rb +1 -1
  286. data/spec/snippets/string/color.rb +2 -2
  287. data/spec/snippets/string/snake_case.rb +5 -1
  288. data/spec/snippets/string/unindent.rb +1 -1
  289. data/spec/snippets/struct/fill.rb +14 -15
  290. data/spec/snippets/struct/values_at.rb +15 -10
  291. data/spec/snippets/symbol/to_proc.rb +13 -0
  292. data/spec/snippets/thread/into.rb +3 -4
  293. metadata +458 -386
  294. data/doc/README.html +0 -729
  295. data/doc/changes.txt +0 -5044
  296. data/doc/changes.xml +0 -5046
  297. data/lib/proto/public/error.zmr +0 -61
  298. data/lib/proto/src/element/page.rb +0 -17
  299. data/lib/proto/src/model.rb +0 -6
  300. data/lib/proto/template/index.xhtml +0 -15
  301. data/lib/ramaze/spec/helper/layout.rb +0 -58
  302. data/lib/ramaze/spec/helper/minimal.rb +0 -23
  303. data/lib/ramaze/spec/helper/wrap.rb +0 -198
  304. data/spec/snippets/kernel/aquire.rb +0 -71
@@ -0,0 +1,27 @@
1
+ # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
+ # All files in this distribution are subject to the terms of the Ruby license.
3
+
4
+ require 'ramaze'
5
+ require 'ramaze/spec/helper'
6
+
7
+ require __DIR__/'..'/'start'
8
+
9
+ describe MainController do
10
+ behaves_like 'http', 'xpath'
11
+ ramaze :template_root => __DIR__/'../view',
12
+ :public_root => __DIR__/'../public'
13
+
14
+ it 'should show start page' do
15
+ got = get('/')
16
+ got.status.should == 200
17
+ got.at_xpath('//title').text.strip.should ==
18
+ MainController.new.index
19
+ end
20
+
21
+ it 'should show /notemplate' do
22
+ got = get('/notemplate')
23
+ got.status.should == 200
24
+ got.at_xpath('//body').text.strip.should ==
25
+ MainController.new.notemplate
26
+ end
27
+ end
@@ -1,11 +1,11 @@
1
- # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
1
+ # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
2
  # All files in this distribution are subject to the terms of the Ruby license.
3
3
 
4
4
  require 'rubygems'
5
5
  require 'ramaze'
6
6
 
7
- require 'src/controller/main'
8
- require 'src/element/page'
9
- require 'src/model'
7
+ # require all controllers and models
8
+ acquire __DIR__/:controller/'*'
9
+ acquire __DIR__/:model/'*'
10
10
 
11
- Ramaze.start :port => 7000
11
+ Ramaze.start :adapter => :webrick, :port => 7000
@@ -0,0 +1,62 @@
1
+ <link rel="stylesheet" href="/css/ramaze_error.css" />
2
+ <script type="text/javascript" src="/js/jquery.js"></script>
3
+
4
+ <p>The backtrace gives filenames and line numbers for all parts of the call stack.<br />
5
+ Click on any of them to view the surrounding source code.</p>
6
+
7
+ <table class="main">
8
+ <tr class="head">
9
+ <td>File</td><td>Line</td><td>Method</td>
10
+ </tr>
11
+ <?r @backtrace.each do |lines, hash, file, lineno, meth| ?>
12
+ <tr class="line" id="#{hash}">
13
+ <td>#{file}</td><td class="lineno">#{lineno}</td><td><pre>#{meth}</pre></td>
14
+ </tr>
15
+ <tr id="source_#{hash}" style="display:none;">
16
+ <td colspan="3">
17
+ <div class="source">
18
+ <table style="width:100%;">
19
+ <tr>
20
+ <td class="editor" colspan="2">
21
+ #{@editor} #{file} +#{lineno}
22
+ <div style="float: right">
23
+ <a href="txmt://open?url=file://#{file}&line=#{lineno}">open in textmate</a>
24
+ </div>
25
+ </td>
26
+ </tr>
27
+ <?r lines.each do |llineno, lcode, lcurrent| ?>
28
+ <tr class="source" #{'style="background:#faa;"' if lcurrent}>
29
+ <td class="lineno">#{llineno}</td>
30
+ <td class="code"><pre>#{lcode.to_s.rstrip}</pre></td>
31
+ </tr>
32
+ <?r end ?>
33
+ </table>
34
+ </div>
35
+ </td>
36
+ </tr>
37
+ <?r end ?>
38
+ </table>
39
+
40
+ <?r
41
+ { 'Session' => Thread.current[:session],
42
+ 'Request' => Thread.current[:request],
43
+ 'Response' => Thread.current[:response],
44
+ 'Global' => Global,
45
+ }.each do |title, content|
46
+ hash = [title, content].object_id.abs
47
+ ?>
48
+ <div class="additional">
49
+ <h3 id="#{hash}">#{title}</h3>
50
+ <pre style="display:none" id="is_#{hash}">#{CGI.escapeHTML(content.pretty_inspect)}</pre>
51
+ </div>
52
+ <?r end ?>
53
+
54
+ <script type="text/javascript">
55
+ $("tr.line").click(function(){
56
+ $("tr#source_"+this.id).toggle()
57
+ });
58
+
59
+ $("div.additional > h3").click(function(){
60
+ $("pre#is_"+this.id).toggle()
61
+ });
62
+ </script>
@@ -0,0 +1,34 @@
1
+ <p>Ramaze is working correctly with this application, now you can start
2
+ working.</p>
3
+
4
+ <p>To start you can modify:
5
+ <ol>
6
+ <li>
7
+ <code>view/index.xhtml</code>, this page.
8
+ </li>
9
+ <li>
10
+ <code>view/page.xhtml</code>, the layout for this page.
11
+ </li>
12
+ <li>
13
+ <code>controller/main.rb</code>, where you can change the header of this
14
+ page and the <a href="/notemplate">notemplate</a> action
15
+ </li>
16
+ </ol>
17
+ </p>
18
+
19
+ <p>For more documentation, check out <a href="http://ramaze.net">www.ramaze.net</a>, which includes:
20
+ <ul>
21
+ <li>a <a href="http://ramaze.net/getting-started">getting started</a> guide</li>
22
+ <li>some <a href="http://ramaze.net/screencasts">screencasts</a></li>
23
+ <li>and an <a href="http://ramaze.rubyforge.org/tutorial/todolist.html">introductory tutorial</a></li>
24
+ </ul>
25
+ </p>
26
+
27
+ <p>You can also read the
28
+ <a href="http://ramaze.rubyforge.org/rdoc/files/doc/README.html">rdocs</a> or browse
29
+ around the <a href="http://source.ramaze.net">Ramaze source code</a>.
30
+ </p>
31
+
32
+ <p>For help with Ramaze, visit the <a href="irc://chat.freenode.net/ramaze">#ramaze on irc.freenode.net</a> (you can use <a href="http://java.freenode.net/?channel=ramaze">this browser-based frontend</a>),
33
+ or post on the <a href="http://groups.google.com/group/ramaze">Ramaze Google Group</a>.
34
+ </p>
@@ -0,0 +1,15 @@
1
+ <html>
2
+ <head>
3
+ <title>#{@title}</title>
4
+ <style type="text/css">
5
+ body { margin: 2em; }
6
+ #content { margin-left: 2em; }
7
+ </style>
8
+ </head>
9
+ <body>
10
+ <h1>#{@title}</h1>
11
+ <div id="content">
12
+ #@content
13
+ </div>
14
+ </body>
15
+ </html>
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
1
+ # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
2
  # All files in this distribution are subject to the terms of the Ruby license.
3
3
 
4
4
  require 'fileutils'
@@ -10,10 +10,11 @@ end
10
10
 
11
11
  # The main namespace for Ramaze
12
12
  module Ramaze
13
- BASEDIR = File.dirname(File.expand_path(__FILE__))
14
13
  SEEED = $0.dup
15
14
  APPDIR = File.dirname(File.expand_path($0))
16
- $:.unshift BASEDIR
15
+ BASEDIR = File.dirname(File.expand_path(__FILE__))
16
+ $LOAD_PATH.unshift BASEDIR
17
+ $LOAD_PATH.uniq!
17
18
  end
18
19
 
19
20
  Thread.abort_on_exception = true
@@ -35,6 +36,7 @@ require 'ramaze/sourcereload'
35
36
  require 'ramaze/dispatcher'
36
37
  require 'ramaze/template/ezamar'
37
38
  require 'ramaze/contrib'
39
+ require 'ramaze/controller/main'
38
40
 
39
41
  module Ramaze
40
42
 
@@ -50,12 +52,12 @@ module Ramaze
50
52
  # each class in trait[:essentials] by calling ::startup on them.
51
53
 
52
54
  def startup options = {}
53
- starter = options.fetch(:runner, caller[0].split(':').first)
55
+ runner = options.delete(:runner) || caller[0].split(':').first
54
56
 
55
- if $0 == starter or options.delete(:force)
57
+ if $0 == runner or options.delete(:force)
56
58
  Inform.info("Starting up Ramaze (Version #{VERSION})")
57
- SEEED.replace(starter)
58
- APPDIR.replace(File.dirname(File.expand_path(starter)))
59
+ SEEED.replace(runner)
60
+ APPDIR.replace(File.dirname(File.expand_path(runner)))
59
61
 
60
62
  trait[:essentials].each do |obj|
61
63
  obj.startup(options)
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
1
+ # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
2
  # All files in this distribution are subject to the terms of the Ruby license.
3
3
 
4
4
  module Ramaze
@@ -84,9 +84,13 @@ module Ramaze
84
84
  return default if engines.empty?
85
85
 
86
86
  ext = File.extname(template).gsub(/^\./, '')
87
- ext_engine = engines.find{|e| e.last.include?(ext)}.first
87
+ ext_engines = engines.reject{|k,v| not v.include?(ext) }
88
88
 
89
- self[:engine] = (ext_engine || default)
89
+ if ext_engines.has_key?(default)
90
+ self[:engine] = default
91
+ else
92
+ self[:engine] = ext_engines.keys.sort.first
93
+ end
90
94
  end
91
95
 
92
96
  # Returns an instance of controller, will be cached on first access.
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
1
+ # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
2
  # All files in this distribution are subject to the terms of the Ruby license.
3
3
 
4
4
  module Ramaze
@@ -82,7 +82,10 @@ module Ramaze
82
82
  after_process].join
83
83
 
84
84
  if path and tlayout = layout
85
- instance.instance_variable_set("@content", content)
85
+ [instance, tlayout.instance].each do |i|
86
+ i.instance_variable_set("@content", content)
87
+ end
88
+
86
89
  content = tlayout.render
87
90
 
88
91
  # restore Action.current after render above
@@ -110,9 +113,16 @@ module Ramaze
110
113
  return false
111
114
  end
112
115
 
113
- layout_action.binding = binding
114
- layout_action.controller = controller
115
- layout_action.instance = instance
116
+ unless layout_action.controller == controller
117
+ instance.instance_variables.each do |x|
118
+ layout_action.instance.instance_variable_set(x, instance.instance_variable_get(x))
119
+ end
120
+ else
121
+ layout_action.binding = binding
122
+ layout_action.controller = controller
123
+ layout_action.instance = instance
124
+ end
125
+
116
126
  layout_action.path = nil
117
127
  layout_action
118
128
  end
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
1
+ # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
2
  # All files in this distribution are subject to the terms of the Ruby license.
3
3
 
4
4
  require 'socket'
@@ -39,10 +39,10 @@ module Ramaze
39
39
  start_adapter
40
40
 
41
41
  Timeout.timeout(3) do
42
- sleep 0.01 until Global.adapters.list.any?
42
+ sleep 0.01 until Global.adapters.any?
43
43
  end
44
44
 
45
- Global.adapters.list.each{|a| a.join} unless Global.run_loose
45
+ Global.adapters.each{|a| a.join} unless Global.run_loose
46
46
 
47
47
  rescue SystemExit
48
48
  Ramaze.shutdown
@@ -79,13 +79,13 @@ module Ramaze
79
79
 
80
80
  def shutdown
81
81
  Timeout.timeout(1) do
82
- Global.adapters.list.each do |adapter|
82
+ Global.adapters.each do |adapter|
83
83
  a = adapter[:adapter]
84
84
  a.shutdown if a.respond_to?(:shutdown)
85
85
  end
86
86
  end
87
87
  rescue Timeout::Error
88
- Global.adapters.list.each{|a| a.kill! }
88
+ Global.adapters.each{|a| a.kill! }
89
89
  # Hard exit! because it won't be able to kill Webrick otherwise
90
90
  exit!
91
91
  end
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
1
+ # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
2
  # All files in this distribution are subject to the terms of the Ruby license.
3
3
 
4
4
  module Ramaze
@@ -36,7 +36,7 @@ module Ramaze
36
36
  def call(env)
37
37
  if Ramaze::Global.benchmarking
38
38
  time = Benchmark.measure{ respond(env) }
39
- Inform.debug("request took #{time.real}s")
39
+ Inform.debug('request took %.5fs [~%.0f r/s]' % [time.real, 1.0/time.real])
40
40
  else
41
41
  respond env
42
42
  end
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
1
+ # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
2
  # All files in this distribution are subject to the terms of the Ruby license.
3
3
 
4
4
  require 'ramaze/adapter'
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
1
+ # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
2
  # All files in this distribution are subject to the terms of the Ruby license.
3
3
 
4
4
  Ramaze::Inform.debug "Using Evented Mongrel"
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
1
+ # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
2
  # All files in this distribution are subject to the terms of the Ruby license.
3
3
 
4
4
  require 'ramaze/adapter'
@@ -12,7 +12,7 @@ module Ramaze::Adapter
12
12
  # start FastCGI in a new thread, host and port parameter are only taken
13
13
  # to make it compatible with other adapters but have no influence and
14
14
  # can be omitted
15
- def start host = nil, ports = nil
15
+ def run_server host = nil, ports = nil
16
16
  Thread.new do
17
17
  Thread.current[:task] = :cgi
18
18
  Rack::Handler::FastCGI.run(self)
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
1
+ # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
2
  # All files in this distribution are subject to the terms of the Ruby license.
3
3
 
4
4
  require 'mongrel'
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
1
+ # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
2
  # All files in this distribution are subject to the terms of the Ruby license.
3
3
 
4
4
  Ramaze::Inform.debug "Using Swiftiplied Mongrel"
@@ -0,0 +1,25 @@
1
+ require 'thin'
2
+ require 'ramaze/adapter'
3
+ require 'rack/handler/thin'
4
+
5
+ module Ramaze
6
+ module Adapter
7
+
8
+ class Thin < Base
9
+ class << self
10
+
11
+ # start server on given host and port.
12
+ def run_server host, port
13
+ server = ::Thin::Server.new(host, port, self)
14
+ server.silent = true
15
+ server.timeout = 3
16
+ server.start
17
+
18
+ thread = Thread.new{ server.listen! }
19
+ thread[:adapter] = server
20
+ thread
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
1
+ # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
2
  # All files in this distribution are subject to the terms of the Ruby license.
3
3
 
4
4
  require 'ramaze/adapter'
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
1
+ # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
2
  # All files in this distribution are subject to the terms of the Ruby license.
3
3
 
4
4
  require 'ramaze/cache/memory'
@@ -25,7 +25,8 @@ module Ramaze
25
25
  # Ramaze.trait(:essentials).
26
26
 
27
27
  def startup(options)
28
- Cache.add :compiled, :actions, :patterns, :resolved, :shield
28
+ Cache.add :compiled, :actions, :patterns,
29
+ :resolved, :shield, :action_methods
29
30
  end
30
31
 
31
32
  # This will define a method to access a new cache directly over
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
1
+ # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
2
  # All files in this distribution are subject to the terms of the Ruby license.
3
3
  require 'memcache'
4
4
 
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
1
+ # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
2
  # All files in this distribution are subject to the terms of the Ruby license.
3
3
 
4
4
  module Ramaze
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
1
+ # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
2
  # All files in this distribution are subject to the terms of the Ruby license.
3
3
  require 'yaml/store'
4
4
 
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
1
+ # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
2
  # All files in this distribution are subject to the terms of the Ruby license.
3
3
 
4
4
  module Ramaze
@@ -86,13 +86,20 @@ module Ramaze
86
86
  # use Method#get_args to insert values from request.params into Action#params
87
87
 
88
88
  def self.resolve_method(name, *params)
89
- if method = [ name, name.gsub('__','/') ].find{|n| action_methods.delete(n) }
89
+ if method = [ name, name.gsub('__','/') ].find{|n|
90
+ cached_action_methods.include?(n) }
90
91
  meth = instance_method(method)
91
92
  arity = meth.arity
92
93
 
93
94
  if meth.respond_to? :get_args
94
- Cache.args[name] ||= meth.get_args.select{|e| e.to_s !~ /^\*/} || []
95
- args = Cache.args[name]
95
+ unless args = Cache.args[name]
96
+ if args = meth.get_args
97
+ args = args.select{|e| e.to_s !~ /^\*/}
98
+ else
99
+ args = []
100
+ end
101
+ Cache.args[name] = args
102
+ end
96
103
 
97
104
  param_keys = request.params.keys
98
105
 
@@ -100,7 +107,7 @@ module Ramaze
100
107
  if args.size > params.size or args.find{|k,v| param_keys.include?(k.to_s) }
101
108
  args.each_with_index do |(name, val), i|
102
109
  r_params = request.params[name.to_s]
103
- if params[i] and r_params.size > 0
110
+ if params[i] and r_params and r_params.size > 0
104
111
  params[i] = [params[i], r_params].flatten
105
112
  else
106
113
  params[i] ||= r_params
@@ -125,4 +132,4 @@ module Ramaze
125
132
 
126
133
  end
127
134
 
128
- end
135
+ end