Pistos-ramaze 2008.09

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (588) hide show
  1. data/README.markdown +481 -0
  2. data/Rakefile +228 -0
  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 +80 -0
  22. data/doc/AUTHORS +29 -0
  23. data/doc/CHANGELOG +19530 -0
  24. data/doc/COPYING +56 -0
  25. data/doc/FAQ +92 -0
  26. data/doc/GPL +339 -0
  27. data/doc/INSTALL +92 -0
  28. data/doc/LEGAL +26 -0
  29. data/doc/TODO +29 -0
  30. data/doc/meta/announcement.txt +99 -0
  31. data/doc/meta/configuration.txt +163 -0
  32. data/doc/meta/internals.txt +278 -0
  33. data/doc/meta/users.kml +64 -0
  34. data/doc/readme_chunks/appendix.txt +10 -0
  35. data/doc/readme_chunks/examples.txt +38 -0
  36. data/doc/readme_chunks/features.txt +148 -0
  37. data/doc/readme_chunks/getting_help.txt +5 -0
  38. data/doc/readme_chunks/getting_started.txt +18 -0
  39. data/doc/readme_chunks/installing.txt +92 -0
  40. data/doc/readme_chunks/introduction.txt +18 -0
  41. data/doc/readme_chunks/principles.txt +56 -0
  42. data/doc/readme_chunks/thanks.txt +59 -0
  43. data/doc/tutorial/todolist.html +742 -0
  44. data/doc/tutorial/todolist.mkd +787 -0
  45. data/examples/app/auth/auth.rb +54 -0
  46. data/examples/app/auth/template/layout.haml +20 -0
  47. data/examples/app/auth/template/login.haml +16 -0
  48. data/examples/app/blog/README +3 -0
  49. data/examples/app/blog/controller/main.rb +29 -0
  50. data/examples/app/blog/model/entry.rb +30 -0
  51. data/examples/app/blog/public/styles/blog.css +132 -0
  52. data/examples/app/blog/spec/blog.rb +87 -0
  53. data/examples/app/blog/start.rb +7 -0
  54. data/examples/app/blog/view/edit.xhtml +17 -0
  55. data/examples/app/blog/view/index.xhtml +17 -0
  56. data/examples/app/blog/view/layout.xhtml +11 -0
  57. data/examples/app/blog/view/new.xhtml +16 -0
  58. data/examples/app/chat/model/history.rb +36 -0
  59. data/examples/app/chat/model/message.rb +7 -0
  60. data/examples/app/chat/public/css/chat.css +13 -0
  61. data/examples/app/chat/public/js/chat.js +22 -0
  62. data/examples/app/chat/public/js/jquery.js +3436 -0
  63. data/examples/app/chat/start.rb +40 -0
  64. data/examples/app/chat/view/chat.xhtml +9 -0
  65. data/examples/app/chat/view/index.xhtml +7 -0
  66. data/examples/app/chat/view/layout.xhtml +13 -0
  67. data/examples/app/localization/start.rb +35 -0
  68. data/examples/app/rapaste/Rakefile +34 -0
  69. data/examples/app/rapaste/controller/paste.rb +101 -0
  70. data/examples/app/rapaste/model/paste.rb +58 -0
  71. data/examples/app/rapaste/public/css/active4d.css +114 -0
  72. data/examples/app/rapaste/public/css/all_hallows_eve.css +72 -0
  73. data/examples/app/rapaste/public/css/amy.css +147 -0
  74. data/examples/app/rapaste/public/css/blackboard.css +88 -0
  75. data/examples/app/rapaste/public/css/brilliance_black.css +605 -0
  76. data/examples/app/rapaste/public/css/brilliance_dull.css +599 -0
  77. data/examples/app/rapaste/public/css/cobalt.css +149 -0
  78. data/examples/app/rapaste/public/css/dawn.css +121 -0
  79. data/examples/app/rapaste/public/css/display.css +197 -0
  80. data/examples/app/rapaste/public/css/eiffel.css +121 -0
  81. data/examples/app/rapaste/public/css/espresso_libre.css +109 -0
  82. data/examples/app/rapaste/public/css/idle.css +62 -0
  83. data/examples/app/rapaste/public/css/iplastic.css +80 -0
  84. data/examples/app/rapaste/public/css/lazy.css +73 -0
  85. data/examples/app/rapaste/public/css/mac_classic.css +123 -0
  86. data/examples/app/rapaste/public/css/magicwb_amiga.css +104 -0
  87. data/examples/app/rapaste/public/css/pastels_on_dark.css +188 -0
  88. data/examples/app/rapaste/public/css/slush_poppies.css +85 -0
  89. data/examples/app/rapaste/public/css/spacecadet.css +51 -0
  90. data/examples/app/rapaste/public/css/sunburst.css +180 -0
  91. data/examples/app/rapaste/public/css/twilight.css +137 -0
  92. data/examples/app/rapaste/public/css/zenburnesque.css +91 -0
  93. data/examples/app/rapaste/public/js/jquery.js +11 -0
  94. data/examples/app/rapaste/spec/rapaste.rb +51 -0
  95. data/examples/app/rapaste/start.rb +25 -0
  96. data/examples/app/rapaste/view/copy.xhtml +10 -0
  97. data/examples/app/rapaste/view/index.xhtml +9 -0
  98. data/examples/app/rapaste/view/layout.xhtml +25 -0
  99. data/examples/app/rapaste/view/list.xhtml +29 -0
  100. data/examples/app/rapaste/view/search.xhtml +41 -0
  101. data/examples/app/rapaste/view/view.xhtml +37 -0
  102. data/examples/app/sourceview/public/coderay.css +104 -0
  103. data/examples/app/sourceview/public/images/file.gif +0 -0
  104. data/examples/app/sourceview/public/images/folder.gif +0 -0
  105. data/examples/app/sourceview/public/images/tv-collapsable-last.gif +0 -0
  106. data/examples/app/sourceview/public/images/tv-collapsable.gif +0 -0
  107. data/examples/app/sourceview/public/images/tv-expandable-last.gif +0 -0
  108. data/examples/app/sourceview/public/images/tv-expandable.gif +0 -0
  109. data/examples/app/sourceview/public/images/tv-item-last.gif +0 -0
  110. data/examples/app/sourceview/public/images/tv-item.gif +0 -0
  111. data/examples/app/sourceview/public/jquery.js +11 -0
  112. data/examples/app/sourceview/public/jquery.treeview.css +48 -0
  113. data/examples/app/sourceview/public/jquery.treeview.js +223 -0
  114. data/examples/app/sourceview/public/sourceview.js +52 -0
  115. data/examples/app/sourceview/sourceview.rb +77 -0
  116. data/examples/app/sourceview/template/index.haml +59 -0
  117. data/examples/app/todolist/README +1 -0
  118. data/examples/app/todolist/public/favicon.ico +0 -0
  119. data/examples/app/todolist/public/js/jquery.js +1923 -0
  120. data/examples/app/todolist/public/ramaze.png +0 -0
  121. data/examples/app/todolist/spec/todolist.rb +132 -0
  122. data/examples/app/todolist/src/controller/main.rb +70 -0
  123. data/examples/app/todolist/src/element/page.rb +31 -0
  124. data/examples/app/todolist/src/model.rb +14 -0
  125. data/examples/app/todolist/start.rb +11 -0
  126. data/examples/app/todolist/template/index.xhtml +17 -0
  127. data/examples/app/todolist/template/new.xhtml +7 -0
  128. data/examples/app/upload/start.rb +19 -0
  129. data/examples/app/upload/view/index.xhtml +25 -0
  130. data/examples/app/whywiki/spec/whywiki.rb +58 -0
  131. data/examples/app/whywiki/start.rb +46 -0
  132. data/examples/app/whywiki/template/edit.xhtml +14 -0
  133. data/examples/app/whywiki/template/show.xhtml +18 -0
  134. data/examples/app/wikore/spec/wikore.rb +111 -0
  135. data/examples/app/wikore/src/controller.rb +80 -0
  136. data/examples/app/wikore/src/model.rb +53 -0
  137. data/examples/app/wikore/start.rb +9 -0
  138. data/examples/app/wikore/template/index.xhtml +8 -0
  139. data/examples/app/wiktacular/README +2 -0
  140. data/examples/app/wiktacular/mkd/link/2007-07-20_19-45-51.mkd +1 -0
  141. data/examples/app/wiktacular/mkd/link/current.mkd +1 -0
  142. data/examples/app/wiktacular/mkd/main/2007-07-20_16-31-33.mkd +1 -0
  143. data/examples/app/wiktacular/mkd/main/2007-07-20_19-21-12.mkd +1 -0
  144. data/examples/app/wiktacular/mkd/main/2007-07-20_19-23-10.mkd +2 -0
  145. data/examples/app/wiktacular/mkd/main/2007-07-20_19-45-07.mkd +2 -0
  146. data/examples/app/wiktacular/mkd/main/current.mkd +2 -0
  147. data/examples/app/wiktacular/mkd/markdown/current.mkd +3 -0
  148. data/examples/app/wiktacular/mkd/testing/2007-07-20_16-43-46.mkd +2 -0
  149. data/examples/app/wiktacular/mkd/testing/2007-07-20_19-43-50.mkd +3 -0
  150. data/examples/app/wiktacular/mkd/testing/2007-07-21_18-46-01.mkd +11 -0
  151. data/examples/app/wiktacular/mkd/testing/2007-07-21_18-46-32.mkd +13 -0
  152. data/examples/app/wiktacular/mkd/testing/2007-07-21_18-47-08.mkd +17 -0
  153. data/examples/app/wiktacular/mkd/testing/2007-07-21_18-47-54.mkd +17 -0
  154. data/examples/app/wiktacular/mkd/testing/current.mkd +17 -0
  155. data/examples/app/wiktacular/public/favicon.ico +0 -0
  156. data/examples/app/wiktacular/public/screen.css +72 -0
  157. data/examples/app/wiktacular/spec/wiktacular.rb +157 -0
  158. data/examples/app/wiktacular/src/controller.rb +55 -0
  159. data/examples/app/wiktacular/src/model.rb +102 -0
  160. data/examples/app/wiktacular/start.rb +8 -0
  161. data/examples/app/wiktacular/template/edit.xhtml +6 -0
  162. data/examples/app/wiktacular/template/html_layout.xhtml +27 -0
  163. data/examples/app/wiktacular/template/index.xhtml +9 -0
  164. data/examples/app/wiktacular/template/new.xhtml +6 -0
  165. data/examples/basic/element.rb +45 -0
  166. data/examples/basic/gestalt.rb +27 -0
  167. data/examples/basic/hello.rb +15 -0
  168. data/examples/basic/layout.rb +28 -0
  169. data/examples/basic/linking.rb +29 -0
  170. data/examples/basic/simple.rb +56 -0
  171. data/examples/helpers/cache.rb +31 -0
  172. data/examples/helpers/form_with_sequel.rb +24 -0
  173. data/examples/helpers/httpdigest.rb +50 -0
  174. data/examples/helpers/identity.rb +18 -0
  175. data/examples/helpers/nitro_form.rb +23 -0
  176. data/examples/helpers/paginate.rb +71 -0
  177. data/examples/helpers/provide.rb +23 -0
  178. data/examples/helpers/rest.rb +28 -0
  179. data/examples/helpers/simple_captcha.rb +29 -0
  180. data/examples/misc/css.rb +37 -0
  181. data/examples/misc/facebook.rb +159 -0
  182. data/examples/misc/memleak_detector.rb +32 -0
  183. data/examples/misc/nagoro_element.rb +43 -0
  184. data/examples/misc/ramaise.rb +132 -0
  185. data/examples/misc/rapp.rb +45 -0
  186. data/examples/misc/sequel_scaffolding.rb +34 -0
  187. data/examples/misc/simple_auth.rb +35 -0
  188. data/examples/templates/template/external.amrita +19 -0
  189. data/examples/templates/template/external.haml +22 -0
  190. data/examples/templates/template/external.liquid +28 -0
  191. data/examples/templates/template/external.mab +30 -0
  192. data/examples/templates/template/external.nag +28 -0
  193. data/examples/templates/template/external.redcloth +19 -0
  194. data/examples/templates/template/external.rem +30 -0
  195. data/examples/templates/template/external.rhtml +28 -0
  196. data/examples/templates/template/external.tenjin +28 -0
  197. data/examples/templates/template/external.xsl +57 -0
  198. data/examples/templates/template/external.zmr +28 -0
  199. data/examples/templates/template_amrita2.rb +74 -0
  200. data/examples/templates/template_erubis.rb +53 -0
  201. data/examples/templates/template_ezamar.rb +50 -0
  202. data/examples/templates/template_haml.rb +50 -0
  203. data/examples/templates/template_liquid.rb +65 -0
  204. data/examples/templates/template_markaby.rb +58 -0
  205. data/examples/templates/template_nagoro.rb +51 -0
  206. data/examples/templates/template_redcloth.rb +59 -0
  207. data/examples/templates/template_remarkably.rb +55 -0
  208. data/examples/templates/template_tenjin.rb +53 -0
  209. data/examples/templates/template_xslt.rb +49 -0
  210. data/lib/proto/controller/init.rb +10 -0
  211. data/lib/proto/controller/main.rb +20 -0
  212. data/lib/proto/model/init.rb +4 -0
  213. data/lib/proto/public/css/ramaze_error.css +90 -0
  214. data/lib/proto/public/dispatch.fcgi +11 -0
  215. data/lib/proto/public/favicon.ico +0 -0
  216. data/lib/proto/public/js/jquery.js +3549 -0
  217. data/lib/proto/public/ramaze.png +0 -0
  218. data/lib/proto/spec/main.rb +25 -0
  219. data/lib/proto/start.rb +8 -0
  220. data/lib/proto/start.ru +16 -0
  221. data/lib/proto/view/error.xhtml +64 -0
  222. data/lib/proto/view/index.xhtml +34 -0
  223. data/lib/proto/view/page.xhtml +27 -0
  224. data/lib/ramaze/action/render.rb +191 -0
  225. data/lib/ramaze/action.rb +153 -0
  226. data/lib/ramaze/adapter/base.rb +128 -0
  227. data/lib/ramaze/adapter/cgi.rb +20 -0
  228. data/lib/ramaze/adapter/ebb.rb +18 -0
  229. data/lib/ramaze/adapter/evented_mongrel.rb +7 -0
  230. data/lib/ramaze/adapter/fake.rb +12 -0
  231. data/lib/ramaze/adapter/fcgi.rb +18 -0
  232. data/lib/ramaze/adapter/lsws.rb +19 -0
  233. data/lib/ramaze/adapter/mongrel.rb +21 -0
  234. data/lib/ramaze/adapter/scgi.rb +18 -0
  235. data/lib/ramaze/adapter/swiftiplied_mongrel.rb +7 -0
  236. data/lib/ramaze/adapter/thin.rb +17 -0
  237. data/lib/ramaze/adapter/webrick.rb +43 -0
  238. data/lib/ramaze/adapter.rb +97 -0
  239. data/lib/ramaze/cache/memcached.rb +69 -0
  240. data/lib/ramaze/cache/memory.rb +6 -0
  241. data/lib/ramaze/cache/yaml_store.rb +68 -0
  242. data/lib/ramaze/cache.rb +113 -0
  243. data/lib/ramaze/contrib/auto_params/get_args.rb +58 -0
  244. data/lib/ramaze/contrib/auto_params.rb +135 -0
  245. data/lib/ramaze/contrib/email.rb +84 -0
  246. data/lib/ramaze/contrib/facebook/facebook.rb +171 -0
  247. data/lib/ramaze/contrib/facebook.rb +23 -0
  248. data/lib/ramaze/contrib/file_cache.rb +65 -0
  249. data/lib/ramaze/contrib/gems.rb +78 -0
  250. data/lib/ramaze/contrib/gettext/mo.rb +155 -0
  251. data/lib/ramaze/contrib/gettext/parser.rb +46 -0
  252. data/lib/ramaze/contrib/gettext/po.rb +109 -0
  253. data/lib/ramaze/contrib/gettext.rb +113 -0
  254. data/lib/ramaze/contrib/gzip_filter.rb +69 -0
  255. data/lib/ramaze/contrib/maruku_uv.rb +59 -0
  256. data/lib/ramaze/contrib/profiling.rb +36 -0
  257. data/lib/ramaze/contrib/rest.rb +17 -0
  258. data/lib/ramaze/contrib/sequel/create_join.rb +25 -0
  259. data/lib/ramaze/contrib/sequel/fill.rb +12 -0
  260. data/lib/ramaze/contrib/sequel/form_field.rb +129 -0
  261. data/lib/ramaze/contrib/sequel/image.rb +198 -0
  262. data/lib/ramaze/contrib/sequel/relation.rb +82 -0
  263. data/lib/ramaze/contrib/sequel_cache.rb +92 -0
  264. data/lib/ramaze/contrib.rb +82 -0
  265. data/lib/ramaze/controller/error.rb +46 -0
  266. data/lib/ramaze/controller/main.rb +2 -0
  267. data/lib/ramaze/controller/resolve.rb +273 -0
  268. data/lib/ramaze/controller.rb +280 -0
  269. data/lib/ramaze/current/request.rb +205 -0
  270. data/lib/ramaze/current/response.rb +39 -0
  271. data/lib/ramaze/current/session/flash.rb +87 -0
  272. data/lib/ramaze/current/session/hash.rb +66 -0
  273. data/lib/ramaze/current/session.rb +181 -0
  274. data/lib/ramaze/current.rb +110 -0
  275. data/lib/ramaze/dispatcher/action.rb +48 -0
  276. data/lib/ramaze/dispatcher/directory.rb +119 -0
  277. data/lib/ramaze/dispatcher/error.rb +108 -0
  278. data/lib/ramaze/dispatcher/file.rb +95 -0
  279. data/lib/ramaze/dispatcher.rb +145 -0
  280. data/lib/ramaze/error.rb +24 -0
  281. data/lib/ramaze/gestalt.rb +124 -0
  282. data/lib/ramaze/helper/aspect.rb +106 -0
  283. data/lib/ramaze/helper/auth.rb +125 -0
  284. data/lib/ramaze/helper/cache.rb +140 -0
  285. data/lib/ramaze/helper/cgi.rb +39 -0
  286. data/lib/ramaze/helper/flash.rb +59 -0
  287. data/lib/ramaze/helper/form.rb +281 -0
  288. data/lib/ramaze/helper/formatting.rb +158 -0
  289. data/lib/ramaze/helper/gestalt.rb +15 -0
  290. data/lib/ramaze/helper/gravatar.rb +15 -0
  291. data/lib/ramaze/helper/httpdigest.rb +59 -0
  292. data/lib/ramaze/helper/identity.rb +119 -0
  293. data/lib/ramaze/helper/link.rb +122 -0
  294. data/lib/ramaze/helper/markaby.rb +31 -0
  295. data/lib/ramaze/helper/maruku.rb +7 -0
  296. data/lib/ramaze/helper/nitroform.rb +14 -0
  297. data/lib/ramaze/helper/pager.rb +366 -0
  298. data/lib/ramaze/helper/paginate.rb +234 -0
  299. data/lib/ramaze/helper/partial.rb +105 -0
  300. data/lib/ramaze/helper/redirect.rb +82 -0
  301. data/lib/ramaze/helper/rest.rb +43 -0
  302. data/lib/ramaze/helper/sendfile.rb +16 -0
  303. data/lib/ramaze/helper/sequel.rb +55 -0
  304. data/lib/ramaze/helper/simple_captcha.rb +31 -0
  305. data/lib/ramaze/helper/stack.rb +77 -0
  306. data/lib/ramaze/helper/tagz.rb +19 -0
  307. data/lib/ramaze/helper/thread.rb +17 -0
  308. data/lib/ramaze/helper/ultraviolet.rb +44 -0
  309. data/lib/ramaze/helper/user.rb +110 -0
  310. data/lib/ramaze/helper/xhtml.rb +23 -0
  311. data/lib/ramaze/helper.rb +79 -0
  312. data/lib/ramaze/log/analogger.rb +40 -0
  313. data/lib/ramaze/log/growl.rb +38 -0
  314. data/lib/ramaze/log/hub.rb +41 -0
  315. data/lib/ramaze/log/informer.rb +128 -0
  316. data/lib/ramaze/log/knotify.rb +28 -0
  317. data/lib/ramaze/log/logger.rb +26 -0
  318. data/lib/ramaze/log/logging.rb +89 -0
  319. data/lib/ramaze/log/syslog.rb +51 -0
  320. data/lib/ramaze/log/xosd.rb +92 -0
  321. data/lib/ramaze/log.rb +27 -0
  322. data/lib/ramaze/option/dsl.rb +45 -0
  323. data/lib/ramaze/option/holder.rb +131 -0
  324. data/lib/ramaze/option/merger.rb +108 -0
  325. data/lib/ramaze/option.rb +156 -0
  326. data/lib/ramaze/reloader.rb +186 -0
  327. data/lib/ramaze/route.rb +97 -0
  328. data/lib/ramaze/setup.rb +50 -0
  329. data/lib/ramaze/snippets/array/put_within.rb +44 -0
  330. data/lib/ramaze/snippets/binding/locals.rb +25 -0
  331. data/lib/ramaze/snippets/blankslate.rb +7 -0
  332. data/lib/ramaze/snippets/dictionary.rb +504 -0
  333. data/lib/ramaze/snippets/divide.rb +20 -0
  334. data/lib/ramaze/snippets/fiber.rb +63 -0
  335. data/lib/ramaze/snippets/kernel/constant.rb +41 -0
  336. data/lib/ramaze/snippets/kernel/pretty_inspect.rb +21 -0
  337. data/lib/ramaze/snippets/metaid.rb +17 -0
  338. data/lib/ramaze/snippets/numeric/filesize_format.rb +32 -0
  339. data/lib/ramaze/snippets/numeric/time.rb +63 -0
  340. data/lib/ramaze/snippets/object/__dir__.rb +29 -0
  341. data/lib/ramaze/snippets/object/acquire.rb +40 -0
  342. data/lib/ramaze/snippets/object/instance_variable_defined.rb +19 -0
  343. data/lib/ramaze/snippets/object/pretty.rb +16 -0
  344. data/lib/ramaze/snippets/object/scope.rb +18 -0
  345. data/lib/ramaze/snippets/object/traits.rb +76 -0
  346. data/lib/ramaze/snippets/ordered_set.rb +51 -0
  347. data/lib/ramaze/snippets/proc/locals.rb +19 -0
  348. data/lib/ramaze/snippets/ramaze/caller_info.rb +30 -0
  349. data/lib/ramaze/snippets/ramaze/caller_lines.rb +51 -0
  350. data/lib/ramaze/snippets/ramaze/deprecated.rb +20 -0
  351. data/lib/ramaze/snippets/ramaze/fiber.rb +24 -0
  352. data/lib/ramaze/snippets/ramaze/state.rb +86 -0
  353. data/lib/ramaze/snippets/ramaze/struct.rb +45 -0
  354. data/lib/ramaze/snippets/string/camel_case.rb +21 -0
  355. data/lib/ramaze/snippets/string/color.rb +31 -0
  356. data/lib/ramaze/snippets/string/each.rb +19 -0
  357. data/lib/ramaze/snippets/string/end_with.rb +20 -0
  358. data/lib/ramaze/snippets/string/esc.rb +34 -0
  359. data/lib/ramaze/snippets/string/ord.rb +21 -0
  360. data/lib/ramaze/snippets/string/snake_case.rb +21 -0
  361. data/lib/ramaze/snippets/string/start_with.rb +19 -0
  362. data/lib/ramaze/snippets/string/unindent.rb +28 -0
  363. data/lib/ramaze/snippets/thread/into.rb +18 -0
  364. data/lib/ramaze/snippets.rb +22 -0
  365. data/lib/ramaze/spec/helper/bacon.rb +7 -0
  366. data/lib/ramaze/spec/helper/browser.rb +88 -0
  367. data/lib/ramaze/spec/helper/mock_http.rb +63 -0
  368. data/lib/ramaze/spec/helper/pretty_output.rb +82 -0
  369. data/lib/ramaze/spec/helper/requester.rb +63 -0
  370. data/lib/ramaze/spec/helper/simple_http.rb +434 -0
  371. data/lib/ramaze/spec/helper/snippets.rb +14 -0
  372. data/lib/ramaze/spec/helper.rb +135 -0
  373. data/lib/ramaze/spec.rb +1 -0
  374. data/lib/ramaze/store/default.rb +109 -0
  375. data/lib/ramaze/template/amrita2.rb +45 -0
  376. data/lib/ramaze/template/builder.rb +28 -0
  377. data/lib/ramaze/template/erubis.rb +41 -0
  378. data/lib/ramaze/template/ezamar/element.rb +169 -0
  379. data/lib/ramaze/template/ezamar/engine.rb +76 -0
  380. data/lib/ramaze/template/ezamar/morpher.rb +135 -0
  381. data/lib/ramaze/template/ezamar/render_partial.rb +31 -0
  382. data/lib/ramaze/template/ezamar/textpow.syntax +34 -0
  383. data/lib/ramaze/template/ezamar.rb +42 -0
  384. data/lib/ramaze/template/haml.rb +37 -0
  385. data/lib/ramaze/template/liquid.rb +36 -0
  386. data/lib/ramaze/template/markaby.rb +52 -0
  387. data/lib/ramaze/template/maruku.rb +34 -0
  388. data/lib/ramaze/template/nagoro.rb +52 -0
  389. data/lib/ramaze/template/none.rb +14 -0
  390. data/lib/ramaze/template/redcloth.rb +25 -0
  391. data/lib/ramaze/template/remarkably.rb +38 -0
  392. data/lib/ramaze/template/sass.rb +37 -0
  393. data/lib/ramaze/template/tagz.rb +79 -0
  394. data/lib/ramaze/template/tenjin.rb +74 -0
  395. data/lib/ramaze/template/xslt.rb +100 -0
  396. data/lib/ramaze/template.rb +87 -0
  397. data/lib/ramaze/tool/create.rb +48 -0
  398. data/lib/ramaze/tool/daemonize.rb +37 -0
  399. data/lib/ramaze/tool/localize.rb +202 -0
  400. data/lib/ramaze/tool/mime.rb +35 -0
  401. data/lib/ramaze/tool/mime_types.yaml +615 -0
  402. data/lib/ramaze/tool/project_creator.rb +110 -0
  403. data/lib/ramaze/tool/record.rb +6 -0
  404. data/lib/ramaze/tool.rb +9 -0
  405. data/lib/ramaze/trinity.rb +16 -0
  406. data/lib/ramaze/version.rb +6 -0
  407. data/lib/ramaze.rb +133 -0
  408. data/lib/vendor/bacon.rb +323 -0
  409. data/rake_tasks/conf.rake +71 -0
  410. data/rake_tasks/coverage.rake +46 -0
  411. data/rake_tasks/gem.rake +74 -0
  412. data/rake_tasks/git.rake +41 -0
  413. data/rake_tasks/maintenance.rake +386 -0
  414. data/rake_tasks/metric.rake +24 -0
  415. data/rake_tasks/release.rake +76 -0
  416. data/rake_tasks/spec.rake +61 -0
  417. data/ramaze.gemspec +773 -0
  418. data/spec/contrib/auto_params.rb +121 -0
  419. data/spec/contrib/profiling.rb +29 -0
  420. data/spec/contrib/sequel/fill.rb +47 -0
  421. data/spec/examples/caching.rb +19 -0
  422. data/spec/examples/css.rb +15 -0
  423. data/spec/examples/element.rb +15 -0
  424. data/spec/examples/hello.rb +11 -0
  425. data/spec/examples/linking.rb +18 -0
  426. data/spec/examples/simple.rb +45 -0
  427. data/spec/examples/simple_auth.rb +32 -0
  428. data/spec/examples/templates/template_amrita2.rb +16 -0
  429. data/spec/examples/templates/template_erubis.rb +23 -0
  430. data/spec/examples/templates/template_ezamar.rb +23 -0
  431. data/spec/examples/templates/template_haml.rb +23 -0
  432. data/spec/examples/templates/template_liquid.rb +29 -0
  433. data/spec/examples/templates/template_markaby.rb +23 -0
  434. data/spec/examples/templates/template_redcloth.rb +28 -0
  435. data/spec/examples/templates/template_remarkably.rb +23 -0
  436. data/spec/examples/templates/template_tenjin.rb +28 -0
  437. data/spec/helper.rb +3 -0
  438. data/spec/ramaze/action/basics.rb +36 -0
  439. data/spec/ramaze/action/cache.rb +87 -0
  440. data/spec/ramaze/action/file_cache.rb +70 -0
  441. data/spec/ramaze/action/layout.rb +190 -0
  442. data/spec/ramaze/action/render.rb +31 -0
  443. data/spec/ramaze/action/view/bar.xhtml +1 -0
  444. data/spec/ramaze/action/view/instancevars/layout.xhtml +1 -0
  445. data/spec/ramaze/action/view/other_wrapper.xhtml +1 -0
  446. data/spec/ramaze/action/view/single_wrapper.xhtml +1 -0
  447. data/spec/ramaze/action/view/sub/sub_wrapper.xhtml +1 -0
  448. data/spec/ramaze/adapter/ebb.rb +12 -0
  449. data/spec/ramaze/adapter/mongrel.rb +12 -0
  450. data/spec/ramaze/adapter/record.rb +31 -0
  451. data/spec/ramaze/adapter/webrick.rb +12 -0
  452. data/spec/ramaze/adapter.rb +49 -0
  453. data/spec/ramaze/cache.rb +140 -0
  454. data/spec/ramaze/controller/actionless_templates.rb +32 -0
  455. data/spec/ramaze/controller/resolve.rb +32 -0
  456. data/spec/ramaze/controller/subclass.rb +36 -0
  457. data/spec/ramaze/controller/template_resolving.rb +113 -0
  458. data/spec/ramaze/controller/view/bar.xhtml +1 -0
  459. data/spec/ramaze/controller/view/base/another.xhtml +1 -0
  460. data/spec/ramaze/controller/view/greet.xhtml +1 -0
  461. data/spec/ramaze/controller/view/list.xhtml +1 -0
  462. data/spec/ramaze/controller/view/other/greet/other.xhtml +1 -0
  463. data/spec/ramaze/controller/view/other_wrapper.xhtml +1 -0
  464. data/spec/ramaze/controller.rb +180 -0
  465. data/spec/ramaze/current/request.rb +30 -0
  466. data/spec/ramaze/current/session.rb +97 -0
  467. data/spec/ramaze/dispatcher/directory.rb +55 -0
  468. data/spec/ramaze/dispatcher/file.rb +60 -0
  469. data/spec/ramaze/dispatcher/public/favicon.ico +0 -0
  470. data/spec/ramaze/dispatcher/public/file name.txt +1 -0
  471. data/spec/ramaze/dispatcher/public/test_download.css +141 -0
  472. data/spec/ramaze/dispatcher.rb +31 -0
  473. data/spec/ramaze/element.rb +107 -0
  474. data/spec/ramaze/error.rb +94 -0
  475. data/spec/ramaze/gestalt.rb +131 -0
  476. data/spec/ramaze/helper/aspect.rb +101 -0
  477. data/spec/ramaze/helper/auth.rb +66 -0
  478. data/spec/ramaze/helper/cache.rb +160 -0
  479. data/spec/ramaze/helper/cgi.rb +43 -0
  480. data/spec/ramaze/helper/file.rb +18 -0
  481. data/spec/ramaze/helper/flash.rb +133 -0
  482. data/spec/ramaze/helper/form.rb +118 -0
  483. data/spec/ramaze/helper/formatting.rb +54 -0
  484. data/spec/ramaze/helper/link.rb +124 -0
  485. data/spec/ramaze/helper/pager.rb +99 -0
  486. data/spec/ramaze/helper/partial.rb +88 -0
  487. data/spec/ramaze/helper/redirect.rb +112 -0
  488. data/spec/ramaze/helper/simple_captcha.rb +22 -0
  489. data/spec/ramaze/helper/stack.rb +73 -0
  490. data/spec/ramaze/helper/user.rb +43 -0
  491. data/spec/ramaze/helper/view/locals.xhtml +1 -0
  492. data/spec/ramaze/helper/view/loop.xhtml +4 -0
  493. data/spec/ramaze/helper/view/num.xhtml +1 -0
  494. data/spec/ramaze/helper/view/partial.xhtml +1 -0
  495. data/spec/ramaze/helper/view/recursive.xhtml +8 -0
  496. data/spec/ramaze/helper/view/recursive_local_ivars.xhtml +7 -0
  497. data/spec/ramaze/helper/view/recursive_locals.xhtml +7 -0
  498. data/spec/ramaze/helper/view/test_template.xhtml +1 -0
  499. data/spec/ramaze/localize.rb +89 -0
  500. data/spec/ramaze/log/informer.rb +72 -0
  501. data/spec/ramaze/log/syslog.rb +73 -0
  502. data/spec/ramaze/morpher.rb +111 -0
  503. data/spec/ramaze/params.rb +157 -0
  504. data/spec/ramaze/public/error404.xhtml +1 -0
  505. data/spec/ramaze/public/favicon.ico +0 -0
  506. data/spec/ramaze/public/ramaze.png +0 -0
  507. data/spec/ramaze/public/test_download.css +141 -0
  508. data/spec/ramaze/request/ebb.rb +9 -0
  509. data/spec/ramaze/request/mongrel.rb +9 -0
  510. data/spec/ramaze/request/thin.rb +9 -0
  511. data/spec/ramaze/request/webrick.rb +5 -0
  512. data/spec/ramaze/request.rb +185 -0
  513. data/spec/ramaze/rewrite/file.css +1 -0
  514. data/spec/ramaze/rewrite.rb +36 -0
  515. data/spec/ramaze/route.rb +131 -0
  516. data/spec/ramaze/session.rb +94 -0
  517. data/spec/ramaze/store/default.rb +71 -0
  518. data/spec/ramaze/struct.rb +47 -0
  519. data/spec/ramaze/template/amrita2/external.amrita +6 -0
  520. data/spec/ramaze/template/amrita2/sum.amrita +1 -0
  521. data/spec/ramaze/template/amrita2.rb +50 -0
  522. data/spec/ramaze/template/builder/external.rxml +3 -0
  523. data/spec/ramaze/template/builder.rb +51 -0
  524. data/spec/ramaze/template/erubis/sum.rhtml +1 -0
  525. data/spec/ramaze/template/erubis.rb +41 -0
  526. data/spec/ramaze/template/ezamar/another/long/action.zmr +1 -0
  527. data/spec/ramaze/template/ezamar/combined.zmr +1 -0
  528. data/spec/ramaze/template/ezamar/file_only.zmr +1 -0
  529. data/spec/ramaze/template/ezamar/index.zmr +1 -0
  530. data/spec/ramaze/template/ezamar/nested.zmr +1 -0
  531. data/spec/ramaze/template/ezamar/other__index.xhtml +1 -0
  532. data/spec/ramaze/template/ezamar/some__long__action.zmr +1 -0
  533. data/spec/ramaze/template/ezamar/sum.zmr +1 -0
  534. data/spec/ramaze/template/ezamar.rb +63 -0
  535. data/spec/ramaze/template/haml/index.haml +5 -0
  536. data/spec/ramaze/template/haml/locals.haml +2 -0
  537. data/spec/ramaze/template/haml/with_vars.haml +4 -0
  538. data/spec/ramaze/template/haml.rb +66 -0
  539. data/spec/ramaze/template/liquid/index.liquid +1 -0
  540. data/spec/ramaze/template/liquid/products.liquid +45 -0
  541. data/spec/ramaze/template/liquid.rb +99 -0
  542. data/spec/ramaze/template/markaby/external.mab +8 -0
  543. data/spec/ramaze/template/markaby/sum.mab +1 -0
  544. data/spec/ramaze/template/markaby.rb +61 -0
  545. data/spec/ramaze/template/nagoro/another/long/action.nag +1 -0
  546. data/spec/ramaze/template/nagoro/combined.nag +1 -0
  547. data/spec/ramaze/template/nagoro/file_only.nag +1 -0
  548. data/spec/ramaze/template/nagoro/index.nag +1 -0
  549. data/spec/ramaze/template/nagoro/nested.nag +1 -0
  550. data/spec/ramaze/template/nagoro/some__long__action.nag +1 -0
  551. data/spec/ramaze/template/nagoro/sum.nag +1 -0
  552. data/spec/ramaze/template/nagoro.rb +64 -0
  553. data/spec/ramaze/template/ramaze/external.test +1 -0
  554. data/spec/ramaze/template/redcloth/external.redcloth +1 -0
  555. data/spec/ramaze/template/redcloth.rb +38 -0
  556. data/spec/ramaze/template/remarkably/external.rem +8 -0
  557. data/spec/ramaze/template/remarkably/sum.rem +1 -0
  558. data/spec/ramaze/template/remarkably.rb +58 -0
  559. data/spec/ramaze/template/sass/file.css.sass +5 -0
  560. data/spec/ramaze/template/sass.rb +69 -0
  561. data/spec/ramaze/template/tagz/external.tagz +8 -0
  562. data/spec/ramaze/template/tagz/sum.tagz +1 -0
  563. data/spec/ramaze/template/tagz.rb +62 -0
  564. data/spec/ramaze/template/tenjin/external.tenjin +1 -0
  565. data/spec/ramaze/template/tenjin.rb +47 -0
  566. data/spec/ramaze/template/xslt/concat_words.xsl +16 -0
  567. data/spec/ramaze/template/xslt/index.xsl +14 -0
  568. data/spec/ramaze/template/xslt/products.xsl +32 -0
  569. data/spec/ramaze/template/xslt/ruby_version.xsl +14 -0
  570. data/spec/ramaze/template/xslt.rb +90 -0
  571. data/spec/ramaze/template.rb +128 -0
  572. data/spec/snippets/array/put_within.rb +33 -0
  573. data/spec/snippets/binding/locals.rb +9 -0
  574. data/spec/snippets/divide.rb +19 -0
  575. data/spec/snippets/kernel/constant.rb +23 -0
  576. data/spec/snippets/numeric/filesize_format.rb +12 -0
  577. data/spec/snippets/numeric/time.rb +12 -0
  578. data/spec/snippets/object/__dir__.rb +8 -0
  579. data/spec/snippets/object/acquire.rb +71 -0
  580. data/spec/snippets/ordered_set.rb +63 -0
  581. data/spec/snippets/ramaze/caller_info.rb +39 -0
  582. data/spec/snippets/ramaze/caller_lines.rb +30 -0
  583. data/spec/snippets/string/camel_case.rb +25 -0
  584. data/spec/snippets/string/color.rb +11 -0
  585. data/spec/snippets/string/snake_case.rb +24 -0
  586. data/spec/snippets/string/unindent.rb +43 -0
  587. data/spec/snippets/thread/into.rb +20 -0
  588. metadata +823 -0
