ramaze 0.3.9.1 → 2008.06

Sign up to get free protection for your applications and to get access to all the features.
Files changed (400) hide show
  1. data/{doc/README → README.markdown} +78 -32
  2. data/Rakefile +53 -50
  3. data/benchmark/results.txt +131 -0
  4. data/benchmark/run.rb +362 -0
  5. data/benchmark/suite/minimal.rb +13 -0
  6. data/benchmark/suite/no_informer.rb +9 -0
  7. data/benchmark/suite/no_sessions.rb +10 -0
  8. data/benchmark/suite/no_template.rb +9 -0
  9. data/benchmark/suite/simple.rb +7 -0
  10. data/benchmark/suite/template_amrita2.rb +17 -0
  11. data/benchmark/suite/template_builder.rb +12 -0
  12. data/benchmark/suite/template_erubis.rb +10 -0
  13. data/benchmark/suite/template_ezamar.rb +10 -0
  14. data/benchmark/suite/template_haml.rb +15 -0
  15. data/benchmark/suite/template_liquid.rb +13 -0
  16. data/benchmark/suite/template_markaby.rb +11 -0
  17. data/benchmark/suite/template_nagoro.rb +10 -0
  18. data/benchmark/suite/template_redcloth.rb +15 -0
  19. data/benchmark/suite/template_tenjin.rb +10 -0
  20. data/benchmark/test.rb +35 -0
  21. data/bin/ramaze +32 -122
  22. data/cache.yaml +7 -0
  23. data/doc/AUTHORS +26 -22
  24. data/doc/CHANGELOG +16720 -3907
  25. data/doc/INSTALL +77 -19
  26. data/doc/LEGAL +0 -4
  27. data/doc/meta/announcement.txt +43 -54
  28. data/doc/meta/configuration.txt +3 -2
  29. data/doc/readme_chunks/examples.txt +2 -2
  30. data/doc/readme_chunks/installing.txt +66 -20
  31. data/doc/tutorial/todolist.html +338 -520
  32. data/doc/tutorial/todolist.mkd +36 -2
  33. data/examples/{auth → app/auth}/auth.rb +0 -0
  34. data/examples/{auth → app/auth}/template/layout.haml +0 -0
  35. data/examples/{auth → app/auth}/template/login.haml +0 -0
  36. data/examples/{blog → app/blog}/README +0 -0
  37. data/examples/{blog → app/blog}/controller/main.rb +1 -1
  38. data/examples/{blog → app/blog}/model/entry.rb +1 -1
  39. data/examples/{blog → app/blog}/public/styles/blog.css +0 -0
  40. data/examples/{blog → app/blog}/spec/blog.rb +2 -2
  41. data/examples/{blog → app/blog}/start.rb +0 -0
  42. data/examples/{blog → app/blog}/view/edit.xhtml +0 -0
  43. data/examples/{blog → app/blog}/view/index.xhtml +0 -0
  44. data/examples/{blog → app/blog}/view/layout.xhtml +0 -0
  45. data/examples/{blog → app/blog}/view/new.xhtml +0 -0
  46. data/examples/app/chat/model/history.rb +36 -0
  47. data/examples/app/chat/model/message.rb +7 -0
  48. data/examples/app/chat/public/css/chat.css +13 -0
  49. data/examples/app/chat/public/js/chat.js +22 -0
  50. data/examples/app/chat/public/js/jquery.js +3436 -0
  51. data/examples/app/chat/start.rb +40 -0
  52. data/examples/app/chat/view/chat.xhtml +9 -0
  53. data/examples/app/chat/view/index.xhtml +7 -0
  54. data/examples/app/chat/view/layout.xhtml +13 -0
  55. data/examples/app/localization/start.rb +35 -0
  56. data/examples/{rammit → app/rammit}/spec/rammit.rb +2 -1
  57. data/examples/{rammit → app/rammit}/src/controller/main.rb +0 -0
  58. data/examples/{rammit → app/rammit}/src/controller/page.rb +0 -0
  59. data/examples/{rammit → app/rammit}/src/model.rb +0 -0
  60. data/examples/{rammit → app/rammit}/start.rb +0 -0
  61. data/examples/{rammit → app/rammit}/template/index.xhtml +0 -0
  62. data/examples/{rammit → app/rammit}/template/page/view.xhtml +0 -0
  63. data/examples/{rapaste → app/rapaste}/Rakefile +0 -1
  64. data/examples/{rapaste → app/rapaste}/controller/paste.rb +3 -3
  65. data/examples/{rapaste → app/rapaste}/model/paste.rb +0 -0
  66. data/examples/{rapaste → app/rapaste}/public/css/active4d.css +0 -0
  67. data/examples/{rapaste → app/rapaste}/public/css/all_hallows_eve.css +0 -0
  68. data/examples/{rapaste → app/rapaste}/public/css/amy.css +0 -0
  69. data/examples/{rapaste → app/rapaste}/public/css/blackboard.css +0 -0
  70. data/examples/{rapaste → app/rapaste}/public/css/brilliance_black.css +0 -0
  71. data/examples/{rapaste → app/rapaste}/public/css/brilliance_dull.css +0 -0
  72. data/examples/{rapaste → app/rapaste}/public/css/cobalt.css +0 -0
  73. data/examples/{rapaste → app/rapaste}/public/css/dawn.css +0 -0
  74. data/examples/{rapaste → app/rapaste}/public/css/display.css +0 -0
  75. data/examples/{rapaste → app/rapaste}/public/css/eiffel.css +0 -0
  76. data/examples/{rapaste → app/rapaste}/public/css/espresso_libre.css +0 -0
  77. data/examples/{rapaste → app/rapaste}/public/css/idle.css +0 -0
  78. data/examples/{rapaste → app/rapaste}/public/css/iplastic.css +0 -0
  79. data/examples/{rapaste → app/rapaste}/public/css/lazy.css +0 -0
  80. data/examples/{rapaste → app/rapaste}/public/css/mac_classic.css +0 -0
  81. data/examples/{rapaste → app/rapaste}/public/css/magicwb_amiga.css +0 -0
  82. data/examples/{rapaste → app/rapaste}/public/css/pastels_on_dark.css +0 -0
  83. data/examples/{rapaste → app/rapaste}/public/css/slush_poppies.css +0 -0
  84. data/examples/{rapaste → app/rapaste}/public/css/spacecadet.css +0 -0
  85. data/examples/{rapaste → app/rapaste}/public/css/sunburst.css +0 -0
  86. data/examples/{rapaste → app/rapaste}/public/css/twilight.css +0 -0
  87. data/examples/{rapaste → app/rapaste}/public/css/zenburnesque.css +0 -0
  88. data/examples/{rapaste → app/rapaste}/public/js/jquery.js +0 -0
  89. data/examples/{rapaste → app/rapaste}/spec/rapaste.rb +2 -2
  90. data/examples/{rapaste → app/rapaste}/start.rb +0 -0
  91. data/examples/{rapaste → app/rapaste}/view/copy.xhtml +0 -0
  92. data/examples/{rapaste → app/rapaste}/view/index.xhtml +0 -0
  93. data/examples/{rapaste → app/rapaste}/view/layout.xhtml +0 -0
  94. data/examples/{rapaste → app/rapaste}/view/list.xhtml +0 -0
  95. data/examples/{rapaste → app/rapaste}/view/search.xhtml +0 -0
  96. data/examples/{rapaste → app/rapaste}/view/view.xhtml +0 -0
  97. data/examples/{sourceview → app/sourceview}/public/coderay.css +0 -0
  98. data/examples/{sourceview → app/sourceview}/public/images/file.gif +0 -0
  99. data/examples/{sourceview → app/sourceview}/public/images/folder.gif +0 -0
  100. data/examples/{sourceview → app/sourceview}/public/images/tv-collapsable-last.gif +0 -0
  101. data/examples/{sourceview → app/sourceview}/public/images/tv-collapsable.gif +0 -0
  102. data/examples/{sourceview → app/sourceview}/public/images/tv-expandable-last.gif +0 -0
  103. data/examples/{sourceview → app/sourceview}/public/images/tv-expandable.gif +0 -0
  104. data/examples/{sourceview → app/sourceview}/public/images/tv-item-last.gif +0 -0
  105. data/examples/{sourceview → app/sourceview}/public/images/tv-item.gif +0 -0
  106. data/examples/{sourceview → app/sourceview}/public/jquery.js +0 -0
  107. data/examples/{sourceview → app/sourceview}/public/jquery.treeview.css +0 -0
  108. data/examples/{sourceview → app/sourceview}/public/jquery.treeview.js +0 -0
  109. data/examples/{sourceview → app/sourceview}/public/sourceview.js +0 -0
  110. data/examples/{sourceview → app/sourceview}/sourceview.rb +1 -1
  111. data/examples/{sourceview → app/sourceview}/template/index.haml +0 -0
  112. data/examples/{todolist → app/todolist}/README +0 -0
  113. data/examples/{todolist → app/todolist}/public/favicon.ico +0 -0
  114. data/examples/{todolist → app/todolist}/public/js/jquery.js +0 -0
  115. data/examples/{todolist → app/todolist}/public/ramaze.png +0 -0
  116. data/examples/{todolist → app/todolist}/spec/todolist.rb +2 -2
  117. data/examples/{todolist → app/todolist}/src/controller/main.rb +0 -0
  118. data/examples/{todolist → app/todolist}/src/element/page.rb +0 -0
  119. data/examples/{todolist → app/todolist}/src/model.rb +0 -0
  120. data/examples/{todolist → app/todolist}/start.rb +0 -0
  121. data/examples/{todolist → app/todolist}/template/index.xhtml +0 -0
  122. data/examples/{todolist → app/todolist}/template/new.xhtml +0 -0
  123. data/examples/{upload → app/upload}/start.rb +0 -0
  124. data/examples/{upload → app/upload}/view/index.xhtml +0 -0
  125. data/examples/{whywiki → app/whywiki}/spec/whywiki.rb +3 -3
  126. data/examples/{whywiki → app/whywiki}/start.rb +0 -0
  127. data/examples/{whywiki → app/whywiki}/template/edit.xhtml +0 -0
  128. data/examples/{whywiki → app/whywiki}/template/show.xhtml +0 -0
  129. data/examples/{wikore → app/wikore}/spec/wikore.rb +2 -2
  130. data/examples/{wikore → app/wikore}/src/controller.rb +0 -0
  131. data/examples/{wikore → app/wikore}/src/model.rb +0 -0
  132. data/examples/{wikore → app/wikore}/start.rb +0 -0
  133. data/examples/{wikore → app/wikore}/template/index.xhtml +0 -0
  134. data/examples/{wiktacular → app/wiktacular}/README +0 -0
  135. data/examples/{wiktacular → app/wiktacular}/mkd/link/2007-07-20_19-45-51.mkd +0 -0
  136. data/examples/{wiktacular → app/wiktacular}/mkd/link/current.mkd +0 -0
  137. data/examples/{wiktacular → app/wiktacular}/mkd/main/2007-07-20_16-31-33.mkd +0 -0
  138. data/examples/{wiktacular → app/wiktacular}/mkd/main/2007-07-20_19-21-12.mkd +0 -0
  139. data/examples/{wiktacular → app/wiktacular}/mkd/main/2007-07-20_19-23-10.mkd +0 -0
  140. data/examples/{wiktacular → app/wiktacular}/mkd/main/2007-07-20_19-45-07.mkd +0 -0
  141. data/examples/{wiktacular → app/wiktacular}/mkd/main/current.mkd +0 -0
  142. data/examples/{wiktacular → app/wiktacular}/mkd/markdown/current.mkd +0 -0
  143. data/examples/{wiktacular → app/wiktacular}/mkd/testing/2007-07-20_16-43-46.mkd +0 -0
  144. data/examples/{wiktacular → app/wiktacular}/mkd/testing/2007-07-20_19-43-50.mkd +0 -0
  145. data/examples/{wiktacular → app/wiktacular}/mkd/testing/2007-07-21_18-46-01.mkd +0 -0
  146. data/examples/{wiktacular → app/wiktacular}/mkd/testing/2007-07-21_18-46-32.mkd +0 -0
  147. data/examples/{wiktacular → app/wiktacular}/mkd/testing/2007-07-21_18-47-08.mkd +0 -0
  148. data/examples/{wiktacular → app/wiktacular}/mkd/testing/2007-07-21_18-47-54.mkd +0 -0
  149. data/examples/{wiktacular → app/wiktacular}/mkd/testing/current.mkd +0 -0
  150. data/examples/{wiktacular → app/wiktacular}/public/favicon.ico +0 -0
  151. data/examples/{wiktacular → app/wiktacular}/public/screen.css +0 -0
  152. data/examples/{wiktacular → app/wiktacular}/spec/wiktacular.rb +4 -5
  153. data/examples/{wiktacular → app/wiktacular}/src/controller.rb +0 -0
  154. data/examples/{wiktacular → app/wiktacular}/src/model.rb +0 -0
  155. data/examples/{wiktacular → app/wiktacular}/start.rb +0 -0
  156. data/examples/{wiktacular → app/wiktacular}/template/edit.xhtml +0 -0
  157. data/examples/{wiktacular → app/wiktacular}/template/html_layout.xhtml +0 -0
  158. data/examples/{wiktacular → app/wiktacular}/template/index.xhtml +0 -0
  159. data/examples/{wiktacular → app/wiktacular}/template/new.xhtml +0 -0
  160. data/examples/{element.rb → basic/element.rb} +0 -0
  161. data/examples/basic/gestalt.rb +27 -0
  162. data/examples/{hello.rb → basic/hello.rb} +0 -0
  163. data/examples/{layout.rb → basic/layout.rb} +0 -0
  164. data/examples/{linking.rb → basic/linking.rb} +0 -0
  165. data/examples/{simple.rb → basic/simple.rb} +3 -3
  166. data/examples/{caching.rb → helpers/cache.rb} +0 -0
  167. data/examples/helpers/form_with_sequel.rb +24 -0
  168. data/examples/helpers/httpdigest.rb +50 -0
  169. data/examples/{identity.rb → helpers/identity.rb} +0 -0
  170. data/examples/{nitro_form.rb → helpers/nitro_form.rb} +0 -0
  171. data/examples/helpers/provide.rb +23 -0
  172. data/examples/helpers/rest.rb +28 -0
  173. data/examples/helpers/simple_captcha.rb +29 -0
  174. data/examples/{css.rb → misc/css.rb} +0 -0
  175. data/examples/{facebook.rb → misc/facebook.rb} +0 -0
  176. data/examples/{memleak_detector.rb → misc/memleak_detector.rb} +0 -0
  177. data/examples/misc/nagoro_element.rb +43 -0
  178. data/examples/{ramaise.rb → misc/ramaise.rb} +0 -0
  179. data/examples/misc/rapp.rb +45 -0
  180. data/examples/misc/sequel_scaffolding.rb +34 -0
  181. data/examples/{simple_auth.rb → misc/simple_auth.rb} +0 -0
  182. data/examples/templates/template_amrita2.rb +1 -1
  183. data/examples/templates/template_erubis.rb +2 -2
  184. data/examples/templates/template_ezamar.rb +1 -1
  185. data/examples/templates/template_haml.rb +2 -2
  186. data/examples/templates/template_liquid.rb +2 -2
  187. data/examples/templates/template_markaby.rb +1 -1
  188. data/examples/templates/template_nagoro.rb +1 -1
  189. data/examples/templates/template_redcloth.rb +2 -2
  190. data/examples/templates/template_remarkably.rb +1 -1
  191. data/examples/templates/template_tenjin.rb +5 -9
  192. data/examples/templates/template_xslt.rb +1 -1
  193. data/lib/proto/public/dispatch.fcgi +0 -0
  194. data/lib/proto/public/js/jquery.js +750 -577
  195. data/lib/proto/spec/main.rb +1 -1
  196. data/lib/proto/start.ru +8 -0
  197. data/lib/proto/view/page.xhtml +13 -1
  198. data/lib/ramaze.rb +32 -15
  199. data/lib/ramaze/action.rb +18 -1
  200. data/lib/ramaze/action/render.rb +45 -17
  201. data/lib/ramaze/adapter.rb +8 -7
  202. data/lib/ramaze/adapter/base.rb +79 -13
  203. data/lib/ramaze/adapter/cgi.rb +5 -10
  204. data/lib/ramaze/adapter/ebb.rb +6 -20
  205. data/lib/ramaze/adapter/fake.rb +12 -0
  206. data/lib/ramaze/adapter/fcgi.rb +5 -11
  207. data/lib/ramaze/adapter/lsws.rb +5 -9
  208. data/lib/ramaze/adapter/mongrel.rb +5 -9
  209. data/lib/ramaze/adapter/scgi.rb +4 -8
  210. data/lib/ramaze/adapter/thin.rb +6 -11
  211. data/lib/ramaze/adapter/webrick.rb +13 -22
  212. data/lib/ramaze/cache.rb +36 -10
  213. data/lib/ramaze/cache/memcached.rb +3 -2
  214. data/lib/ramaze/contrib.rb +1 -1
  215. data/lib/ramaze/contrib/email.rb +1 -1
  216. data/lib/ramaze/contrib/file_cache.rb +1 -1
  217. data/lib/ramaze/contrib/gems.rb +79 -0
  218. data/lib/ramaze/contrib/gettext/po.rb +0 -0
  219. data/lib/ramaze/contrib/profiling.rb +1 -1
  220. data/lib/ramaze/contrib/rest.rb +14 -0
  221. data/lib/ramaze/controller.rb +45 -12
  222. data/lib/ramaze/controller/error.rb +4 -4
  223. data/lib/ramaze/controller/resolve.rb +61 -42
  224. data/lib/ramaze/current.rb +2 -2
  225. data/lib/ramaze/current/request.rb +25 -2
  226. data/lib/ramaze/current/response.rb +8 -0
  227. data/lib/ramaze/current/session.rb +64 -36
  228. data/lib/ramaze/current/session/flash.rb +14 -2
  229. data/lib/ramaze/current/session/hash.rb +3 -2
  230. data/lib/ramaze/dispatcher.rb +25 -12
  231. data/lib/ramaze/dispatcher/action.rb +12 -3
  232. data/lib/ramaze/dispatcher/directory.rb +4 -1
  233. data/lib/ramaze/dispatcher/error.rb +3 -3
  234. data/lib/ramaze/dispatcher/file.rb +11 -3
  235. data/lib/ramaze/gestalt.rb +1 -1
  236. data/lib/ramaze/helper.rb +17 -21
  237. data/lib/ramaze/helper/aspect.rb +20 -14
  238. data/lib/ramaze/helper/auth.rb +1 -1
  239. data/lib/ramaze/helper/cache.rb +3 -6
  240. data/lib/ramaze/helper/cgi.rb +6 -2
  241. data/lib/ramaze/helper/flash.rb +7 -7
  242. data/lib/ramaze/helper/form.rb +281 -0
  243. data/lib/ramaze/helper/formatting.rb +76 -0
  244. data/lib/ramaze/helper/gestalt.rb +15 -0
  245. data/lib/ramaze/helper/gravatar.rb +15 -0
  246. data/lib/ramaze/helper/httpdigest.rb +48 -0
  247. data/lib/ramaze/helper/identity.rb +87 -62
  248. data/lib/ramaze/helper/partial.rb +11 -2
  249. data/lib/ramaze/helper/redirect.rb +12 -3
  250. data/lib/ramaze/helper/rest.rb +43 -0
  251. data/lib/ramaze/helper/sendfile.rb +1 -3
  252. data/lib/ramaze/helper/sequel.rb +3 -0
  253. data/lib/ramaze/helper/simple_captcha.rb +31 -0
  254. data/lib/ramaze/helper/stack.rb +14 -5
  255. data/lib/ramaze/helper/user.rb +86 -34
  256. data/lib/ramaze/helper/xhtml.rb +23 -0
  257. data/lib/ramaze/log.rb +1 -2
  258. data/lib/ramaze/log/analogger.rb +24 -19
  259. data/lib/ramaze/log/growl.rb +24 -19
  260. data/lib/ramaze/log/hub.rb +25 -22
  261. data/lib/ramaze/log/informer.rb +104 -99
  262. data/lib/ramaze/log/knotify.rb +17 -12
  263. data/lib/ramaze/log/logger.rb +14 -8
  264. data/lib/ramaze/log/logging.rb +63 -60
  265. data/lib/ramaze/log/syslog.rb +24 -19
  266. data/lib/ramaze/log/xosd.rb +77 -71
  267. data/lib/ramaze/option.rb +153 -0
  268. data/lib/ramaze/option/dsl.rb +45 -0
  269. data/lib/ramaze/option/holder.rb +153 -0
  270. data/lib/ramaze/option/merger.rb +108 -0
  271. data/lib/ramaze/route.rb +15 -2
  272. data/lib/ramaze/setup.rb +50 -0
  273. data/lib/ramaze/snippets/binding/locals.rb +1 -1
  274. data/lib/ramaze/snippets/dictionary.rb +3 -3
  275. data/lib/ramaze/snippets/divide.rb +7 -7
  276. data/lib/ramaze/snippets/kernel/__dir__.rb +1 -1
  277. data/lib/ramaze/snippets/kernel/acquire.rb +0 -5
  278. data/lib/ramaze/snippets/metaid.rb +1 -1
  279. data/lib/ramaze/snippets/numeric/filesize_format.rb +11 -5
  280. data/lib/ramaze/snippets/object/instance_variable_defined.rb +8 -0
  281. data/lib/ramaze/snippets/object/scope.rb +1 -1
  282. data/lib/ramaze/snippets/object/thread_accessor.rb +1 -1
  283. data/lib/ramaze/snippets/ordered_set.rb +5 -1
  284. data/lib/ramaze/snippets/ramaze/deprecated.rb +7 -0
  285. data/lib/ramaze/snippets/ramaze/thread_accessor.rb +15 -1
  286. data/lib/ramaze/snippets/string/esc.rb +2 -2
  287. data/lib/ramaze/snippets/string/start_with.rb +1 -0
  288. data/lib/ramaze/snippets/string/unindent.rb +9 -1
  289. data/lib/ramaze/snippets/struct/values_at.rb +17 -1
  290. data/lib/ramaze/snippets/thread/into.rb +1 -1
  291. data/lib/ramaze/sourcereload.rb +83 -76
  292. data/lib/ramaze/spec/helper.rb +39 -26
  293. data/lib/ramaze/spec/helper/bacon.rb +5 -5
  294. data/lib/ramaze/spec/helper/mock_http.rb +1 -7
  295. data/lib/ramaze/spec/helper/pretty_output.rb +10 -2
  296. data/lib/ramaze/spec/helper/requester.rb +14 -0
  297. data/lib/ramaze/template.rb +6 -3
  298. data/lib/ramaze/template/amrita2.rb +1 -0
  299. data/lib/ramaze/template/erubis.rb +7 -1
  300. data/lib/ramaze/template/ezamar/render_partial.rb +1 -1
  301. data/lib/ramaze/template/nagoro.rb +1 -0
  302. data/lib/ramaze/template/redcloth.rb +1 -0
  303. data/lib/ramaze/template/tagz.rb +8 -8
  304. data/lib/ramaze/template/tenjin.rb +42 -2
  305. data/lib/ramaze/template/xslt.rb +4 -0
  306. data/lib/ramaze/tool/daemonize.rb +37 -0
  307. data/lib/ramaze/tool/localize.rb +142 -106
  308. data/lib/ramaze/version.rb +2 -10
  309. data/rake_tasks/conf.rake +11 -13
  310. data/rake_tasks/gem.rake +59 -37
  311. data/rake_tasks/git.rake +41 -0
  312. data/rake_tasks/maintenance.rake +263 -299
  313. data/rake_tasks/release.rake +63 -0
  314. data/rake_tasks/spec.rake +1 -1
  315. data/ramaze.gemspec +731 -0
  316. data/spec/contrib/profiling.rb +5 -2
  317. data/spec/examples/caching.rb +1 -1
  318. data/spec/examples/css.rb +1 -1
  319. data/spec/examples/element.rb +1 -1
  320. data/spec/examples/hello.rb +1 -1
  321. data/spec/examples/linking.rb +1 -1
  322. data/spec/examples/simple.rb +1 -1
  323. data/spec/examples/simple_auth.rb +1 -1
  324. data/spec/ramaze/action/cache.rb +58 -14
  325. data/spec/ramaze/action/file_cache.rb +48 -0
  326. data/spec/ramaze/action/layout.rb +2 -2
  327. data/spec/ramaze/action/render.rb +1 -2
  328. data/spec/ramaze/action/{template → view}/bar.xhtml +0 -0
  329. data/spec/ramaze/action/{template → view}/instancevars/layout.xhtml +0 -0
  330. data/spec/ramaze/action/{template → view}/other_wrapper.xhtml +0 -0
  331. data/spec/ramaze/action/{template → view}/single_wrapper.xhtml +0 -0
  332. data/spec/ramaze/action/{template → view}/sub/sub_wrapper.xhtml +0 -0
  333. data/spec/ramaze/adapter.rb +29 -2
  334. data/spec/ramaze/adapter/ebb.rb +12 -0
  335. data/spec/ramaze/cache.rb +82 -15
  336. data/spec/ramaze/controller.rb +6 -3
  337. data/spec/ramaze/controller/actionless_templates.rb +2 -2
  338. data/spec/ramaze/controller/resolve.rb +1 -1
  339. data/spec/ramaze/controller/template_resolving.rb +4 -6
  340. data/spec/ramaze/controller/{template → view}/greet.xhtml +0 -0
  341. data/spec/ramaze/controller/{template → view}/list.xhtml +0 -0
  342. data/spec/ramaze/controller/{template → view}/other/greet/other.xhtml +0 -0
  343. data/spec/ramaze/controller/{template → view}/other_wrapper.xhtml +0 -0
  344. data/spec/ramaze/error.rb +1 -1
  345. data/spec/ramaze/helper/aspect.rb +4 -4
  346. data/spec/ramaze/helper/cache.rb +56 -39
  347. data/spec/ramaze/helper/flash.rb +14 -1
  348. data/spec/ramaze/helper/form.rb +118 -0
  349. data/spec/ramaze/helper/formatting.rb +21 -0
  350. data/spec/ramaze/helper/link.rb +2 -2
  351. data/spec/ramaze/helper/pager.rb +2 -2
  352. data/spec/ramaze/helper/partial.rb +13 -1
  353. data/spec/ramaze/helper/simple_captcha.rb +22 -0
  354. data/spec/ramaze/helper/user.rb +7 -10
  355. data/spec/ramaze/helper/{template → view}/locals.xhtml +0 -0
  356. data/spec/ramaze/helper/{template → view}/loop.xhtml +0 -0
  357. data/spec/ramaze/helper/{template → view}/num.xhtml +0 -0
  358. data/spec/ramaze/helper/{template → view}/partial.xhtml +0 -0
  359. data/spec/ramaze/helper/{template → view}/recursive.xhtml +0 -0
  360. data/spec/ramaze/helper/{template → view}/recursive_local_ivars.xhtml +0 -0
  361. data/spec/ramaze/helper/{template → view}/recursive_locals.xhtml +0 -0
  362. data/spec/ramaze/helper/{template → view}/test_template.xhtml +0 -0
  363. data/spec/ramaze/localize.rb +22 -0
  364. data/spec/ramaze/log/informer.rb +10 -10
  365. data/spec/ramaze/log/syslog.rb +1 -1
  366. data/spec/ramaze/request.rb +13 -1
  367. data/spec/ramaze/request/ebb.rb +9 -0
  368. data/spec/ramaze/rewrite.rb +36 -0
  369. data/spec/ramaze/rewrite/file.css +1 -0
  370. data/spec/ramaze/route.rb +1 -0
  371. data/spec/ramaze/template.rb +5 -5
  372. data/spec/ramaze/template/amrita2.rb +1 -1
  373. data/spec/ramaze/template/builder.rb +18 -22
  374. data/spec/ramaze/template/erubis.rb +1 -1
  375. data/spec/ramaze/template/ezamar.rb +1 -1
  376. data/spec/ramaze/template/haml.rb +2 -2
  377. data/spec/ramaze/template/liquid.rb +1 -1
  378. data/spec/ramaze/template/markaby.rb +1 -1
  379. data/spec/ramaze/template/nagoro.rb +1 -1
  380. data/spec/ramaze/template/redcloth.rb +1 -1
  381. data/spec/ramaze/template/remarkably.rb +1 -1
  382. data/spec/ramaze/template/sass.rb +1 -1
  383. data/spec/ramaze/template/tagz.rb +1 -1
  384. data/spec/ramaze/template/tenjin.rb +4 -6
  385. data/spec/ramaze/template/xslt.rb +1 -1
  386. data/spec/snippets/string/unindent.rb +6 -0
  387. data/spec/snippets/struct/values_at.rb +8 -0
  388. metadata +522 -487
  389. data/doc/ProjectInfo +0 -53
  390. data/doc/migrate/1110_to_1111.txt +0 -131
  391. data/lib/ramaze/contrib/route.rb +0 -22
  392. data/lib/ramaze/global.rb +0 -116
  393. data/lib/ramaze/global/dsl.rb +0 -39
  394. data/lib/ramaze/global/globalstruct.rb +0 -147
  395. data/lib/ramaze/helper/inform.rb +0 -40
  396. data/lib/ramaze/inform.rb +0 -4
  397. data/lib/ramaze/snippets/kernel/aquire.rb +0 -1
  398. data/lib/vendor/bacon.rb +0 -323
  399. data/rake_tasks/darcs.rake +0 -5
  400. data/spec/contrib/route.rb +0 -36
