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,185 @@
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 TCRequestController < Ramaze::Controller
7
+ map '/'
8
+ engine :None
9
+
10
+ def is_post() request.post?.to_s end
11
+ def is_get() request.get?.to_s end
12
+ def is_put() request.put?.to_s end
13
+ def is_delete() request.delete?.to_s end
14
+
15
+ def request_inspect
16
+ request.params.inspect
17
+ end
18
+
19
+ def post_inspect
20
+ request.params.inspect
21
+ end
22
+
23
+ def put_inspect(file)
24
+ # referencing request.rack_params breaks this test
25
+ # request.params is hacked to return {} on PUT requests
26
+ request.params
27
+ request.body.read
28
+ end
29
+
30
+ def get_inspect
31
+ request.params.inspect
32
+ end
33
+
34
+ def test_get
35
+ request['foo']
36
+ end
37
+
38
+ def test_post
39
+ request.params.inspect
40
+ end
41
+
42
+ def test_headers
43
+ end
44
+
45
+ def my_ip
46
+ request.remote_addr
47
+ end
48
+
49
+ def to_ivs
50
+ request.to_ivs :foo, :bar
51
+ instance_variables.sort.map{|iv|
52
+ [ iv.to_s, instance_variable_get(iv) ].join(' => ')
53
+ }.join(', ')
54
+ end
55
+ end
56
+
57
+ options = ramaze_options rescue {}
58
+
59
+ describe "Request" do
60
+ behaves_like 'http'
61
+ ramaze options.merge(:public_root => 'spec/ramaze/public')
62
+
63
+ Request = Ramaze::Request
64
+
65
+ it 'to_ivs' do
66
+ got = get('/to_ivs', 'foo' => 'a')
67
+ got.body.should == '@foo => a'
68
+ got = get('/to_ivs', 'bar' => 'b', 'foo' => 'c')
69
+ got.body.should == '@bar => b, @foo => c'
70
+ end
71
+
72
+ should 'show locales' do
73
+ r = Request.new('HTTP_ACCEPT_LANGUAGE' => 'en-ca,en-us;q=1,en;q=0.6')
74
+ r.locales.should == %w[en-ca en-us en]
75
+ end
76
+
77
+ describe "POST" do
78
+ behaves_like 'http'
79
+
80
+ it "give me the result of request.post?" do
81
+ post("/is_post").body.should == 'true'
82
+ end
83
+
84
+ it "give me the result of request.get?" do
85
+ post("/is_get").body.should == 'false'
86
+ end
87
+
88
+ # this here has shown some odd errors... keep an eye on it.
89
+ it "give me back what i gave" do
90
+ post("/post_inspect", 'this' => 'post').body.should == {"this" => "post"}.inspect
91
+ end
92
+
93
+ should "handle key[nested_key]" do
94
+ get('/test_get', 'foo' => 'bar').body.should == 'bar'
95
+ params = {'foo' => 'null', 'bar[1]' => 'eins', 'bar[7]' => 'sieben'}
96
+
97
+ eval(post('/test_post', params).body).should ==
98
+ {'foo' => 'null', 'bar' => {'1' => 'eins', '7' => 'sieben'}}
99
+ end
100
+
101
+ should 'handle key[nested_key][nested_nested_key]' do
102
+ eval(post('/test_post', 'foo[1][2]' => 'eins zwei').body).should ==
103
+ {'foo' => {'1' => {'2' => 'eins zwei'}}}
104
+ end
105
+
106
+ should 'handle key&key[nested]' do
107
+ eval(post('/test_post', 'a' => 'b', 'a[c]' => 'd').body).should ==
108
+ {'a' => {'c' => 'd'}}
109
+ end
110
+ end
111
+
112
+ describe "PUT" do
113
+ behaves_like 'http'
114
+
115
+ it "put a resource" do
116
+ image = 'favicon.ico'
117
+ image_path = File.join('spec', 'ramaze', 'public', image)
118
+ address = "/put_inspect/#{image}"
119
+
120
+ if RUBY_VERSION >= '1.9.0'
121
+ file = File.open(image_path, 'r:ASCII'){|f| f.read}
122
+ else
123
+ file = File.read(image_path)
124
+ end
125
+
126
+ response = put(address, :input => file)
127
+ response.body.dump.should == file.dump
128
+ end
129
+ end
130
+
131
+ describe "DELETE" do
132
+ behaves_like 'http'
133
+
134
+ it "delete a resource" do
135
+ delete('/is_delete').body.should == 'true'
136
+ end
137
+ end
138
+
139
+ describe "GET" do
140
+ behaves_like 'http'
141
+
142
+ it "give me the result of request.post?" do
143
+ get("/is_post").body.should == 'false'
144
+ end
145
+
146
+ it "give me the result of request.get?" do
147
+ get("/is_get").body.should == 'true'
148
+ end
149
+
150
+ it "give me back what i gave" do
151
+ params = {'one' => 'two', 'three' => 'four'}
152
+ get("/get_inspect", params).body.should == params.inspect
153
+ end
154
+
155
+ it "my ip" do
156
+ get("/my_ip").body.should == '127.0.0.1'
157
+ end
158
+ end
159
+
160
+ describe "get files" do
161
+ behaves_like 'http'
162
+
163
+ it "binary" do
164
+ image_path = '/favicon.ico'
165
+ if RUBY_VERSION >= '1.9.0'
166
+ static_image = File.open("spec/ramaze/public#{image_path}", 'r:ASCII'){|f| f.read}
167
+ else
168
+ static_image = File.read("spec/ramaze/public#{image_path}")
169
+ end
170
+
171
+ response = get(image_path)
172
+ response.status.should == 200
173
+ response.body.should == static_image
174
+ end
175
+
176
+ it 'plain test' do
177
+ css_path = '/test_download.css'
178
+ static_css = File.read("spec/ramaze/public#{css_path}").strip
179
+
180
+ response = get(css_path)
181
+ response.status.should == 200
182
+ response.body.strip.should == static_css
183
+ end
184
+ end
185
+ end
@@ -0,0 +1 @@
1
+ this is css
@@ -0,0 +1,36 @@
1
+ require 'spec/helper'
2
+
3
+ class MainController < Ramaze::Controller
4
+ def index
5
+ 'hello'
6
+ end
7
+
8
+ def test
9
+ 'test'
10
+ end
11
+ end
12
+
13
+ describe 'Route' do
14
+ behaves_like 'http'
15
+ ramaze :public_root => __DIR__/:rewrite
16
+
17
+ Ramaze::Rewrite[%r|^/index.php(.*)$|] = "%s"
18
+
19
+ it 'should work with the index action' do
20
+ r = get('/index.php')
21
+ [ r.status, r.body ].should == [ 200, 'hello' ]
22
+
23
+ r = get('/index.php/')
24
+ [ r.status, r.body ].should == [ 200, 'hello' ]
25
+ end
26
+
27
+ it 'should work with other actions' do
28
+ r = get('/index.php/test')
29
+ [ r.status, r.body ].should == [ 200, 'test' ]
30
+ end
31
+
32
+ it 'should rewrite urls for files' do
33
+ r = get('/index.php/file.css')
34
+ [ r.status, r.body ].should == [ 200, 'this is css' ]
35
+ end
36
+ end
@@ -0,0 +1,131 @@
1
+ require 'spec/helper'
2
+
3
+ class MainController < Ramaze::Controller
4
+ def float(flt)
5
+ "Float: #{flt}"
6
+ end
7
+
8
+ def string(str)
9
+ "String: #{str}"
10
+ end
11
+
12
+ def price(p)
13
+ "Price: \$#{p}"
14
+ end
15
+
16
+ def sum(a, b)
17
+ a.to_i + b.to_i
18
+ end
19
+
20
+ def bar
21
+ 'this is bar'
22
+ end
23
+ end
24
+
25
+ describe 'Route' do
26
+ behaves_like 'http'
27
+ ramaze
28
+ @route = Ramaze::Route
29
+
30
+ it 'should take custom lambda routers' do
31
+ @route['string'] = lambda {|path, req| path if path =~ %r!^/string! }
32
+ @route['string'].class.should == Proc
33
+
34
+ @route['calc sum'] = lambda do |path, req|
35
+ if req[:do_calc]
36
+ lval, rval = req[:a, :b]
37
+ rval = rval.to_i * 10
38
+ "/sum/#{lval}/#{rval}"
39
+ end
40
+ end
41
+
42
+ Ramaze::Route('foo') do |path, req|
43
+ '/bar' if req[:bar]
44
+ end
45
+ end
46
+
47
+ it 'should be possible to define simple string routes' do
48
+ @route['/foobar'] = '/bar'
49
+ @route['/foobar'].should == '/bar'
50
+ end
51
+
52
+ it 'should be possible to define routes' do
53
+ @route[%r!^/(\d+\.\d{2})$!] = "/price/%.2f"
54
+ @route[%r!^/(\d+\.\d{2})$!].should == "/price/%.2f"
55
+
56
+ @route[%r!^/(\d+\.\d+)!] = "/float/%.3f"
57
+ @route[%r!^/(\d+\.\d+)!].should == "/float/%.3f"
58
+
59
+ @route[%r!^/(\w+)!] = "/string/%s"
60
+ @route[%r!^/(\w+)!].should == "/string/%s"
61
+ end
62
+
63
+ it 'should be used - /float' do
64
+ r = get('/123.123')
65
+ r.status.should == 200
66
+ r.body.should == 'Float: 123.123'
67
+ end
68
+
69
+ it 'should be used - /string' do
70
+ r = get('/foo')
71
+ r.status.should == 200
72
+ r.body.should == 'String: foo'
73
+ end
74
+
75
+ it 'should use %.3f' do
76
+ r = get('/123.123456')
77
+ r.status.should == 200
78
+ r.body.should == 'Float: 123.123'
79
+ end
80
+
81
+ it 'should resolve in the order added' do
82
+ r = get('/12.84')
83
+ r.status.should == 200
84
+ r.body.should == 'Price: $12.84'
85
+ end
86
+
87
+ it 'should use lambda routers' do
88
+ r = get('/string/abc')
89
+ r.status.should == 200
90
+ r.body.should == 'String: abc'
91
+
92
+ r = get('/', 'do_calc=1&a=2&b=6')
93
+ r.status.should == 200
94
+ r.body.should == '62'
95
+ end
96
+
97
+ it 'should support Route() with blocks' do
98
+ r = get('/foo', 'bar=1')
99
+ r.status.should == 200
100
+ r.body.should == 'this is bar'
101
+ end
102
+
103
+ it 'should support string route translations' do
104
+ r = get('/foobar')
105
+ r.status.should == 200
106
+ r.body.should == 'this is bar'
107
+ end
108
+
109
+ it 'should clear routes' do
110
+ Ramaze::Route.trait[:routes].size.should > 0
111
+ Ramaze::Route.clear
112
+ Ramaze::Route.trait[:routes].size.should == 0
113
+ end
114
+
115
+ it 'should exclude existing actions' do
116
+ Ramaze::Route[ %r!^/(.+)$! ] = "/string/%s"
117
+ r = get('/hello')
118
+ r.status.should == 200
119
+ r.body.should == 'String: hello'
120
+
121
+ r = get('/bar')
122
+ r.status.should == 200
123
+ r.body.should == 'this is bar'
124
+ end
125
+
126
+ it 'should not recurse given a bad route' do
127
+ Ramaze::Route[ %r!^/good/(.+)$! ] = "/bad/%s"
128
+ r = get('/good/hi')
129
+ r.status.should == 500
130
+ end
131
+ end
@@ -0,0 +1,94 @@
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 TCSessionController < Ramaze::Controller
7
+ map '/'
8
+
9
+ def index
10
+ session.inspect
11
+ end
12
+
13
+ def set_session key, val
14
+ session[key] = val
15
+ index
16
+ end
17
+
18
+ def post_set_session
19
+ session.merge! request.params
20
+ index
21
+ end
22
+
23
+ def test_set(n)
24
+ session[:n] = n
25
+ end
26
+
27
+ def test_result
28
+ session[:n]
29
+ end
30
+ end
31
+
32
+ describe "Session" do
33
+ behaves_like 'http', 'browser'
34
+ ramaze :adapter => :webrick
35
+
36
+ { :MemoryCache => :memory,
37
+ :YAMLStoreCache => :yaml_store,
38
+ :MemcachedCache => :memcached,
39
+ }.each do |cache, requirement|
40
+ begin
41
+ require "ramaze/cache/#{requirement}"
42
+ rescue LoadError => ex
43
+ puts ex
44
+ next
45
+ end
46
+
47
+ describe cache do
48
+
49
+ Ramaze::Global.cache = cache
50
+ Thread.main[:session_cache] = nil
51
+
52
+ b = Browser.new
53
+
54
+ it "Should give me an empty session" do
55
+ b.eget.should == {}
56
+ end
57
+
58
+ it "set some session-parameters" do
59
+ b.eget('/set_session/foo/bar').should == {'foo' => 'bar'}
60
+ end
61
+
62
+ it "inspect session again" do
63
+ b.eget('/').should == {'foo' => 'bar'}
64
+ end
65
+
66
+ it "change the session" do
67
+ b.eget('/set_session/foo/foobar')['foo'].should == 'foobar'
68
+ end
69
+
70
+ it "inspect the changed session" do
71
+ b.eget('/')['foo'].should == 'foobar'
72
+ end
73
+
74
+ it "now a little bit with POST" do
75
+ b.epost('/post_set_session', 'x' => 'y')['x'].should == 'y'
76
+ end
77
+
78
+ it "snooping a bit around" do
79
+ b.cookie.split('=').size.should == 3
80
+ end
81
+
82
+ it 'should not hit IP_COUNT_LIMIT for the same session/ip' do
83
+ class Ramaze::Session
84
+ remove_const :IP_COUNT_LIMIT
85
+ const_set(:IP_COUNT_LIMIT, 2)
86
+ end
87
+ (0..Ramaze::Session::IP_COUNT_LIMIT * 2).each do |n|
88
+ b.get("/test_set/#{n}")
89
+ b.get("/test_result").should == n.to_s
90
+ end
91
+ end
92
+ end
93
+ end
94
+ end
@@ -0,0 +1,71 @@
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
+ require 'ramaze/store/default'
6
+
7
+ describe "Store::Default" do
8
+ db = 'db.yaml'
9
+
10
+ after do
11
+ FileUtils.rm db
12
+ end
13
+
14
+ def add hash = {}
15
+ Books.merge!(hash)
16
+ end
17
+
18
+ it "should initialize Store::Default" do
19
+ Books = Ramaze::Store::Default.new(db)
20
+ Books.db.should.is_a?(YAML::Store)
21
+ end
22
+
23
+ it "should store and retrieve key/value" do
24
+ add 'Pickaxe' => 'good book'
25
+ Books['Pickaxe'].should == 'good book'
26
+ end
27
+
28
+ it "be empty after #clear" do
29
+ add 'Pickaxe' => 'good book'
30
+
31
+ Books.should.not.be.empty
32
+ Books.clear
33
+ Books.should.be.empty
34
+ end
35
+
36
+ it "should have right size" do
37
+ Books.size.should == 0
38
+
39
+ { 'Pickaxe' => 'good book',
40
+ '1984' => 'scary',
41
+ 'Brave new World' => 'interesting',
42
+ }.each_with_index do |(title, content), i|
43
+ add title => content
44
+ Books.size.should == i + 1
45
+ end
46
+ end
47
+
48
+ it "should be Enumerable" do
49
+ add 'Pickaxe' => 'good book', '1984' => 'scary'
50
+
51
+ Books.each do |title, content|
52
+ [title, content].compact.empty?.should == false
53
+ Books[title].should == content
54
+ end
55
+ end
56
+
57
+ it "should merge and merge!" do
58
+ books = {'Pickaxe' => 'good book', '1984' => 'scary'}
59
+ add books
60
+
61
+ bnw = {'Brave new World' => 'interesting'}
62
+
63
+ Books.merge(bnw).should == books.merge(bnw)
64
+ Books[bnw.keys.first].should == nil
65
+
66
+ Books.merge!(bnw).should == books.merge(bnw)
67
+ Books[bnw.keys.first].should == bnw.values.first
68
+
69
+ Books.size.should == 3
70
+ end
71
+ end
@@ -0,0 +1,47 @@
1
+ require 'spec/helper'
2
+
3
+ Point = Ramaze::Struct.new(:x,:y)
4
+
5
+ describe "Ramaze::Struct" do
6
+ describe '#values_at' do
7
+ @point = Point.new(1,2)
8
+
9
+ it "should access a single value" do
10
+ @point.values_at(:x).should == [1]
11
+ end
12
+
13
+ it "should access multiple values" do
14
+ @point.values_at(:x,:y).should == [1,2]
15
+ end
16
+
17
+ it "should access values regardless of order" do
18
+ @point.values_at(:y,:x).should == [2,1]
19
+ end
20
+
21
+ it "should get same value twice" do
22
+ @point.values_at(:x,:x).should == [1,1]
23
+ end
24
+
25
+ it "should raise on wrong value" do
26
+ should.raise(NameError){
27
+ @point.values_at(:k)
28
+ }
29
+ end
30
+
31
+ it "should work with strings" do
32
+ @point.values_at('x').should == [1]
33
+ end
34
+
35
+ it "should work with numbers (ruby compat)" do
36
+ @point.values_at(0).should == [1]
37
+ end
38
+
39
+ should 'work with ranges' do
40
+ @point.values_at(0..1).should == [1,2]
41
+ end
42
+
43
+ should 'work with multiple ranges' do
44
+ @point.values_at(0..1, 0..1).should == [1,2,1,2]
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,6 @@
1
+ <html>
2
+ <body>
3
+ <h1 am:src='title' />
4
+ <p am:src='body' />
5
+ </body>
6
+ </html>
@@ -0,0 +1 @@
1
+ <<:one>> + <<:two>> = <%= $_[:one] + $_[:two] %>
@@ -0,0 +1,50 @@
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 'amrita2'
7
+
8
+ class TCTemplateAmritaController < Ramaze::Controller
9
+ view_root __DIR__/:amrita2
10
+ engine :Amrita2
11
+
12
+ def internal
13
+ @data = { :hello => "hello world" }
14
+ "<h1 am:src='hello' />"
15
+ end
16
+
17
+ def external
18
+ @data = {
19
+ :title => "hello world",
20
+ :body => "Amrita2 is an HTML template library for Ruby"
21
+ }
22
+ end
23
+
24
+ def sum
25
+ @data = { :one => 1, :two => 2 }
26
+ end
27
+ end
28
+
29
+ describe "Simply calling" do
30
+ behaves_like 'http'
31
+ ramaze(:mapping => {'/' => TCTemplateAmritaController})
32
+
33
+ it "should respond to /internal" do
34
+ get('/internal').body.strip.should == "<h1>hello world</h1>"
35
+ end
36
+
37
+ it "should respond to /external" do
38
+ get('/external').body.strip.should ==
39
+ %{<html>
40
+ <body>
41
+ <h1>hello world</h1>
42
+ <p>Amrita2 is an HTML template library for Ruby</p>
43
+ </body>
44
+ </html>}
45
+ end
46
+
47
+ it "should respond to /sum" do
48
+ get('/sum').body.strip.should == "1 + 2 = 3"
49
+ end
50
+ end
@@ -0,0 +1,3 @@
1
+ @frameworks.each do |name, lang|
2
+ xml.framework {|f| f.name(name); f.language(lang) }
3
+ end
@@ -0,0 +1,51 @@
1
+ require 'spec/helper'
2
+
3
+ spec_require 'builder', 'hpricot'
4
+
5
+ FRAMEWORKS = {
6
+ 'ramaze' => 'ruby',
7
+ 'symfony' => 'php',
8
+ 'django' => 'python' }
9
+
10
+ class TCTemplateBuilder < Ramaze::Controller
11
+ view_root 'spec/ramaze/template/builder'
12
+ map '/'
13
+ engine :Builder
14
+
15
+ def external
16
+ @frameworks = FRAMEWORKS
17
+ end
18
+
19
+ def internal
20
+ external
21
+ %q[
22
+ @frameworks.each do |name, lang|
23
+ xml.framework {|f| f.name(name); f.language(lang) }
24
+ end
25
+ ]
26
+ end
27
+ end
28
+
29
+ describe "Builder" do
30
+ behaves_like 'http'
31
+ ramaze
32
+
33
+ def check(string)
34
+ doc = Hpricot(string)
35
+ got = (doc/:framework).map{|f|
36
+ [ f.at(:name).inner_text,
37
+ f.at(:language).inner_text ] }
38
+ Hash[*got.flatten].should == FRAMEWORKS
39
+ end
40
+
41
+ it "should render xml from files" do
42
+ r = get('/external')
43
+ r.status.should == 200
44
+ r.headers['Content-Type'].should == 'application/xml'
45
+ check(r.body)
46
+ end
47
+
48
+ it 'should render internal templates' do
49
+ check get('/internal').body
50
+ end
51
+ end
@@ -0,0 +1 @@
1
+ <%= @num1 + @num2 %>