@@ -0,0 +1,87 @@
1
+ require 'spec/helper'
2
+
3
+ class TCActionCache < Ramaze::Controller
4
+ map '/'
5
+ helper :cache
6
+
7
+ def index
8
+ rand
9
+ end
10
+ cache :index
11
+ end
12
+
13
+ class TCOtherCache < Ramaze::Controller
14
+ map '/other'
15
+ helper :cache
16
+
17
+ def foo
18
+ rand
19
+ end
20
+ cache :foo
21
+
22
+ def query
23
+ @foo = request['foo']
24
+ '#{rand} #{@foo}'
25
+ end
26
+ cache :query, :key => lambda{ request['foo'] }
27
+
28
+ def set_flash
29
+ flash[:message] = "This is a random flash message: #{rand}"
30
+ end
31
+
32
+ def use_flash
33
+ '#{rand} - Flash message: #{flash[:message]}'
34
+ end
35
+ cache :use_flash
36
+ end
37
+
38
+ describe 'Action rendering' do
39
+ behaves_like 'http', 'browser'
40
+ ramaze :adapter => :webrick
41
+
42
+ def req(path)
43
+ r = get(path)
44
+ [ r.content_type, r.body ]
45
+ end
46
+
47
+ should 'cache /' do
48
+ lambda{ req('/') }.should.not.change{ req('/') }
49
+ end
50
+
51
+ should 'cache /other/foo' do
52
+ lambda{ req('/other/foo') }.should.not.change{ req('/other/foo') }
53
+ end
54
+
55
+ should 'respect custom cache key' do
56
+ get('/other/query', {:foo => 1}).body.should == get('/other/query', {:foo => 1}).body
57
+ get('/other/query', {:foo => 1}).body.should.not == get('/other/query', {:foo => 2}).body
58
+ end
59
+
60
+ should 'not cache when flash data exists and no_cache_flash is on' do
61
+ Ramaze::Global.no_cache_flash = true
62
+ b = Browser.new
63
+
64
+ # If there's no flash data, caching should operate.
65
+ b.get('/other/use_flash').should == b.get('/other/use_flash')
66
+
67
+ # When flash data exists, should ignore cache and generate fresh response.
68
+ prev = b.get('/other/use_flash')
69
+ b.get('/other/set_flash')
70
+ b.get('/other/use_flash').should.not == prev
71
+ # On next request, flash data should be gone, so get cached response.
72
+ b.get('/other/use_flash').should == prev
73
+ end
74
+
75
+ should 'always cache if no_cache_flash is off' do
76
+ Ramaze::Global.no_cache_flash = false
77
+ b = Browser.new
78
+
79
+ b.get('/other/use_flash').should == b.get('/other/use_flash')
80
+
81
+ # When flash data exists, should still cache.
82
+ prev = b.get('/other/use_flash')
83
+ b.get('/other/set_flash')
84
+ b.get('/other/use_flash').should == prev
85
+ end
86
+
87
+ end
@@ -0,0 +1,70 @@
1
+ require 'spec/helper'
2
+
3
+ # Tests the file_cache facility that saves rendered content to files in
4
+ # /public and hence serves up the static files for subsequent requests.
5
+ class TCActionCache < Ramaze::Controller
6
+ map '/'
7
+ helper :cache
8
+
9
+ def index
10
+ rand
11
+ end
12
+ cache :index
13
+ end
14
+
15
+ class TCOtherCache < Ramaze::Controller
16
+ map '/other'
17
+ helper :cache
18
+
19
+ def index
20
+ rand
21
+ end
22
+ cache :index
23
+ end
24
+
25
+ class TCIndexCache < Ramaze::Controller
26
+ map '/withparams'
27
+ helper :cache
28
+
29
+ def index(somearg = nil)
30
+ rand + somearg.to_f
31
+ end
32
+ alias :nonindex :index
33
+
34
+ cache :index, :nonindex
35
+ end
36
+
37
+ describe 'Action rendering' do
38
+ behaves_like 'http'
39
+
40
+ FileUtils.mkdir_p(public_root = __DIR__/:public)
41
+
42
+ ramaze :file_cache => true, :public_root => public_root
43
+
44
+ def req(path)
45
+ r = get(path)
46
+ [ r.content_type, r.body ]
47
+ end
48
+
49
+ should 'cache to file' do
50
+ lambda{ req('/') }.should.not.change{ req('/') }
51
+ File.file?(public_root/'index').should == true
52
+ end
53
+
54
+ should 'create subdirs as needed' do
55
+ lambda{ req('/other') }.should.not.change{ req('/other') }
56
+ File.file?(public_root/'other/index').should == true
57
+ end
58
+
59
+ should 'cache action with params' do
60
+ lambda{ req('/withparams/nonindex/42') }.should.not.change{ req('/withparams/nonindex/42') }
61
+ File.file?(public_root/'withparams/nonindex/42').should == true
62
+ end
63
+
64
+ should 'cache index action with params' do
65
+ lambda{ req('/withparams/42') }.should.not.change{ req('/withparams/42') }
66
+ File.file?(public_root/'withparams/42').should == true
67
+ end
68
+
69
+ FileUtils.rm_rf public_root
70
+ end
@@ -0,0 +1,190 @@
1
+ require 'spec/helper'
2
+
3
+ class TCActionLayout < Ramaze::Controller
4
+ map '/'
5
+ layout '/wrapper'
6
+
7
+ def wrapper
8
+ "<pre>#@content</pre>"
9
+ end
10
+
11
+ def index
12
+ 'Hello, World!'
13
+ end
14
+
15
+ def foo
16
+ "bar"
17
+ end
18
+ end
19
+
20
+ class TCActionOtherLayout < Ramaze::Controller
21
+ map '/other'
22
+ layout '/other_wrapper'
23
+ view_root __DIR__/:view
24
+
25
+ def index
26
+ "Others Hello"
27
+ end
28
+ end
29
+
30
+ class TCActionSingleLayout < Ramaze::Controller
31
+ map '/single'
32
+ layout '/single_wrapper' => :index
33
+
34
+ def index
35
+ "Single Hello"
36
+ end
37
+
38
+ def without
39
+ "Without wrapper"
40
+ end
41
+ end
42
+
43
+ class TCActionDenyLayout < Ramaze::Controller
44
+ map '/deny'
45
+ layout '/single_wrapper'
46
+ deny_layout :without
47
+
48
+ def index
49
+ "Single Hello"
50
+ end
51
+
52
+ def without
53
+ "Without wrapper"
54
+ end
55
+ end
56
+
57
+ class TCActionMultiLayout < Ramaze::Controller
58
+ map '/multi'
59
+ layout '/single_wrapper' => [:index, :second]
60
+
61
+ def index
62
+ "Single Hello"
63
+ end
64
+
65
+ def second
66
+ "Second with layout"
67
+ end
68
+
69
+ def without
70
+ "Without wrapper"
71
+ end
72
+ end
73
+
74
+ class TCActionSubLayout < Ramaze::Controller
75
+ map '/sub'
76
+ layout :sub_wrapper
77
+
78
+ def index
79
+ "Sub Hello"
80
+ end
81
+ end
82
+
83
+ class TCReUseActionLayout < Ramaze::Controller
84
+ map '/reuse'
85
+ layout '/wrapper'
86
+
87
+ def index
88
+ 'hi'
89
+ end
90
+
91
+ def other_layout
92
+ "#@title: #@content"
93
+ end
94
+ end
95
+
96
+ class TCLayoutInstance < Ramaze::Controller
97
+ map '/reuse_instance'
98
+ layout '/reuse/other_layout'
99
+
100
+ def index
101
+ @title = 'hello'
102
+ 'world'
103
+ end
104
+ end
105
+
106
+ class TCLayoutInstanceVars < Ramaze::Controller
107
+ map '/instancevars'
108
+ layout :layout
109
+
110
+ def layout
111
+ @title = "layout"
112
+ end
113
+
114
+ def test
115
+ 'test'
116
+ end
117
+ end
118
+
119
+ class TCActionTwoLevelLayout < Ramaze::Controller
120
+ map '/twolevel'
121
+ layout :wrapper
122
+ layout :wrapper2 => [:foo]
123
+
124
+ def wrapper
125
+ "<pre>#@content</pre>"
126
+ end
127
+
128
+ def wrapper2
129
+ "<code>#@content</code>"
130
+ end
131
+
132
+ def index
133
+ 'Hello, World!'
134
+ end
135
+
136
+ def foo
137
+ "bar"
138
+ end
139
+ end
140
+
141
+ describe 'Action rendering' do
142
+ behaves_like 'http'
143
+ ramaze :view_root => __DIR__/:view
144
+
145
+ it 'should work with layouts' do
146
+ get('/').body.should == "<pre>Hello, World!</pre>"
147
+ get('/foo').body.should == "<pre>bar</pre>"
148
+ get('/bar').body.should == "<pre>Hello from bar</pre>"
149
+ end
150
+
151
+ it 'should work with layout from file' do
152
+ get('/other').body.should == "<p>Others Hello</p>"
153
+ get('/other/bar').body.should == "<p>Hello from bar</p>"
154
+ end
155
+
156
+ it 'should apply single layout' do
157
+ get('/single').body.should == "<b>Single Hello</b>"
158
+ get('/single/without').body.should == "Without wrapper"
159
+ end
160
+
161
+ it 'should deny a single action' do
162
+ get('/deny').body.should == "<b>Single Hello</b>"
163
+ get('/deny/without').body.should == "Without wrapper"
164
+ end
165
+
166
+ it 'should apply layout to a list of actions' do
167
+ get('/multi').body.should == "<b>Single Hello</b>"
168
+ get('/multi/second').body.should == "<b>Second with layout</b>"
169
+ get('/multi/without').body.should == "Without wrapper"
170
+ end
171
+
172
+ it 'should apply relative layouts' do
173
+ get('/sub').body.should == "<h1>SubWrapper</h1>"
174
+ end
175
+
176
+ it 'should use instance vars defined in the layout action in external templates' do
177
+ get('/instancevars/test').body.should == 'layout: test'
178
+ end
179
+
180
+ it 'should allow re-using layouts from other controllers' do
181
+ get('/reuse').body.should == "<pre>hi</pre>"
182
+ get('/reuse_instance').body.should == "hello: world"
183
+ end
184
+
185
+ it 'should be able to override :all' do
186
+ get('/twolevel/index').body.should == '<pre>Hello, World!</pre>'
187
+ get('/twolevel/foo').body.should == '<code>bar</code>'
188
+ end
189
+
190
+ end
@@ -0,0 +1,31 @@
1
+ require 'spec/helper'
2
+
3
+ class TCActionOne < Ramaze::Controller
4
+ map '/'
5
+
6
+ def index
7
+ 'Hello, World!'
8
+ end
9
+
10
+ def foo
11
+ Ramaze::Action(:controller => self.class, :method => :bar).render
12
+ end
13
+
14
+ def bar
15
+ "yo from bar"
16
+ end
17
+ end
18
+
19
+ describe 'Action rendering' do
20
+ behaves_like "http"
21
+ ramaze
22
+
23
+ it 'should render' do
24
+ action = Ramaze::Action(:method => :index, :controller => TCActionOne)
25
+ action.render.should == 'Hello, World!'
26
+ end
27
+
28
+ it 'should render inside the controller' do
29
+ get('/foo').body.should == 'yo from bar'
30
+ end
31
+ end
@@ -0,0 +1 @@
1
+ Hello from bar
@@ -0,0 +1 @@
1
+ #@title: #@content
@@ -0,0 +1 @@
1
+ <p>#@content</p>
@@ -0,0 +1 @@
1
+ <b>#@content</b>
@@ -0,0 +1 @@
1
+ <h1>SubWrapper</h1>
@@ -0,0 +1,12 @@
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.
3
+
4
+ require 'spec/helper'
5
+
6
+ spec_require 'ebb'
7
+
8
+ def ramaze_options
9
+ { :adapter => :ebb }
10
+ end
11
+
12
+ require 'spec/ramaze/adapter'
@@ -0,0 +1,12 @@
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.
3
+
4
+ require 'spec/helper'
5
+
6
+ spec_require 'mongrel'
7
+
8
+ def ramaze_options
9
+ { :adapter => :mongrel }
10
+ end
11
+
12
+ require 'spec/ramaze/adapter'
@@ -0,0 +1,31 @@
1
+ require 'spec/helper'
2
+
3
+ class TCRecordController < Ramaze::Controller
4
+ map '/'
5
+
6
+ def index
7
+ 'The index'
8
+ end
9
+
10
+ def foo
11
+ 'The foo'
12
+ end
13
+ end
14
+
15
+ describe 'Adapter recording' do
16
+ behaves_like 'http'
17
+
18
+ ramaze :adapter => :webrick, :record => lambda{|request|
19
+ request.remote_addr == '127.0.0.1'
20
+ }
21
+
22
+ @record = Ramaze::Record
23
+
24
+ it 'should record' do
25
+ get('/').body.should == 'The index'
26
+ get('/foo').body.should == 'The foo'
27
+ @record.size.should == 2
28
+ @record.first.path_info.should == '/'
29
+ @record.last.path_info.should == '/foo'
30
+ end
31
+ end
@@ -0,0 +1,12 @@
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.
3
+
4
+ require 'spec/helper'
5
+
6
+ spec_require 'webrick'
7
+
8
+ def ramaze_options
9
+ { :adapter => :webrick }
10
+ end
11
+
12
+ require 'spec/ramaze/adapter'
@@ -0,0 +1,49 @@
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.
3
+
4
+ require 'spec/helper'
5
+
6
+ class TCAdapterController < Ramaze::Controller
7
+ map '/'
8
+
9
+ def index
10
+ "The index"
11
+ end
12
+ end
13
+
14
+ $output = StringIO.new
15
+ Ramaze::Log.loggers << Ramaze::Logger::Informer.new($output)
16
+
17
+ describe "Adapter" do
18
+ ramaze ramaze_options ||= {}
19
+ behaves_like "http"
20
+
21
+ it 'should do a simple request' do
22
+ get('/').body.should == 'The index'
23
+ end
24
+
25
+ it 'should measure request processing time' do
26
+ Ramaze::Global.benchmarking = true
27
+ $output.string = ""
28
+ get('/')
29
+ $output.string.should =~ /request took/
30
+ Ramaze::Global.benchmarking = false
31
+ end
32
+
33
+ it 'should not measure request processing time' do
34
+ Ramaze::Global.benchmarking = false
35
+ $output.string = ""
36
+ get('/')
37
+ $output.string.should.not =~ /request took/
38
+ end
39
+
40
+ it 'should allow using an Adapter.before block' do
41
+ Ramaze::Adapter.before do |env|
42
+ [ 200, {'Content-Type'=>'text/plain'}, 'i am before' ]
43
+ end
44
+
45
+ ret = get('/')
46
+ ret.status.should == 200
47
+ ret.body.should == 'i am before'
48
+ end
49
+ end
@@ -0,0 +1,140 @@
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.
3
+
4
+ require 'spec/helper'
5
+
6
+ caches = {:memory => 'Hash', :yaml => 'Ramaze::YAMLStoreCache'}
7
+
8
+ begin
9
+ require 'memcache'
10
+ caches[:memcached] = 'Ramaze::MemcachedCache'
11
+ rescue LoadError
12
+ puts "skipping memcached"
13
+ end
14
+
15
+ caches.each do |cache, name|
16
+ describe "#{name} setup" do
17
+ should 'be assignable to Global' do
18
+ Ramaze::Global.cache = cache
19
+ Ramaze::Global.cache.to_s.should == name
20
+ end
21
+
22
+ should 'do .new' do
23
+ @cache = Ramaze::Global.cache.new
24
+ @cache.class.name.should == name
25
+ end
26
+ end
27
+
28
+ describe "#{name} modification" do
29
+ before do
30
+ Ramaze::Global.cache = cache
31
+ @cache = Ramaze::Global.cache.new
32
+ end
33
+
34
+ after do
35
+ @cache.clear
36
+ end
37
+
38
+ should 'be assignable with #[]=' do
39
+ @cache[:foo] = :bar
40
+ @cache[:foo].should == :bar
41
+ end
42
+
43
+ should 'be retrievable with #[]' do
44
+ @cache[:yoh] = :bar
45
+ @cache[:yoh].should == :bar
46
+ end
47
+
48
+ should 'delete keys' do
49
+ @cache[:bar] = :duh
50
+ @cache.delete(:bar)
51
+ @cache[:bar].should == nil
52
+ end
53
+
54
+ should 'show values for multiple keys' do
55
+ @cache[:baz] = :foo
56
+ @cache[:beh] = :feh
57
+ @cache.values_at(:baz, :beh).should == [:foo, :feh]
58
+ end
59
+
60
+ FileUtils.rm(@cache.file) if cache == :yaml
61
+ end
62
+ end
63
+
64
+ describe "Cache wrapper" do
65
+ before do
66
+ @cache = Ramaze::Cache.new(Hash)
67
+ end
68
+
69
+ after do
70
+ @cache.clear
71
+ end
72
+
73
+ should 'be assignable with #[]= and retrievable with #[]' do
74
+ @cache[:foo] = :bar
75
+ @cache[:foo].should == :bar
76
+ end
77
+
78
+ should 'return nil if key not found' do
79
+ @cache[:baz].should == nil
80
+ end
81
+
82
+ should 'be assignable with #store and retrievable with #fetch' do
83
+ @cache.store(:foo, :bar)
84
+ @cache.fetch(:foo).should == :bar
85
+ end
86
+
87
+ should 'return default value if key not found' do
88
+ @cache.fetch(:monkeys, :default).should == :default
89
+ end
90
+
91
+ should 'be assignable with #set and retrievable with #get' do
92
+ @cache.set(:ninjas, :totally_sweet)
93
+ @cache.get(:ninjas).should == :totally_sweet
94
+ end
95
+
96
+ should 'expire key after ttl' do
97
+ @cache[:cow].should == nil
98
+ @cache.store(:cow, :moo, :ttl => 1)
99
+ @cache[:cow].should == :moo
100
+ sleep(1.1)
101
+ @cache[:cow].should == nil
102
+ end
103
+
104
+ should 'accept an int as the ttl parameter for #store' do
105
+ @cache[:cow].should == nil
106
+ @cache.store(:cow, :moo, 1)
107
+ @cache[:cow].should == :moo
108
+ end
109
+
110
+ should 'delete keys' do
111
+ @cache[:abc] = :cba
112
+ @cache[:def] = :fed
113
+ @cache.delete(:abc, :def)
114
+ @cache[:abc].should == nil
115
+ @cache[:def].should == nil
116
+ end
117
+
118
+ should 'show values for multiple keys' do
119
+ @cache[:baz] = :foo
120
+ @cache[:beh] = :feh
121
+ @cache.values_at(:baz, :beh).should == [:foo, :feh]
122
+ end
123
+
124
+ should 'clear' do
125
+ @cache[:moo] = :cow
126
+ @cache.clear
127
+ @cache[:moo].should == nil
128
+ end
129
+
130
+ should 'not allow different cache namespaces to overlap' do
131
+ Ramaze::Cache.add :foo
132
+ Ramaze::Cache.add :bar
133
+
134
+ key = "foobar"
135
+ Ramaze::Cache.foo[key] = 'foo'
136
+ Ramaze::Cache.bar[key] = 'bar'
137
+
138
+ Ramaze::Cache.foo[key].should.not == Ramaze::Cache.bar[key]
139
+ end
140
+ end
@@ -0,0 +1,32 @@
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.
3
+
4
+ require 'spec/helper'
5
+
6
+ class MainController < Ramaze::Controller
7
+ template :non_existant_method, :list
8
+ end
9
+
10
+ class TCActionOtherLayout < Ramaze::Controller
11
+ map '/other'
12
+ layout '/other_wrapper'
13
+
14
+ def index
15
+ "Others Hello"
16
+ end
17
+ end
18
+
19
+ describe "Testing Actionless Templates" do
20
+ behaves_like 'http'
21
+ ramaze :actionless_templates => false,
22
+ :view_root => __DIR__/:view, :error_page => true
23
+
24
+ it "should not find template file for non existant method" do
25
+ get('/non_existant_method').status.should == 404
26
+ get('/non_existant_method2').status.should == 404
27
+ end
28
+
29
+ it "should render layout(without method) for normal action" do
30
+ get('/other/index').body.should == '<p>Others Hello</p>'
31
+ end
32
+ end