@@ -9,22 +9,25 @@ end
9
9
  require 'ramaze'
10
10
  require 'ramaze/spec/helper/bacon'
11
11
 
12
- def ramaze(options = {})
13
- appdir = File.dirname(caller[0].split(':').first)
14
- options = {
15
- :template_root => appdir/:template,
16
- :public_root => appdir/:public,
17
- :adapter => false,
18
- :run_loose => true,
19
- :error_page => false,
20
- :port => 7007,
21
- :host => '127.0.0.1',
22
- :force => true,
23
- :sourcereload => false,
24
- :origin => :spec,
25
- }.merge(options)
26
-
27
- Ramaze.start(options)
12
+ # Invoke ramaze with a set of default options suitable for testing.
13
+ # you may pass your options that will override the defaults.
14
+ class Bacon::Context
15
+ # Skip start from required files
16
+ Ramaze.trait[:started] = true
17
+
18
+ def ramaze(options = {})
19
+ options = {
20
+ :adapter => false,
21
+ :run_loose => true,
22
+ :error_page => false,
23
+ :port => 7007,
24
+ :host => '127.0.0.1',
25
+ :sourcereload => false,
26
+ :origin => :spec,
27
+ }.merge(options)
28
+
29
+ Ramaze.start!(options)
30
+ end
28
31
  end
29
32
 
30
33
  SPEC_REQUIRE_DEPENDENCY = {
@@ -45,11 +48,6 @@ rescue LoadError => ex
45
48
  exit
46
49
  end
47
50
 
48
- def testcase_requires(*following)
49
- warn "'testcase_requires' is being deprecated, please use 'spec_require' instead"
50
- spec_require(*following)
51
- end
52
-
53
51
  shared "http" do
54
52
  require 'ramaze/spec/helper/mock_http'
55
53
  extend MockHTTP
@@ -61,9 +59,14 @@ shared 'browser' do
61
59
  end
62
60
 
63
61
  shared 'requester' do
62
+ require 'ramaze/spec/helper/mock_http'
64
63
  require 'ramaze/spec/helper/requester'
64
+ extend Requester
65
+ extend MockHTTP
65
66
  end
66
67
 
68
+ # make it easier to use XPATH on the MockResponse#body - in cases you can't use
69
+ # Hpricot or if you want to keep dependencies down
67
70
  shared 'xpath' do
68
71
  behaves_like 'http'
69
72
 
@@ -71,36 +74,44 @@ shared 'xpath' do
71
74
  require 'rexml/xpath'
72
75
 
73
76
  class Rack::MockResponse
77
+ # Delegate to REXML::XPath::match
74
78
  def match(xpath = '*')
75
79
  REXML::XPath::match(REXML::Document.new(body), xpath)
76
80
  end
77
81
  alias / match
78
82
  alias search match
79
83
 
84
+ # Delegate to REXML::XPath::first
80
85
  def first(xpath = '*')
81
86
  REXML::XPath::first(REXML::Document.new(body), xpath)
82
87
  end
83
88
  alias at first
84
89
 
90
+ # Delegate to REXML::XPath::each
85
91
  def each(xpath = '*', &block)
86
92
  REXML::XPath::each(REXML::Document.new(body), xpath, &block)
87
93
  end
88
94
  end
89
95
 
90
- def xp_match(obj, xpath = '*')
91
- XPath::match(rexml_doc(body), xpath, &block)
96
+ # Delegate to REXML::XPath::match
97
+ def xp_match(obj, xpath = '*', &block)
98
+ REXML::XPath::match(rexml_doc(obj), xpath, &block)
92
99
  end
93
100
  alias xp_search xp_match
94
101
 
95
- def xp_first(obj, xpath = '*')
96
- XPath::first(rexml_doc(body), xpath, &block)
102
+ # Delegate to REXML::XPath::first
103
+ def xp_first(obj, xpath = '*', &block)
104
+ REXML::XPath::first(rexml_doc(obj), xpath, &block)
97
105
  end
98
106
  alias xp_at xp_first
99
107
 
108
+ # Delegate to REXML::XPath::each
100
109
  def xp_each(obj, xpath = '*', &block)
101
- XPath::each(rexml_doc(body), xpath, &block)
110
+ REXML::XPath::each(rexml_doc(obj), xpath, &block)
102
111
  end
103
112
 
113
+ # Delegate to REXML::Document.new - return the obj if it's already an
114
+ # instance.
104
115
  def rexml_doc(obj)
105
116
  case obj
106
117
  when REXML::Document, REXML::Element
@@ -112,10 +123,12 @@ shared 'xpath' do
112
123
  end
113
124
 
114
125
  shared 'resolve' do
126
+ # shortcut for Ramaze::Controller::resolve
115
127
  def resolve(url)
116
128
  Ramaze::Controller::resolve(url)
117
129
  end
118
130
 
131
+ # Shortcut to stack on the instance of Action return from resolve
119
132
  def stack(url, &block)
120
133
  resolve(url).stack(&block)
121
134
  end
@@ -1,7 +1,7 @@
1
- libdir = File.expand_path(File.join(File.dirname(__FILE__), '../../../'))
2
- $LOAD_PATH.unshift libdir
3
- require 'vendor/bacon'
4
- require 'ramaze/spec/helper/pretty_output'
1
+ require 'bacon'
2
+
3
+ dir = File.dirname(__FILE__)
4
+ require File.join(File.dirname(__FILE__), 'pretty_output')
5
+
5
6
  Bacon.extend Bacon::PrettyOutput
6
- # Bacon.extend Bacon::TestUnitOutput
7
7
  Bacon.summary_on_exit
@@ -2,15 +2,9 @@
2
2
  # All files in this distribution are subject to the terms of the Ruby license.
3
3
 
4
4
  require 'ramaze'
5
+ require 'ramaze/adapter/fake'
5
6
  require 'rack/mock'
6
7
 
7
- module Ramaze
8
- module Adapter
9
- class Fake < Base
10
- end
11
- end
12
- end
13
-
14
8
  module MockHTTP
15
9
  DEFAULTS = {
16
10
  'REMOTE_ADDR' => '127.0.0.1'
@@ -2,6 +2,7 @@ module Bacon
2
2
  module PrettyOutput
3
3
  NAME = ''
4
4
 
5
+ # store name and run
5
6
  def handle_specification(name)
6
7
  NAME.replace name
7
8
  puts NAME
@@ -9,14 +10,15 @@ module Bacon
9
10
  puts
10
11
  end
11
12
 
13
+ # Core, yields the requirement and outputs problems
12
14
  def handle_requirement(description)
13
15
  print "- #{description}\n"
14
16
  error = yield
15
17
 
16
18
  unless error.empty?
17
- if defined?(Ramaze::Logging)
19
+ if defined?(Ramaze::Logging::Logging)
18
20
  puts '', " #{NAME} -- #{description} [FAILED]".center(70, '-'), ''
19
- colors = Ramaze::Informer::COLORS
21
+ colors = Ramaze::Logging::Logger::Informer::COLORS
20
22
 
21
23
  until RamazeLogger.history.empty?
22
24
  tag, line = RamazeLogger.history.shift
@@ -29,6 +31,7 @@ module Bacon
29
31
  end
30
32
  end
31
33
 
34
+ # Show nicer output on error
32
35
  def general_error
33
36
  puts "", ErrorLog
34
37
  ErrorLog.scan(/^\s*(.*?):(\d+): #{NAME} - (.*?)$/) do
@@ -37,6 +40,7 @@ module Bacon
37
40
  ErrorLog.replace ''
38
41
  end
39
42
 
43
+ # output summary
40
44
  def handle_summary
41
45
  puts
42
46
  puts "%d tests, %d assertions, %d failures, %d errors" %
@@ -47,20 +51,24 @@ end
47
51
 
48
52
  if defined?(Ramaze::Logging)
49
53
  module Ramaze
54
+ # Special Logger, stores everything in its history
50
55
  class SpecLogger
51
56
  include Ramaze::Logging
52
57
  include Enumerable
53
58
 
54
59
  attr_accessor :history
55
60
 
61
+ # Create new history
56
62
  def initialize
57
63
  @history = []
58
64
  end
59
65
 
66
+ # Yield the history
60
67
  def each
61
68
  @history.each{|e| yield(e) }
62
69
  end
63
70
 
71
+ # general log
64
72
  def log(tag, str)
65
73
  @history << [tag, str]
66
74
  end
@@ -37,6 +37,20 @@ module Requester
37
37
  ex.message
38
38
  end
39
39
 
40
+ def hget(url = '/', hash = {})
41
+ @response = get(url, hash)
42
+ @body = @response.body
43
+ @status = @response.status
44
+ Hpricot(@body)
45
+ end
46
+
47
+ def hpost(url = '/', hash = {})
48
+ @response = post(url, hash)
49
+ @body = @response.body
50
+ @status = @response.status
51
+ Hpricot(@body)
52
+ end
53
+
40
54
  def url2uri url
41
55
  uri = URI.parse(url)
42
56
  #p uri.methods.sort.grep(/=/)
@@ -60,16 +60,19 @@ module Ramaze
60
60
  action.instance.__send__(method, *action.params)
61
61
  end
62
62
 
63
- # This is a wrapper to use Global.compile without even thinking about it.
64
- # Don't use it if your engine is not based on a compile/eval principle.
63
+ # This is a wrapper to use Global.compile without even thinking about
64
+ # it. Don't use it if your engine is not based on a compile/eval
65
+ # principle.
65
66
 
66
67
  def wrap_compile(action, template = nil)
67
68
  template ||= reaction_or_file(action).to_s
68
69
  caching_compile(action, template)
69
70
  end
70
71
 
72
+ # If Global.compile is enabled try to find the action in the cache,
73
+ # otherwise give a new compiled object back.
71
74
  def caching_compile(action, template)
72
- if Global.compile
75
+ if Global.compile && action.template
73
76
  Cache.compiled[action.relaxed_hash] ||= compile(action, template)
74
77
  else
75
78
  compile(action, template)
@@ -35,6 +35,7 @@ module Ramaze
35
35
  template.render_with(data)
36
36
  end
37
37
 
38
+ # Compile a template, return instance of Amrita2::Template
38
39
  def compile(action, template)
39
40
  ::Amrita2::Template.new(template)
40
41
  end
@@ -13,6 +13,11 @@ module Ramaze
13
13
 
14
14
  ENGINES[self] = %w[ rhtml ]
15
15
 
16
+ # Allow for swapping in a differnt Erubis engine (it supplies several) and
17
+ # passing options to the engine.
18
+ trait[:engine] ||= ::Erubis::Eruby
19
+ trait[:options] ||= {}
20
+
16
21
  class << self
17
22
 
18
23
  # Entry-point for Action#render
@@ -24,8 +29,9 @@ module Ramaze
24
29
 
25
30
  # Creates an instance of ::Erubis::Eruby, sets the filename
26
31
  # from the template and returns the instance.
32
+
27
33
  def compile(action, template)
28
- eruby = ::Erubis::Eruby.new(template)
34
+ eruby = ancestral_trait[:engine].new(template, ancestral_trait[:options])
29
35
  eruby.init_evaluator(:filename => (action.template || __FILE__))
30
36
  eruby
31
37
  end
@@ -2,7 +2,7 @@
2
2
  # All files in this distribution are subject to the terms of the Ruby license.
3
3
 
4
4
  require 'ramaze/template/ezamar/engine'
5
- require 'ramaze/helper/partial'
5
+
6
6
 
7
7
  module Ezamar
8
8
 
@@ -24,6 +24,7 @@ module Ramaze
24
24
  nagoro.result(:file => file, :binding => action.binding)
25
25
  end
26
26
 
27
+ # Use file_or_result instead of reaction_or_file
27
28
  def wrap_compile(action, template = nil)
28
29
  template ||= file_or_result(action)
29
30
  caching_compile(action, template)
@@ -10,6 +10,7 @@ module Ramaze
10
10
  ENGINES[self] = %w[ redcloth ]
11
11
 
12
12
  class << self
13
+ # Take the action and directly transform it into html by RedCloth
13
14
  def transform(action)
14
15
  restrictions = action.controller.trait[:redcloth_options] || []
15
16
  rules = action.controller.trait[:redcloth_options] || []
@@ -8,11 +8,11 @@ module Ramaze
8
8
 
9
9
  # Is responsible for compiling a template using the Tagz templating engine.
10
10
  # Can be found at: http://rubyforge.org/projects/codeforpeople/
11
- # gem install tagz
12
- # be sure you get version 1.0 or higher
11
+ # gem install tagz
12
+ # be sure you get version 1.0 or higher
13
13
 
14
14
  class Tagz < Template
15
- ENGINES[self] = %w[ rb tagz ]
15
+ ENGINES[self] = %w[ rb tagz ]
16
16
 
17
17
  class << self
18
18
 
@@ -21,9 +21,9 @@ module Ramaze
21
21
  def transform action
22
22
  result, file = result_and_file(action)
23
23
  if file
24
- markup = "tagz{#{ file }}"
24
+ markup = "tagz{#{ file }}"
25
25
  action.instance.extend Methods
26
- result = eval markup, action.binding, file
26
+ result = eval markup, action.binding, file
27
27
  end
28
28
  result
29
29
  end
@@ -39,10 +39,10 @@ module Ramaze
39
39
 
40
40
  private
41
41
  def << s
42
- tagz << s; self
42
+ tagz << s; self
43
43
  end
44
44
 
45
- def concat *a
45
+ def concat *a
46
46
  a.each{|s| tagz << s}; self
47
47
  end
48
48
 
@@ -71,7 +71,7 @@ module Ramaze
71
71
  end
72
72
 
73
73
  def __ *a
74
- concat eol
74
+ concat eol
75
75
  end
76
76
  end
77
77
  end
@@ -1,6 +1,9 @@
1
1
  require "tenjin"
2
2
  require "tempfile"
3
3
 
4
+ # Tenjin does not work with a Binding, so helpers included by the controller
5
+ # will not be automatically available in templates. Instead we add support
6
+ # for popular helpers to its internal Context class to make them available.
4
7
  class Tenjin::Context
5
8
  include Ramaze::Helper::Methods
6
9
  helper :link, :sendfile, :flash, :cgi
@@ -11,18 +14,55 @@ module Ramaze
11
14
 
12
15
  # Is responsible for compiling a template using the Tenjin templating engine.
13
16
  # Can be found at: http://www.kuwata-lab.com/tenjin/
17
+ #
18
+ # Instance variables in your action method are automatically available in
19
+ # the template:
20
+ #
21
+ # class MainController < Ramaze::Controller
22
+ # engine :Tenjin
23
+ # def index
24
+ # @names = ['Alice', 'Bob', 'Charlie']
25
+ # @greeting = 'Hello'
26
+ # %q{
27
+ # <html><body>
28
+ # <h1><?rb for name in @names ?><p>#{@greeting} #{name}</p><?rb end ?></h1>
29
+ # </body></html>
30
+ # }
31
+ # end
32
+ # end
33
+ #
34
+ # Note that only instance vars are available and methods (including helper methods)
35
+ # are not available in the template. A few common helpers are made generally available
36
+ # though by virtue of the modifications to Tenjin::Context at the top of this file.
14
37
 
15
38
  class Tenjin < Template
16
39
 
17
40
  ENGINES[self] = %w[ rbhtml tenjin ]
18
41
 
19
42
  class << self
43
+ # Transforms an action into the XHTML code for parsing and returns
44
+ # the result.
20
45
  def transform(action)
21
46
  tenjin = wrap_compile(action)
22
- context = action.instance.instance_variable_get("@context") || {}
23
- tenjin.render(context)
47
+ # Tenjin can't deal with a Binding so we construct a hash for it.
48
+ tenjin.render(context(action))
24
49
  end
25
50
 
51
+ # Return a hash of all instance variables from the action.
52
+ # For each instance var @foo, we put :foo => @foo in the hash.
53
+ def context action
54
+ hash = {}
55
+ action_binding = action.binding
56
+ var_names = action.instance.instance_variables
57
+ var_names.each do |var_name|
58
+ # Strip the @ from the front of the var name to use as hash key,
59
+ # then simply use the value of the instance var as the hash value.
60
+ hash[var_name[1..-1]] = eval(var_name, action_binding)
61
+ end
62
+ hash
63
+ end
64
+
65
+ # Compile a template, returning an instance of ::Tenjin::Template.
26
66
  def compile(action, template)
27
67
  tenjin = ::Tenjin::Template.new
28
68
  tenjin.convert(template)
@@ -44,6 +44,7 @@ module Ramaze
44
44
 
45
45
  private
46
46
 
47
+ # further abstraction for the transform
47
48
  def do_transform(action)
48
49
  result, file = result_and_file(action)
49
50
 
@@ -53,10 +54,12 @@ module Ramaze
53
54
  xslt.serve
54
55
  end
55
56
 
57
+ # Synchronize the block to run with the mutex
56
58
  def ext_functions_synchronize &block
57
59
  XSLT_EXT_FUNCTIONS_LOCK.synchronize &block
58
60
  end
59
61
 
62
+ # Expose functors
60
63
  def register_ext_functions instance, fun_xmlns
61
64
 
62
65
  instance.methods.each do |method|
@@ -81,6 +84,7 @@ module Ramaze
81
84
  o = Class.new.new
82
85
 
83
86
  class << o
87
+ # Delayed creation of method
84
88
  def create_method(name, &block)
85
89
  self.class.send(:define_method, name, &block)
86
90
  end