ramaze 0.3.9.1 → 2023.01.06

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 (781) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +3 -0
  3. data/README.md +125 -0
  4. data/Rakefile +13 -186
  5. data/bin/ramaze +4 -149
  6. data/examples/app/auth/layout/auth.xhtml +25 -0
  7. data/examples/app/auth/start.rb +25 -0
  8. data/examples/app/auth/view/index.xhtml +4 -0
  9. data/examples/app/auth/view/login.xhtml +20 -0
  10. data/examples/app/auth/view/secret.xhtml +1 -0
  11. data/examples/app/blog/app.rb +23 -0
  12. data/examples/app/blog/config.ru +19 -0
  13. data/examples/app/blog/controller/init.rb +30 -0
  14. data/examples/app/blog/controller/posts.rb +223 -0
  15. data/examples/app/blog/controller/users.rb +152 -0
  16. data/examples/app/blog/layout/default.xhtml +61 -0
  17. data/examples/app/blog/migrations/01_create_schema.rb +50 -0
  18. data/examples/app/blog/model/comment.rb +42 -0
  19. data/examples/app/blog/model/init.rb +44 -0
  20. data/examples/app/blog/model/post.rb +33 -0
  21. data/examples/app/blog/model/user.rb +100 -0
  22. data/examples/app/blog/public/css/grid.css +107 -0
  23. data/examples/app/blog/public/css/layout.css +203 -0
  24. data/examples/app/blog/public/css/reset.css +123 -0
  25. data/examples/app/blog/public/css/text.css +109 -0
  26. data/examples/app/blog/public/dispatch.fcgi +11 -0
  27. data/examples/app/blog/public/favicon.ico +0 -0
  28. data/examples/app/blog/public/images/bg.png +0 -0
  29. data/examples/app/blog/start.rb +20 -0
  30. data/examples/app/blog/view/feed.xhtml +23 -0
  31. data/examples/app/blog/view/form.xhtml +11 -0
  32. data/examples/app/blog/view/index.xhtml +44 -0
  33. data/examples/app/blog/view/users/form.xhtml +12 -0
  34. data/examples/app/blog/view/users/index.xhtml +30 -0
  35. data/examples/app/blog/view/users/login.xhtml +8 -0
  36. data/examples/app/blog/view/view.xhtml +68 -0
  37. data/examples/app/chat/layout/default.xhtml +13 -0
  38. data/examples/app/chat/model/history.rb +38 -0
  39. data/examples/app/chat/model/message.rb +7 -0
  40. data/examples/app/chat/public/css/chat.css +9 -0
  41. data/examples/app/chat/public/js/chat.js +28 -0
  42. data/{lib/proto → examples/app/chat}/public/js/jquery.js +75 -15
  43. data/examples/app/chat/start.rb +39 -0
  44. data/examples/app/chat/view/chat.xhtml +9 -0
  45. data/examples/app/chat/view/index.xhtml +7 -0
  46. data/examples/app/localization/locale/de.yaml +5 -0
  47. data/examples/app/localization/locale/en.yaml +5 -0
  48. data/examples/app/localization/locale/ja.yaml +5 -0
  49. data/examples/app/localization/start.rb +48 -0
  50. data/examples/app/todolist/controller/init.rb +11 -0
  51. data/examples/app/todolist/controller/task.rb +39 -0
  52. data/examples/app/todolist/layout/default.xhtml +14 -0
  53. data/examples/app/todolist/model/init.rb +14 -0
  54. data/examples/app/todolist/model/task.rb +39 -0
  55. data/examples/app/todolist/public/css/screen.css +63 -0
  56. data/examples/app/todolist/start.rb +7 -0
  57. data/examples/app/todolist/view/index.xhtml +29 -0
  58. data/examples/{upload → app/upload}/start.rb +7 -3
  59. data/examples/app/whywiki/spec/whywiki.rb +56 -0
  60. data/examples/{whywiki → app/whywiki}/start.rb +10 -9
  61. data/examples/{whywiki/template → app/whywiki/view}/edit.xhtml +2 -2
  62. data/examples/app/whywiki/view/show.xhtml +20 -0
  63. data/examples/{wikore → app/wikore}/spec/wikore.rb +7 -9
  64. data/examples/{wikore → app/wikore}/src/controller.rb +9 -11
  65. data/examples/{wikore → app/wikore}/src/model.rb +11 -13
  66. data/examples/app/wikore/start.rb +9 -0
  67. data/examples/{wiktacular/template/html_layout.xhtml → app/wiktacular/layout/application.xhtml} +1 -1
  68. data/examples/{wiktacular → app/wiktacular}/mkd/main/2007-07-20_19-21-12.mkd +1 -1
  69. data/examples/app/wiktacular/mkd/main/2007-07-20_19-23-10.mkd +2 -0
  70. data/examples/app/wiktacular/mkd/main/2007-07-20_19-45-07.mkd +2 -0
  71. data/examples/app/wiktacular/mkd/main/current.mkd +2 -0
  72. data/examples/{wiktacular → app/wiktacular}/mkd/markdown/current.mkd +2 -2
  73. data/examples/app/wiktacular/mkd/testing/2007-07-20_16-43-46.mkd +2 -0
  74. data/examples/{wiktacular → app/wiktacular}/mkd/testing/2007-07-20_19-43-50.mkd +2 -2
  75. data/examples/{wiktacular → app/wiktacular}/mkd/testing/2007-07-21_18-46-01.mkd +11 -11
  76. data/examples/{wiktacular → app/wiktacular}/mkd/testing/2007-07-21_18-46-32.mkd +12 -12
  77. data/examples/{wiktacular → app/wiktacular}/mkd/testing/2007-07-21_18-47-08.mkd +16 -16
  78. data/examples/{wiktacular → app/wiktacular}/mkd/testing/2007-07-21_18-47-54.mkd +16 -16
  79. data/examples/{wiktacular → app/wiktacular}/mkd/testing/current.mkd +16 -16
  80. data/examples/{wiktacular → app/wiktacular}/spec/wiktacular.rb +39 -40
  81. data/examples/{wiktacular → app/wiktacular}/src/controller.rb +18 -18
  82. data/examples/{wiktacular → app/wiktacular}/src/model.rb +30 -14
  83. data/examples/{wiktacular → app/wiktacular}/start.rb +1 -1
  84. data/examples/{wiktacular/template → app/wiktacular/view}/edit.xhtml +2 -2
  85. data/examples/{wiktacular/template → app/wiktacular/view}/new.xhtml +1 -1
  86. data/examples/{element.rb → basic/element.rb} +5 -3
  87. data/examples/basic/gestalt.rb +26 -0
  88. data/examples/basic/hello.rb +14 -0
  89. data/examples/{layout.rb → basic/layout.rb} +2 -2
  90. data/examples/basic/linking.rb +29 -0
  91. data/examples/basic/partial.rb +26 -0
  92. data/examples/{simple.rb → basic/simple.rb} +9 -12
  93. data/examples/{caching.rb → helpers/cache.rb} +9 -7
  94. data/examples/helpers/paginate.rb +71 -0
  95. data/examples/helpers/rest.rb +28 -0
  96. data/examples/helpers/simple_captcha.rb +29 -0
  97. data/examples/{css.rb → misc/css.rb} +6 -12
  98. data/examples/misc/memleak_detector.rb +37 -0
  99. data/examples/misc/nagoro_element.rb +43 -0
  100. data/examples/{ramaise.rb → misc/ramaise.rb} +2 -2
  101. data/examples/misc/rapp.rb +56 -0
  102. data/examples/misc/sequel_scaffolding.rb +45 -0
  103. data/examples/misc/serve_directory.rb +6 -0
  104. data/examples/templates/template_erubis.rb +9 -10
  105. data/examples/templates/template_ezamar.rb +8 -7
  106. data/examples/templates/template_haml.rb +7 -8
  107. data/examples/templates/template_liquid.rb +20 -19
  108. data/examples/templates/template_markaby.rb +6 -7
  109. data/examples/templates/template_mustache.rb +70 -0
  110. data/examples/templates/template_nagoro.rb +6 -7
  111. data/examples/templates/template_redcloth.rb +8 -9
  112. data/examples/templates/template_remarkably.rb +8 -9
  113. data/examples/templates/template_tenjin.rb +10 -15
  114. data/examples/templates/{template → view}/external.haml +4 -4
  115. data/examples/templates/{template → view}/external.mab +4 -4
  116. data/examples/templates/view/external.mt +29 -0
  117. data/examples/templates/{template → view}/external.nag +4 -4
  118. data/examples/templates/{template → view}/external.redcloth +4 -4
  119. data/examples/templates/{template → view}/external.rem +4 -4
  120. data/examples/templates/{template → view}/external.rhtml +6 -6
  121. data/examples/templates/{template → view}/external.tenjin +4 -4
  122. data/examples/templates/{template → view}/external.zmr +6 -6
  123. data/guide/AUTHORS +80 -0
  124. data/guide/CHANGELOG +20210 -0
  125. data/guide/LICENSE +19 -0
  126. data/guide/_static/logo.png +0 -0
  127. data/guide/_static/logo.svg +49 -0
  128. data/guide/css/common.css +20 -0
  129. data/guide/general/cache.md +168 -0
  130. data/guide/general/configuration.md +169 -0
  131. data/guide/general/contributing.md +182 -0
  132. data/guide/general/controllers.md +210 -0
  133. data/guide/general/helpers.md +89 -0
  134. data/guide/general/installation.md +59 -0
  135. data/guide/general/logging.md +96 -0
  136. data/guide/general/middlewares.md +111 -0
  137. data/guide/general/models.md +79 -0
  138. data/{doc/readme_chunks/principles.txt → guide/general/principles.md} +15 -17
  139. data/guide/general/ramaze_command.md +110 -0
  140. data/guide/general/routes.md +82 -0
  141. data/guide/general/sessions.md +210 -0
  142. data/guide/general/special_thanks.md +69 -0
  143. data/guide/general/testing.md +228 -0
  144. data/guide/general/upgrading.md +85 -0
  145. data/guide/general/views.md +335 -0
  146. data/lib/proto/Gemfile +4 -0
  147. data/lib/proto/README.md +35 -0
  148. data/lib/proto/Rakefile +1 -0
  149. data/lib/proto/app.rb +9 -0
  150. data/lib/proto/config.ru +19 -0
  151. data/lib/proto/controller/init.rb +18 -0
  152. data/lib/proto/controller/main.rb +13 -10
  153. data/lib/proto/layout/default.xhtml +57 -0
  154. data/lib/proto/public/css/grid.css +107 -0
  155. data/lib/proto/public/css/layout.css +81 -0
  156. data/lib/proto/public/css/reset.css +123 -0
  157. data/lib/proto/public/css/text.css +109 -0
  158. data/lib/proto/public/favicon.ico +0 -0
  159. data/lib/proto/public/images/bg.png +0 -0
  160. data/lib/proto/spec/helper.rb +39 -0
  161. data/lib/proto/task/ramaze.rake +57 -0
  162. data/lib/proto/view/index.xhtml +36 -25
  163. data/lib/ramaze/app.rb +198 -0
  164. data/lib/ramaze/bin/create.rb +92 -0
  165. data/lib/ramaze/bin/runner.rb +127 -0
  166. data/lib/ramaze/cache/lru.rb +88 -0
  167. data/lib/ramaze/cache/memcache.rb +219 -0
  168. data/lib/ramaze/cache/moneta.rb +143 -0
  169. data/lib/ramaze/cache/redis.rb +163 -0
  170. data/lib/ramaze/cache/sequel.rb +373 -0
  171. data/lib/ramaze/cache.rb +42 -82
  172. data/lib/ramaze/controller/default.rb +25 -0
  173. data/lib/ramaze/controller.rb +184 -224
  174. data/lib/ramaze/current.rb +17 -68
  175. data/lib/ramaze/default_middleware.rb +24 -0
  176. data/lib/ramaze/files.rb +59 -0
  177. data/lib/ramaze/gestalt.rb +95 -63
  178. data/lib/ramaze/helper/auth.rb +107 -107
  179. data/lib/ramaze/helper/bench.rb +51 -0
  180. data/lib/ramaze/helper/blue_form.rb +683 -0
  181. data/lib/ramaze/helper/cache.rb +108 -130
  182. data/lib/ramaze/helper/csrf.rb +191 -0
  183. data/lib/ramaze/helper/email.rb +116 -0
  184. data/lib/ramaze/helper/erector.rb +113 -0
  185. data/lib/ramaze/helper/flash.rb +42 -39
  186. data/lib/ramaze/helper/formatting.rb +200 -35
  187. data/lib/ramaze/helper/gestalt.rb +49 -0
  188. data/lib/ramaze/helper/gravatar.rb +75 -0
  189. data/lib/ramaze/helper/identity.rb +93 -68
  190. data/lib/ramaze/helper/layout.rb +128 -0
  191. data/lib/ramaze/helper/link.rb +52 -119
  192. data/lib/ramaze/helper/localize.rb +143 -0
  193. data/lib/ramaze/helper/markaby.rb +26 -24
  194. data/lib/ramaze/helper/maruku.rb +15 -6
  195. data/lib/ramaze/helper/paginate.rb +315 -0
  196. data/lib/ramaze/helper/remarkably.rb +14 -0
  197. data/lib/ramaze/helper/request_accessor.rb +20 -0
  198. data/lib/ramaze/helper/send_file.rb +34 -0
  199. data/lib/ramaze/helper/simple_captcha.rb +61 -0
  200. data/lib/ramaze/helper/stack.rb +72 -62
  201. data/lib/ramaze/helper/tagz.rb +13 -12
  202. data/lib/ramaze/helper/thread.rb +25 -0
  203. data/lib/ramaze/helper/upload.rb +525 -0
  204. data/lib/ramaze/helper/user.rb +260 -39
  205. data/lib/ramaze/helper/xhtml.rb +122 -0
  206. data/lib/ramaze/helper.rb +8 -79
  207. data/lib/ramaze/log/hub.rb +41 -32
  208. data/lib/ramaze/log/informer.rb +128 -104
  209. data/lib/ramaze/log/logger.rb +25 -15
  210. data/lib/ramaze/log/logging.rb +46 -27
  211. data/lib/ramaze/log/rotatinginformer.rb +237 -0
  212. data/lib/ramaze/log/syslog.rb +57 -31
  213. data/lib/ramaze/log.rb +16 -15
  214. data/lib/ramaze/reloader/watch_inotify.rb +84 -0
  215. data/lib/ramaze/reloader/watch_stat.rb +58 -0
  216. data/lib/ramaze/reloader.rb +212 -0
  217. data/lib/ramaze/request.rb +126 -0
  218. data/lib/ramaze/response.rb +67 -0
  219. data/lib/ramaze/snippets/object/__dir__.rb +25 -0
  220. data/lib/ramaze/snippets/ramaze/deprecated.rb +23 -0
  221. data/lib/ramaze/snippets/string/camel_case.rb +17 -14
  222. data/lib/ramaze/snippets/string/color.rb +27 -24
  223. data/lib/ramaze/snippets/string/esc.rb +25 -25
  224. data/lib/ramaze/snippets/string/snake_case.rb +16 -13
  225. data/lib/ramaze/snippets/string/unindent.rb +24 -11
  226. data/lib/ramaze/snippets.rb +21 -6
  227. data/lib/ramaze/spec/bacon.rb +44 -0
  228. data/lib/ramaze/spec/helper/bacon.rb +4 -4
  229. data/lib/ramaze/spec/helper/pretty_output.rb +9 -1
  230. data/lib/ramaze/spec/helper/snippets.rb +11 -1
  231. data/lib/ramaze/spec/helper/template_examples.rb +22 -0
  232. data/lib/ramaze/version.rb +4 -13
  233. data/lib/ramaze/view/erector.rb +116 -0
  234. data/lib/ramaze/view/erubis.rb +26 -0
  235. data/lib/ramaze/view/ezamar.rb +27 -0
  236. data/lib/ramaze/view/gestalt.rb +20 -0
  237. data/lib/ramaze/view/haml.rb +27 -0
  238. data/lib/ramaze/view/liquid.rb +99 -0
  239. data/lib/ramaze/view/lokar.rb +18 -0
  240. data/lib/ramaze/view/mustache.rb +46 -0
  241. data/lib/ramaze/view/nagoro/render_partial.rb +32 -0
  242. data/lib/ramaze/view/nagoro.rb +44 -0
  243. data/lib/ramaze/view/remarkably.rb +22 -0
  244. data/lib/ramaze/view/sass.rb +22 -0
  245. data/lib/ramaze/view/slim.rb +43 -0
  246. data/lib/ramaze/view/slippers.rb +51 -0
  247. data/lib/ramaze/view/tagz.rb +67 -0
  248. data/lib/ramaze/view/tenjin.rb +32 -0
  249. data/lib/ramaze/view.rb +35 -0
  250. data/lib/ramaze.rb +60 -100
  251. data/lib/vendor/route_exceptions.rb +42 -0
  252. data/ramaze.gemspec +61 -0
  253. data/spec/examples/caching.rb +5 -8
  254. data/spec/examples/css.rb +3 -4
  255. data/spec/examples/element.rb +4 -4
  256. data/spec/examples/hello.rb +4 -5
  257. data/spec/examples/linking.rb +3 -4
  258. data/spec/examples/misc/sequel_scaffolding.rb +18 -0
  259. data/spec/examples/simple.rb +3 -8
  260. data/spec/examples/templates/template_erubis.rb +8 -18
  261. data/spec/examples/templates/template_ezamar.rb +9 -19
  262. data/spec/examples/templates/template_haml.rb +8 -20
  263. data/spec/examples/templates/template_liquid.rb +8 -24
  264. data/spec/examples/templates/template_markaby.rb +10 -19
  265. data/spec/examples/templates/template_mustache.rb +13 -0
  266. data/spec/examples/templates/template_nagoro.rb +13 -0
  267. data/spec/examples/templates/template_remarkably.rb +8 -18
  268. data/spec/examples/templates/template_tenjin.rb +8 -23
  269. data/spec/examples/todolist.rb +33 -0
  270. data/spec/helper.rb +14 -3
  271. data/spec/ramaze/action/render.rb +9 -17
  272. data/spec/ramaze/action/view/other_wrapper.erb +1 -0
  273. data/spec/ramaze/action/view/sub/sub_wrapper.xhtml +1 -0
  274. data/spec/ramaze/app/location.rb +43 -0
  275. data/spec/ramaze/app.rb +50 -0
  276. data/spec/ramaze/bin/app/config.ru +11 -0
  277. data/spec/ramaze/bin/create.rb +28 -0
  278. data/spec/ramaze/bin/runner.rb +30 -0
  279. data/spec/ramaze/cache/lru.rb +48 -0
  280. data/spec/ramaze/cache/memcache.rb +69 -0
  281. data/spec/ramaze/cache/moneta.rb +53 -0
  282. data/spec/ramaze/cache/redis.rb +58 -0
  283. data/spec/ramaze/cache/sequel.rb +60 -0
  284. data/spec/ramaze/controller/actionless_templates.rb +16 -12
  285. data/spec/ramaze/controller/lonely_mapping.rb +18 -0
  286. data/spec/ramaze/controller/mapping.rb +63 -0
  287. data/spec/ramaze/controller/provide_inheritance.rb +40 -0
  288. data/spec/ramaze/controller/resolve.rb +9 -11
  289. data/spec/ramaze/controller/subclass.rb +22 -7
  290. data/spec/ramaze/controller/template_resolving.rb +23 -61
  291. data/spec/ramaze/controller/view/bar.xhtml +1 -0
  292. data/spec/ramaze/controller/view/base/another.xhtml +1 -0
  293. data/spec/ramaze/dispatcher/directory.rb +61 -33
  294. data/spec/ramaze/dispatcher/file.rb +65 -47
  295. data/spec/ramaze/error.rb +54 -64
  296. data/spec/ramaze/files/public_1/plain.txt +1 -0
  297. data/spec/ramaze/files/public_2/rich.txt +1 -0
  298. data/spec/ramaze/files.rb +30 -0
  299. data/spec/ramaze/gestalt.rb +28 -21
  300. data/spec/ramaze/helper/auth.rb +47 -29
  301. data/spec/ramaze/helper/bench.rb +21 -0
  302. data/spec/ramaze/helper/blue_form.rb +807 -0
  303. data/spec/ramaze/helper/cache.rb +65 -84
  304. data/spec/ramaze/helper/csrf.rb +64 -0
  305. data/spec/ramaze/helper/email.rb +69 -0
  306. data/spec/ramaze/helper/flash.rb +22 -101
  307. data/spec/ramaze/helper/formatting.rb +100 -6
  308. data/spec/ramaze/helper/gestalt.rb +18 -0
  309. data/spec/ramaze/helper/gravatar.rb +43 -0
  310. data/spec/ramaze/helper/layout/alternative.xhtml +5 -0
  311. data/spec/ramaze/helper/layout/default.xhtml +5 -0
  312. data/spec/ramaze/helper/layout.rb +109 -0
  313. data/spec/ramaze/helper/link.rb +48 -102
  314. data/spec/ramaze/helper/localize.rb +65 -0
  315. data/spec/ramaze/helper/maruku.rb +22 -0
  316. data/spec/ramaze/helper/paginate.rb +304 -0
  317. data/spec/ramaze/helper/request_accessor.rb +22 -0
  318. data/spec/ramaze/helper/simple_captcha.rb +45 -0
  319. data/spec/ramaze/helper/stack.rb +54 -41
  320. data/spec/ramaze/helper/upload.rb +150 -0
  321. data/spec/ramaze/helper/uploads/text_1.txt +1 -0
  322. data/spec/ramaze/helper/uploads/text_2.txt +1 -0
  323. data/spec/ramaze/helper/user.rb +63 -20
  324. data/spec/ramaze/helper/xhtml.rb +54 -0
  325. data/spec/ramaze/log/informer.rb +30 -28
  326. data/spec/ramaze/log/logging.rb +66 -0
  327. data/spec/ramaze/log/syslog.rb +89 -4
  328. data/spec/ramaze/params.rb +12 -16
  329. data/spec/ramaze/request.rb +51 -160
  330. data/spec/ramaze/rewrite/file.css +1 -0
  331. data/spec/ramaze/session/lru.rb +58 -0
  332. data/spec/ramaze/session/memcache.rb +66 -0
  333. data/spec/ramaze/session/redis.rb +63 -0
  334. data/spec/ramaze/session/sequel.rb +62 -0
  335. data/spec/ramaze/view/erector/external_view.erector +5 -0
  336. data/spec/ramaze/view/erector/index.erector +5 -0
  337. data/spec/ramaze/view/erector/layout.erector +13 -0
  338. data/spec/ramaze/view/erector/tables.erector +23 -0
  339. data/spec/ramaze/view/erector/view.erector +6 -0
  340. data/spec/ramaze/view/erector.rb +68 -0
  341. data/spec/ramaze/view/erubis/external.rhtml +8 -0
  342. data/spec/ramaze/view/erubis/sum.rhtml +1 -0
  343. data/spec/ramaze/view/erubis.rb +73 -0
  344. data/spec/ramaze/view/ezamar/external.zmr +8 -0
  345. data/spec/ramaze/view/ezamar/sum.zmr +1 -0
  346. data/spec/ramaze/view/ezamar.rb +73 -0
  347. data/spec/ramaze/view/gestalt/external.ges +8 -0
  348. data/spec/ramaze/view/gestalt.rb +94 -0
  349. data/spec/ramaze/view/haml/external.haml +5 -0
  350. data/spec/ramaze/view/haml/sum.haml +2 -0
  351. data/spec/ramaze/view/haml.rb +114 -0
  352. data/spec/ramaze/view/liquid/external.liquid +8 -0
  353. data/spec/ramaze/view/liquid/sum.liquid +1 -0
  354. data/spec/ramaze/view/liquid.rb +73 -0
  355. data/spec/ramaze/view/lokar/external.lok +8 -0
  356. data/spec/ramaze/view/lokar/sum.lok +1 -0
  357. data/spec/ramaze/view/lokar.rb +78 -0
  358. data/spec/ramaze/view/mustache/external.mt +8 -0
  359. data/spec/ramaze/view/mustache/sum.mt +1 -0
  360. data/spec/ramaze/view/mustache.rb +77 -0
  361. data/spec/ramaze/view/nagoro/external.nag +8 -0
  362. data/spec/ramaze/view/nagoro/sum.nag +1 -0
  363. data/spec/ramaze/view/nagoro.rb +78 -0
  364. data/spec/ramaze/view/remarkably.rb +49 -0
  365. data/spec/ramaze/view/sass.rb +73 -0
  366. data/spec/ramaze/view/slim/external.slim +5 -0
  367. data/spec/ramaze/view/slim/external_vars.slim +5 -0
  368. data/spec/ramaze/view/slim.rb +49 -0
  369. data/spec/ramaze/view/slippers/external.st +8 -0
  370. data/spec/ramaze/view/slippers/sum.st +1 -0
  371. data/spec/ramaze/view/slippers.rb +49 -0
  372. data/spec/ramaze/{template → view}/tagz.rb +20 -31
  373. data/spec/ramaze/view/tenjin/external.rbhtml +8 -0
  374. data/spec/ramaze/view/tenjin/sum.rbhtml +1 -0
  375. data/spec/ramaze/view/tenjin.rb +57 -0
  376. data/spec/ramaze/view.rb +36 -0
  377. data/spec/snippets/object/__dir__.rb +17 -0
  378. data/spec/snippets/ramaze/lru_hash.rb +88 -0
  379. data/spec/snippets/string/camel_case.rb +4 -1
  380. data/spec/snippets/string/color.rb +4 -1
  381. data/spec/snippets/string/snake_case.rb +4 -1
  382. data/spec/snippets/string/unindent.rb +10 -1
  383. data/tasks/authors.rake +17 -0
  384. data/tasks/bacon.rake +81 -0
  385. data/tasks/changelog.rake +20 -0
  386. data/tasks/gems.rake +15 -0
  387. data/tasks/release.rake +38 -0
  388. data/tasks/todo.rake +31 -0
  389. data/tasks/yard.rake +13 -0
  390. metadata +813 -714
  391. data/doc/AUTHORS +0 -25
  392. data/doc/CHANGELOG +0 -5757
  393. data/doc/COPYING +0 -56
  394. data/doc/FAQ +0 -92
  395. data/doc/GPL +0 -339
  396. data/doc/INSTALL +0 -34
  397. data/doc/LEGAL +0 -26
  398. data/doc/ProjectInfo +0 -53
  399. data/doc/README +0 -435
  400. data/doc/TODO +0 -29
  401. data/doc/meta/announcement.txt +0 -126
  402. data/doc/meta/configuration.txt +0 -162
  403. data/doc/meta/internals.txt +0 -278
  404. data/doc/meta/users.kml +0 -64
  405. data/doc/migrate/1110_to_1111.txt +0 -131
  406. data/doc/readme_chunks/appendix.txt +0 -10
  407. data/doc/readme_chunks/examples.txt +0 -38
  408. data/doc/readme_chunks/features.txt +0 -148
  409. data/doc/readme_chunks/getting_help.txt +0 -5
  410. data/doc/readme_chunks/getting_started.txt +0 -18
  411. data/doc/readme_chunks/installing.txt +0 -46
  412. data/doc/readme_chunks/introduction.txt +0 -18
  413. data/doc/readme_chunks/thanks.txt +0 -59
  414. data/doc/tutorial/todolist.html +0 -816
  415. data/doc/tutorial/todolist.mkd +0 -736
  416. data/examples/auth/auth.rb +0 -54
  417. data/examples/auth/template/layout.haml +0 -20
  418. data/examples/auth/template/login.haml +0 -16
  419. data/examples/blog/README +0 -3
  420. data/examples/blog/controller/main.rb +0 -29
  421. data/examples/blog/model/entry.rb +0 -30
  422. data/examples/blog/public/styles/blog.css +0 -132
  423. data/examples/blog/spec/blog.rb +0 -87
  424. data/examples/blog/start.rb +0 -7
  425. data/examples/blog/view/edit.xhtml +0 -17
  426. data/examples/blog/view/index.xhtml +0 -17
  427. data/examples/blog/view/layout.xhtml +0 -11
  428. data/examples/blog/view/new.xhtml +0 -16
  429. data/examples/hello.rb +0 -15
  430. data/examples/linking.rb +0 -29
  431. data/examples/memleak_detector.rb +0 -32
  432. data/examples/nitro_form.rb +0 -23
  433. data/examples/rammit/spec/rammit.rb +0 -30
  434. data/examples/rammit/src/controller/main.rb +0 -3
  435. data/examples/rammit/src/controller/page.rb +0 -16
  436. data/examples/rammit/src/model.rb +0 -33
  437. data/examples/rammit/start.rb +0 -8
  438. data/examples/rammit/template/index.xhtml +0 -14
  439. data/examples/rammit/template/page/view.xhtml +0 -4
  440. data/examples/rapaste/Rakefile +0 -35
  441. data/examples/rapaste/controller/paste.rb +0 -94
  442. data/examples/rapaste/model/paste.rb +0 -55
  443. data/examples/rapaste/public/css/active4d.css +0 -114
  444. data/examples/rapaste/public/css/all_hallows_eve.css +0 -72
  445. data/examples/rapaste/public/css/amy.css +0 -147
  446. data/examples/rapaste/public/css/blackboard.css +0 -88
  447. data/examples/rapaste/public/css/brilliance_black.css +0 -605
  448. data/examples/rapaste/public/css/brilliance_dull.css +0 -599
  449. data/examples/rapaste/public/css/cobalt.css +0 -149
  450. data/examples/rapaste/public/css/dawn.css +0 -121
  451. data/examples/rapaste/public/css/display.css +0 -197
  452. data/examples/rapaste/public/css/eiffel.css +0 -121
  453. data/examples/rapaste/public/css/espresso_libre.css +0 -109
  454. data/examples/rapaste/public/css/idle.css +0 -62
  455. data/examples/rapaste/public/css/iplastic.css +0 -80
  456. data/examples/rapaste/public/css/lazy.css +0 -73
  457. data/examples/rapaste/public/css/mac_classic.css +0 -123
  458. data/examples/rapaste/public/css/magicwb_amiga.css +0 -104
  459. data/examples/rapaste/public/css/pastels_on_dark.css +0 -188
  460. data/examples/rapaste/public/css/slush_poppies.css +0 -85
  461. data/examples/rapaste/public/css/spacecadet.css +0 -51
  462. data/examples/rapaste/public/css/sunburst.css +0 -180
  463. data/examples/rapaste/public/css/twilight.css +0 -137
  464. data/examples/rapaste/public/css/zenburnesque.css +0 -91
  465. data/examples/rapaste/public/js/jquery.js +0 -11
  466. data/examples/rapaste/spec/rapaste.rb +0 -49
  467. data/examples/rapaste/start.rb +0 -24
  468. data/examples/rapaste/view/copy.xhtml +0 -10
  469. data/examples/rapaste/view/index.xhtml +0 -9
  470. data/examples/rapaste/view/layout.xhtml +0 -25
  471. data/examples/rapaste/view/list.xhtml +0 -29
  472. data/examples/rapaste/view/search.xhtml +0 -41
  473. data/examples/rapaste/view/view.xhtml +0 -37
  474. data/examples/simple_auth.rb +0 -23
  475. data/examples/sourceview/public/coderay.css +0 -104
  476. data/examples/sourceview/public/images/file.gif +0 -0
  477. data/examples/sourceview/public/images/folder.gif +0 -0
  478. data/examples/sourceview/public/images/tv-collapsable-last.gif +0 -0
  479. data/examples/sourceview/public/images/tv-collapsable.gif +0 -0
  480. data/examples/sourceview/public/images/tv-expandable-last.gif +0 -0
  481. data/examples/sourceview/public/images/tv-expandable.gif +0 -0
  482. data/examples/sourceview/public/images/tv-item-last.gif +0 -0
  483. data/examples/sourceview/public/images/tv-item.gif +0 -0
  484. data/examples/sourceview/public/jquery.js +0 -11
  485. data/examples/sourceview/public/jquery.treeview.css +0 -48
  486. data/examples/sourceview/public/jquery.treeview.js +0 -223
  487. data/examples/sourceview/public/sourceview.js +0 -52
  488. data/examples/sourceview/sourceview.rb +0 -77
  489. data/examples/sourceview/template/index.haml +0 -59
  490. data/examples/templates/template/external.amrita +0 -19
  491. data/examples/templates/template/external.xsl +0 -57
  492. data/examples/templates/template_amrita2.rb +0 -74
  493. data/examples/templates/template_xslt.rb +0 -49
  494. data/examples/todolist/README +0 -1
  495. data/examples/todolist/public/js/jquery.js +0 -1923
  496. data/examples/todolist/public/ramaze.png +0 -0
  497. data/examples/todolist/spec/todolist.rb +0 -132
  498. data/examples/todolist/src/controller/main.rb +0 -70
  499. data/examples/todolist/src/element/page.rb +0 -31
  500. data/examples/todolist/src/model.rb +0 -14
  501. data/examples/todolist/start.rb +0 -11
  502. data/examples/todolist/template/index.xhtml +0 -17
  503. data/examples/todolist/template/new.xhtml +0 -7
  504. data/examples/whywiki/spec/whywiki.rb +0 -58
  505. data/examples/whywiki/template/show.xhtml +0 -18
  506. data/examples/wikore/start.rb +0 -9
  507. data/examples/wiktacular/mkd/main/2007-07-20_19-23-10.mkd +0 -2
  508. data/examples/wiktacular/mkd/main/2007-07-20_19-45-07.mkd +0 -2
  509. data/examples/wiktacular/mkd/main/current.mkd +0 -2
  510. data/examples/wiktacular/mkd/testing/2007-07-20_16-43-46.mkd +0 -2
  511. data/lib/proto/public/css/ramaze_error.css +0 -90
  512. data/lib/proto/public/dispatch.fcgi +0 -11
  513. data/lib/proto/public/ramaze.png +0 -0
  514. data/lib/proto/spec/main.rb +0 -24
  515. data/lib/proto/start.rb +0 -8
  516. data/lib/proto/start.ru +0 -8
  517. data/lib/proto/view/error.xhtml +0 -64
  518. data/lib/proto/view/page.xhtml +0 -15
  519. data/lib/ramaze/action/render.rb +0 -163
  520. data/lib/ramaze/action.rb +0 -136
  521. data/lib/ramaze/adapter/base.rb +0 -59
  522. data/lib/ramaze/adapter/cgi.rb +0 -24
  523. data/lib/ramaze/adapter/ebb.rb +0 -32
  524. data/lib/ramaze/adapter/evented_mongrel.rb +0 -7
  525. data/lib/ramaze/adapter/fcgi.rb +0 -24
  526. data/lib/ramaze/adapter/lsws.rb +0 -23
  527. data/lib/ramaze/adapter/mongrel.rb +0 -25
  528. data/lib/ramaze/adapter/scgi.rb +0 -22
  529. data/lib/ramaze/adapter/swiftiplied_mongrel.rb +0 -7
  530. data/lib/ramaze/adapter/thin.rb +0 -22
  531. data/lib/ramaze/adapter/webrick.rb +0 -52
  532. data/lib/ramaze/adapter.rb +0 -101
  533. data/lib/ramaze/cache/memcached.rb +0 -70
  534. data/lib/ramaze/cache/memory.rb +0 -6
  535. data/lib/ramaze/cache/yaml_store.rb +0 -68
  536. data/lib/ramaze/contrib/auto_params/get_args.rb +0 -57
  537. data/lib/ramaze/contrib/auto_params.rb +0 -135
  538. data/lib/ramaze/contrib/email.rb +0 -84
  539. data/lib/ramaze/contrib/facebook/facebook.rb +0 -171
  540. data/lib/ramaze/contrib/facebook.rb +0 -23
  541. data/lib/ramaze/contrib/file_cache.rb +0 -65
  542. data/lib/ramaze/contrib/gettext/mo.rb +0 -155
  543. data/lib/ramaze/contrib/gettext/parser.rb +0 -46
  544. data/lib/ramaze/contrib/gettext/po.rb +0 -109
  545. data/lib/ramaze/contrib/gettext.rb +0 -113
  546. data/lib/ramaze/contrib/gzip_filter.rb +0 -56
  547. data/lib/ramaze/contrib/profiling.rb +0 -36
  548. data/lib/ramaze/contrib/route.rb +0 -22
  549. data/lib/ramaze/contrib/sequel/fill.rb +0 -12
  550. data/lib/ramaze/contrib/sequel_cache.rb +0 -92
  551. data/lib/ramaze/contrib.rb +0 -82
  552. data/lib/ramaze/controller/error.rb +0 -46
  553. data/lib/ramaze/controller/main.rb +0 -2
  554. data/lib/ramaze/controller/resolve.rb +0 -234
  555. data/lib/ramaze/current/request.rb +0 -181
  556. data/lib/ramaze/current/response.rb +0 -19
  557. data/lib/ramaze/current/session/flash.rb +0 -67
  558. data/lib/ramaze/current/session/hash.rb +0 -65
  559. data/lib/ramaze/current/session.rb +0 -153
  560. data/lib/ramaze/dispatcher/action.rb +0 -40
  561. data/lib/ramaze/dispatcher/directory.rb +0 -116
  562. data/lib/ramaze/dispatcher/error.rb +0 -108
  563. data/lib/ramaze/dispatcher/file.rb +0 -87
  564. data/lib/ramaze/dispatcher.rb +0 -124
  565. data/lib/ramaze/error.rb +0 -24
  566. data/lib/ramaze/global/dsl.rb +0 -39
  567. data/lib/ramaze/global/globalstruct.rb +0 -147
  568. data/lib/ramaze/global.rb +0 -116
  569. data/lib/ramaze/helper/aspect.rb +0 -100
  570. data/lib/ramaze/helper/cgi.rb +0 -43
  571. data/lib/ramaze/helper/inform.rb +0 -40
  572. data/lib/ramaze/helper/nitroform.rb +0 -14
  573. data/lib/ramaze/helper/pager.rb +0 -366
  574. data/lib/ramaze/helper/partial.rb +0 -96
  575. data/lib/ramaze/helper/redirect.rb +0 -73
  576. data/lib/ramaze/helper/sendfile.rb +0 -18
  577. data/lib/ramaze/helper/sequel.rb +0 -52
  578. data/lib/ramaze/inform.rb +0 -4
  579. data/lib/ramaze/log/analogger.rb +0 -37
  580. data/lib/ramaze/log/growl.rb +0 -35
  581. data/lib/ramaze/log/knotify.rb +0 -25
  582. data/lib/ramaze/log/xosd.rb +0 -88
  583. data/lib/ramaze/route.rb +0 -84
  584. data/lib/ramaze/snippets/array/put_within.rb +0 -37
  585. data/lib/ramaze/snippets/binding/locals.rb +0 -13
  586. data/lib/ramaze/snippets/dictionary.rb +0 -504
  587. data/lib/ramaze/snippets/divide.rb +0 -20
  588. data/lib/ramaze/snippets/kernel/__dir__.rb +0 -23
  589. data/lib/ramaze/snippets/kernel/acquire.rb +0 -39
  590. data/lib/ramaze/snippets/kernel/aquire.rb +0 -1
  591. data/lib/ramaze/snippets/kernel/constant.rb +0 -26
  592. data/lib/ramaze/snippets/kernel/pretty_inspect.rb +0 -15
  593. data/lib/ramaze/snippets/metaid.rb +0 -17
  594. data/lib/ramaze/snippets/numeric/filesize_format.rb +0 -19
  595. data/lib/ramaze/snippets/object/pretty.rb +0 -6
  596. data/lib/ramaze/snippets/object/scope.rb +0 -11
  597. data/lib/ramaze/snippets/object/thread_accessor.rb +0 -5
  598. data/lib/ramaze/snippets/object/traits.rb +0 -76
  599. data/lib/ramaze/snippets/ordered_set.rb +0 -36
  600. data/lib/ramaze/snippets/proc/locals.rb +0 -11
  601. data/lib/ramaze/snippets/ramaze/caller_info.rb +0 -30
  602. data/lib/ramaze/snippets/ramaze/caller_lines.rb +0 -51
  603. data/lib/ramaze/snippets/ramaze/thread_accessor.rb +0 -44
  604. data/lib/ramaze/snippets/string/each.rb +0 -8
  605. data/lib/ramaze/snippets/string/ord.rb +0 -15
  606. data/lib/ramaze/snippets/string/start_with.rb +0 -7
  607. data/lib/ramaze/snippets/struct/fill.rb +0 -23
  608. data/lib/ramaze/snippets/struct/values_at.rb +0 -23
  609. data/lib/ramaze/snippets/symbol/to_proc.rb +0 -24
  610. data/lib/ramaze/snippets/thread/into.rb +0 -18
  611. data/lib/ramaze/sourcereload.rb +0 -169
  612. data/lib/ramaze/spec/helper/browser.rb +0 -88
  613. data/lib/ramaze/spec/helper/mock_http.rb +0 -69
  614. data/lib/ramaze/spec/helper/requester.rb +0 -49
  615. data/lib/ramaze/spec/helper/simple_http.rb +0 -434
  616. data/lib/ramaze/spec/helper.rb +0 -122
  617. data/lib/ramaze/spec.rb +0 -1
  618. data/lib/ramaze/store/default.rb +0 -109
  619. data/lib/ramaze/template/amrita2.rb +0 -44
  620. data/lib/ramaze/template/builder.rb +0 -28
  621. data/lib/ramaze/template/erubis.rb +0 -35
  622. data/lib/ramaze/template/ezamar/element.rb +0 -169
  623. data/lib/ramaze/template/ezamar/engine.rb +0 -76
  624. data/lib/ramaze/template/ezamar/morpher.rb +0 -135
  625. data/lib/ramaze/template/ezamar/render_partial.rb +0 -31
  626. data/lib/ramaze/template/ezamar.rb +0 -42
  627. data/lib/ramaze/template/haml.rb +0 -37
  628. data/lib/ramaze/template/liquid.rb +0 -36
  629. data/lib/ramaze/template/markaby.rb +0 -52
  630. data/lib/ramaze/template/nagoro.rb +0 -51
  631. data/lib/ramaze/template/none.rb +0 -14
  632. data/lib/ramaze/template/redcloth.rb +0 -24
  633. data/lib/ramaze/template/remarkably.rb +0 -38
  634. data/lib/ramaze/template/sass.rb +0 -37
  635. data/lib/ramaze/template/tagz.rb +0 -79
  636. data/lib/ramaze/template/tenjin.rb +0 -34
  637. data/lib/ramaze/template/xslt.rb +0 -96
  638. data/lib/ramaze/template.rb +0 -81
  639. data/lib/ramaze/tool/create.rb +0 -74
  640. data/lib/ramaze/tool/localize.rb +0 -162
  641. data/lib/ramaze/tool/mime.rb +0 -25
  642. data/lib/ramaze/tool/mime_types.yaml +0 -615
  643. data/lib/ramaze/tool/record.rb +0 -6
  644. data/lib/ramaze/tool.rb +0 -9
  645. data/lib/ramaze/trinity.rb +0 -13
  646. data/lib/vendor/bacon.rb +0 -323
  647. data/rake_tasks/conf.rake +0 -73
  648. data/rake_tasks/coverage.rake +0 -46
  649. data/rake_tasks/darcs.rake +0 -5
  650. data/rake_tasks/gem.rake +0 -43
  651. data/rake_tasks/maintenance.rake +0 -384
  652. data/rake_tasks/spec.rake +0 -62
  653. data/spec/contrib/auto_params.rb +0 -121
  654. data/spec/contrib/profiling.rb +0 -26
  655. data/spec/contrib/route.rb +0 -36
  656. data/spec/contrib/sequel/fill.rb +0 -47
  657. data/spec/examples/simple_auth.rb +0 -32
  658. data/spec/examples/templates/template_amrita2.rb +0 -16
  659. data/spec/examples/templates/template_redcloth.rb +0 -28
  660. data/spec/ramaze/action/basics.rb +0 -36
  661. data/spec/ramaze/action/cache.rb +0 -43
  662. data/spec/ramaze/action/layout.rb +0 -190
  663. data/spec/ramaze/adapter/mongrel.rb +0 -12
  664. data/spec/ramaze/adapter/record.rb +0 -31
  665. data/spec/ramaze/adapter/webrick.rb +0 -12
  666. data/spec/ramaze/adapter.rb +0 -22
  667. data/spec/ramaze/cache.rb +0 -73
  668. data/spec/ramaze/controller.rb +0 -177
  669. data/spec/ramaze/current/request.rb +0 -30
  670. data/spec/ramaze/current/session.rb +0 -97
  671. data/spec/ramaze/dispatcher.rb +0 -31
  672. data/spec/ramaze/element.rb +0 -107
  673. data/spec/ramaze/helper/aspect.rb +0 -92
  674. data/spec/ramaze/helper/cgi.rb +0 -43
  675. data/spec/ramaze/helper/file.rb +0 -18
  676. data/spec/ramaze/helper/pager.rb +0 -99
  677. data/spec/ramaze/helper/partial.rb +0 -76
  678. data/spec/ramaze/helper/redirect.rb +0 -112
  679. data/spec/ramaze/localize.rb +0 -67
  680. data/spec/ramaze/morpher.rb +0 -111
  681. data/spec/ramaze/public/error404.xhtml +0 -1
  682. data/spec/ramaze/request/mongrel.rb +0 -9
  683. data/spec/ramaze/request/thin.rb +0 -9
  684. data/spec/ramaze/request/webrick.rb +0 -5
  685. data/spec/ramaze/route.rb +0 -130
  686. data/spec/ramaze/session.rb +0 -94
  687. data/spec/ramaze/store/default.rb +0 -71
  688. data/spec/ramaze/template/amrita2/external.amrita +0 -6
  689. data/spec/ramaze/template/amrita2/sum.amrita +0 -1
  690. data/spec/ramaze/template/amrita2.rb +0 -50
  691. data/spec/ramaze/template/builder/external.rxml +0 -3
  692. data/spec/ramaze/template/builder.rb +0 -55
  693. data/spec/ramaze/template/erubis/sum.rhtml +0 -1
  694. data/spec/ramaze/template/erubis.rb +0 -41
  695. data/spec/ramaze/template/ezamar/another/long/action.zmr +0 -1
  696. data/spec/ramaze/template/ezamar/combined.zmr +0 -1
  697. data/spec/ramaze/template/ezamar/file_only.zmr +0 -1
  698. data/spec/ramaze/template/ezamar/index.zmr +0 -1
  699. data/spec/ramaze/template/ezamar/nested.zmr +0 -1
  700. data/spec/ramaze/template/ezamar/other__index.xhtml +0 -1
  701. data/spec/ramaze/template/ezamar/some__long__action.zmr +0 -1
  702. data/spec/ramaze/template/ezamar/sum.zmr +0 -1
  703. data/spec/ramaze/template/ezamar.rb +0 -63
  704. data/spec/ramaze/template/haml/index.haml +0 -5
  705. data/spec/ramaze/template/haml/locals.haml +0 -2
  706. data/spec/ramaze/template/haml/with_vars.haml +0 -4
  707. data/spec/ramaze/template/haml.rb +0 -66
  708. data/spec/ramaze/template/liquid/index.liquid +0 -1
  709. data/spec/ramaze/template/liquid/products.liquid +0 -45
  710. data/spec/ramaze/template/liquid.rb +0 -99
  711. data/spec/ramaze/template/markaby/external.mab +0 -8
  712. data/spec/ramaze/template/markaby/sum.mab +0 -1
  713. data/spec/ramaze/template/markaby.rb +0 -61
  714. data/spec/ramaze/template/nagoro/another/long/action.nag +0 -1
  715. data/spec/ramaze/template/nagoro/combined.nag +0 -1
  716. data/spec/ramaze/template/nagoro/file_only.nag +0 -1
  717. data/spec/ramaze/template/nagoro/index.nag +0 -1
  718. data/spec/ramaze/template/nagoro/nested.nag +0 -1
  719. data/spec/ramaze/template/nagoro/some__long__action.nag +0 -1
  720. data/spec/ramaze/template/nagoro/sum.nag +0 -1
  721. data/spec/ramaze/template/nagoro.rb +0 -64
  722. data/spec/ramaze/template/redcloth/external.redcloth +0 -1
  723. data/spec/ramaze/template/redcloth.rb +0 -38
  724. data/spec/ramaze/template/remarkably.rb +0 -58
  725. data/spec/ramaze/template/sass.rb +0 -69
  726. data/spec/ramaze/template/tenjin/external.tenjin +0 -1
  727. data/spec/ramaze/template/tenjin.rb +0 -49
  728. data/spec/ramaze/template/xslt/concat_words.xsl +0 -16
  729. data/spec/ramaze/template/xslt/index.xsl +0 -14
  730. data/spec/ramaze/template/xslt/products.xsl +0 -32
  731. data/spec/ramaze/template/xslt/ruby_version.xsl +0 -14
  732. data/spec/ramaze/template/xslt.rb +0 -90
  733. data/spec/ramaze/template.rb +0 -128
  734. data/spec/snippets/array/put_within.rb +0 -33
  735. data/spec/snippets/divide.rb +0 -19
  736. data/spec/snippets/kernel/__dir__.rb +0 -8
  737. data/spec/snippets/kernel/acquire.rb +0 -71
  738. data/spec/snippets/kernel/constant.rb +0 -23
  739. data/spec/snippets/numeric/filesize_format.rb +0 -12
  740. data/spec/snippets/ordered_set.rb +0 -63
  741. data/spec/snippets/ramaze/caller_info.rb +0 -39
  742. data/spec/snippets/ramaze/caller_lines.rb +0 -30
  743. data/spec/snippets/struct/fill.rb +0 -26
  744. data/spec/snippets/struct/values_at.rb +0 -44
  745. data/spec/snippets/symbol/to_proc.rb +0 -13
  746. data/spec/snippets/thread/into.rb +0 -20
  747. /data/examples/{todolist → app/todolist}/public/favicon.ico +0 -0
  748. /data/examples/{upload → app/upload}/view/index.xhtml +0 -0
  749. /data/examples/{wikore/template → app/wikore/view}/index.xhtml +0 -0
  750. /data/examples/{wiktacular → app/wiktacular}/README +0 -0
  751. /data/examples/{wiktacular → app/wiktacular}/mkd/link/2007-07-20_19-45-51.mkd +0 -0
  752. /data/examples/{wiktacular → app/wiktacular}/mkd/link/current.mkd +0 -0
  753. /data/examples/{wiktacular → app/wiktacular}/mkd/main/2007-07-20_16-31-33.mkd +0 -0
  754. /data/examples/{wiktacular → app/wiktacular}/public/favicon.ico +0 -0
  755. /data/examples/{wiktacular → app/wiktacular}/public/screen.css +0 -0
  756. /data/examples/{wiktacular/template → app/wiktacular/view}/index.xhtml +0 -0
  757. /data/examples/{identity.rb → helpers/identity.rb} +0 -0
  758. /data/examples/{facebook.rb → misc/facebook.rb} +0 -0
  759. /data/examples/templates/{template → view}/external.liquid +0 -0
  760. /data/spec/ramaze/action/{template → view}/bar.xhtml +0 -0
  761. /data/spec/ramaze/action/{template → view}/instancevars/layout.xhtml +0 -0
  762. /data/spec/ramaze/action/{template → view}/other_wrapper.xhtml +0 -0
  763. /data/spec/ramaze/action/{template → view}/single_wrapper.xhtml +0 -0
  764. /data/spec/ramaze/action/{template/sub/sub_wrapper.xhtml → view/sub/sub_wrapper.erb} +0 -0
  765. /data/spec/ramaze/controller/{template → view}/greet.xhtml +0 -0
  766. /data/spec/ramaze/controller/{template → view}/list.xhtml +0 -0
  767. /data/spec/ramaze/controller/{template → view}/other/greet/other.xhtml +0 -0
  768. /data/spec/ramaze/controller/{template → view}/other_wrapper.xhtml +0 -0
  769. /data/spec/ramaze/helper/{template → view}/locals.xhtml +0 -0
  770. /data/spec/ramaze/helper/{template → view}/loop.xhtml +0 -0
  771. /data/spec/ramaze/helper/{template → view}/num.xhtml +0 -0
  772. /data/spec/ramaze/helper/{template → view}/partial.xhtml +0 -0
  773. /data/spec/ramaze/helper/{template → view}/recursive.xhtml +0 -0
  774. /data/spec/ramaze/helper/{template → view}/recursive_local_ivars.xhtml +0 -0
  775. /data/spec/ramaze/helper/{template → view}/recursive_locals.xhtml +0 -0
  776. /data/spec/ramaze/helper/{template → view}/test_template.xhtml +0 -0
  777. /data/spec/ramaze/{template → view}/remarkably/external.rem +0 -0
  778. /data/spec/ramaze/{template → view}/remarkably/sum.rem +0 -0
  779. /data/spec/ramaze/{template → view}/sass/file.css.sass +0 -0
  780. /data/spec/ramaze/{template → view}/tagz/external.tagz +0 -0
  781. /data/spec/ramaze/{template → view}/tagz/sum.tagz +0 -0
@@ -0,0 +1,228 @@
1
+ # @title Testing Ramaze
2
+ # Testing Ramaze
3
+
4
+ Ramaze uses and encourages BDD (Behaviour Driven Development). Ramaze itself is
5
+ tested using [Bacon][bacon] and supports it out of the box, it however isn't
6
+ limited to just Bacon.
7
+
8
+ One might wonder why to bother with writing tests. The answer to this is quite
9
+ simple: stability. Manually testing an application works on a very basic level
10
+ but there are various issues that will arise once your application grows. The
11
+ two biggest issues are human errors and repeatability. Especially the latter
12
+ becomes an issue when your development team grows in size, while the initial
13
+ developer may be willing to manually test every feature every time a change has
14
+ been made others might not. Even worse, there's a chance they won't test their
15
+ code at all and assume it's production ready because on their setup.
16
+
17
+ Writing tests that can be executed using a single command (or automatically)
18
+ makes your life a lot easier as you no longer have to worry about any of these
19
+ issues (assuming people actually write tests). Whenever somebody commits code
20
+ they write a test and you can easily verify if it works on different setups by
21
+ simply running said test.
22
+
23
+ When writing Ruby code you can pick from a large collection of testing libraries
24
+ such as Bacon and [Rspec][rspec] for general tests, [SimpleCov][simplecov] for
25
+ code coverage and [Capybara][capybara] for testing form based actions and the
26
+ like. Of course the list doesn't stop here, there's simply too much to discuss
27
+ everything.
28
+
29
+ ## Bacon
30
+
31
+ Bacon is a small and lightweight Rspec clone that's used by Ramaze and Innate
32
+ and is the recommended tool to use. Each bacon test consists out of at least two
33
+ bits: a "describe" block and an "it" (or "should") block. The describe block can
34
+ be seen as a group of multiple it/should blocks. In most cases these blocks are
35
+ used to specify the name of a class, module, etc. The it/should blocks are used
36
+ for individual tests.
37
+
38
+ Lets take a look at a simple block of code:
39
+
40
+ class Person
41
+ attr_accessor :name
42
+
43
+ def initialize(name = nil)
44
+ @name = name
45
+ end
46
+ end
47
+
48
+ Using Bacon we can test this code as following:
49
+
50
+ require 'bacon'
51
+
52
+ describe 'Person' do
53
+ should 'respond to #name' do
54
+ person = Person.new
55
+
56
+ person.respond_to?(:name).should == true
57
+ person.respond_to?(:name=).should == true
58
+ end
59
+
60
+ should 'set the name in the constructor' do
61
+ person = Person.new('Matz')
62
+
63
+ person.name.should == 'Matz'
64
+ end
65
+
66
+ should 'set the name using #name=' do
67
+ person = Person.new
68
+
69
+ person.name = 'Matz'
70
+
71
+ person.name.should == 'Matz'
72
+ end
73
+ end
74
+
75
+ For more information on the syntax of Bacon and other information see the
76
+ [Bacon Github project][bacon].
77
+
78
+ ### Bacon With Ramaze
79
+
80
+ Ramaze makes it easy to test your code using Bacon by providing you with a small
81
+ helper file. This file can be loaded as following:
82
+
83
+ require 'ramaze/spec/bacon'
84
+
85
+ This file adds two bacon contexts (rack_test and webrat), configures Ramaze to
86
+ only show error messages and adds a few helper methods.
87
+
88
+ ### Bacon and Rack::Test
89
+
90
+ In order to test Ramaze specific code you'll need to use a tool that's capable
91
+ of mocking Rack requests or execute this request in a different way (e.g. using
92
+ Selenium). Rack::Test (gem install rack-test) makes it possible to test your
93
+ Rack based (and thus Ramaze) applications without having to use a webbrowser.
94
+
95
+ Ramaze makes it easy to use Rack::Test by defining a special bacon context:
96
+ "rack_test". This context can be used by calling `behaves_like :rack_test`
97
+ inside your describe block:
98
+
99
+ describe 'Using Rack::Test' do
100
+ behaves_like :rack_test
101
+ end
102
+
103
+ Once loaded you can execute HTTP requests using methods such as `get`:
104
+
105
+ describe 'Using Rack::Test' do
106
+ behaves_like :rack_test
107
+
108
+ should 'display the homepage' do
109
+ get('/').body.should == 'Hello, Rack::Test!'
110
+ end
111
+ end
112
+
113
+ More information about Rack::Test can be found on the [Github page of
114
+ Rack::Test][rack-test].
115
+
116
+ ## Capybara
117
+
118
+ Capybara is a Gem that can be used to simulate browser requests using
119
+ Rack::Test, Selenium or other drivers, it's even capable of testing Javascript
120
+ based code using Selenium.
121
+
122
+ In order to use Capybara you must first install it:
123
+
124
+ $ gem install capybara
125
+
126
+ Once installed you'll have to configure Capybara so it knows how to use your
127
+ Ramaze application. Depending on the testing Gem you're using you'll also have
128
+ to configure said Gem, for this guide it's assumed that you're using Bacon.
129
+
130
+ First you should load and configure Capybara:
131
+
132
+ require 'capybara'
133
+ require 'capybara/dsl'
134
+ require 'bacon'
135
+
136
+ # Tells Capybara which driver to use and where to find your application.
137
+ # Without this Capybara will not work properly.
138
+ Capybara.configure do |config|
139
+ config.default_driver = :rack_test
140
+ config.app = Ramaze.middleware
141
+ end
142
+
143
+ Next you'll have to set up a context for Bacon:
144
+
145
+ shared :capybara do
146
+ Ramaze.setup_dependencies
147
+ extend Capybara::DSL
148
+ end
149
+
150
+ Last but not least, make sure Ramaze knows about your root directories and set
151
+ your mode:
152
+
153
+ Ramaze.options.roots << 'path/to/spec/directory'
154
+ Ramaze.options.mode = :spec
155
+
156
+ Once all of this has been done you can start using Capybara. A simple example of
157
+ this is the following:
158
+
159
+ class MainController < Ramaze::Controller
160
+ map '/'
161
+
162
+ def index
163
+ return 'Hello, Ramaze!'
164
+ end
165
+
166
+ def redirect_request
167
+ redirect(MainController.r(:index))
168
+ end
169
+ end
170
+
171
+ describe 'Testing Ramaze' do
172
+ behaves_like :capybara
173
+
174
+ it 'Go to the homepage' do
175
+ visit '/'
176
+
177
+ page.has_content?('Hello, Ramaze!').should == true
178
+ end
179
+
180
+ it 'Follow redirects' do
181
+ visit '/redirect_request'
182
+
183
+ page.current_path.should == '/index'
184
+ page.has_content?('Hello, Ramaze!').should == true
185
+ end
186
+ end
187
+
188
+ For more information on how to use Capybara with other testing tools, how to use
189
+ the syntax and so on you should resort to the [Capybara Github page][capybara].
190
+
191
+ ## Code Coverage using SimpleCov
192
+
193
+ To test the Ramaze application tests coverage, you can use a tool like
194
+ [SimpleCov][simplecov]. SimpleCov requires minimal effort to get integrated,
195
+ start by installing the gem:
196
+
197
+ gem install simplecov
198
+
199
+ In order to actually measure your code coverage you'll have to tell SimpleCov a
200
+ bit about your application. This is done by loading Simplecov and starting it
201
+ *before* loading all your tests. This can be done by using the following code:
202
+
203
+ require 'simplecov'
204
+
205
+ SimpleCov.start
206
+
207
+ # Load the existing files
208
+ Dir.glob('spec/*.rb').each do |spec_file|
209
+ unless File.basename(spec_file) == 'init.rb'
210
+ require File.expand_path(spec_file)
211
+ end
212
+ end
213
+
214
+ In order to run the file you'd simply invoke the following:
215
+
216
+ bacon spec/init.rb
217
+
218
+ Upon success SimpleCov will create a new directory ``coverage`` with the
219
+ results. You can point your browser to the index.html file inside that directory
220
+ to view the results.
221
+
222
+ For more information on using Simplecov see the [Github project][simplecov].
223
+
224
+ [bacon]: https://github.com/chneukirchen/bacon
225
+ [simplecov]: https://github.com/colszowka/simplecov
226
+ [rspec]: http://relishapp.com/rspec
227
+ [capybara]: http://jnicklas.github.com/capybara/
228
+ [rack-test]: https://github.com/brynary/rack-test
@@ -0,0 +1,85 @@
1
+ # @title Upgrading
2
+ # Upgrading
3
+
4
+ Ramaze strives to be backwards compatible between each release. However, some
5
+ releases may contain changes that are *not* backwards compatible. This document
6
+ describes the steps required to upgrade between these releases.
7
+
8
+ ## Upgrading to Ramaze 2012.12.08
9
+
10
+ Ramaze 2012.12.08 is **not** backwards compatible with previous releases due
11
+ to changes made in Innate 2012.12.
12
+
13
+ ### Middleware
14
+
15
+ In previous versions one could add Rack middleware using `Ramaze.middleware!`.
16
+ This method has been renamed to `Ramaze.middleware` (without the `!`) and its
17
+ use has been changed. Instead of calling `run Ramaze.middleware` one now has to
18
+ use `run Ramaze.core`.
19
+
20
+ An example of the old way of defining middleware:
21
+
22
+ Ramaze.middleware! :dev do |m|
23
+ m.use Rack::Lint
24
+ m.run Ramaze.middleware
25
+ end
26
+
27
+ The new way of defining middleware:
28
+
29
+ Ramaze.middleware :dev do
30
+ use Rack::Lint
31
+ run Ramaze.core
32
+ end
33
+
34
+ ### Commands
35
+
36
+ Various executable commands such as `ramaze start` and `ramaze console` have
37
+ been removed in favour of the use of Rake tasks. For existing projects that do
38
+ not have these Rake tasks you'll have to import them manually, new projects
39
+ will have these tasks automatically. These tasks are located [here][rake
40
+ tasks].
41
+
42
+ These commands were removed as they contained a lot of old and rotting code
43
+ without any tests. Some of them, such as `ramaze start` weren't very useful
44
+ either as most people will use the commands for their webservers (e.g. Thin)
45
+ instead. The use of Rake tasks also makes it possible for people to customize
46
+ these to their liking.
47
+
48
+ ### Snippets
49
+
50
+ Ramaze ships with various snippets that extend various core Ruby classes. In
51
+ Ramaze 2012.12.08 a lot of these snippets have been removed. A list of all the
52
+ removed snippets can be found [here][removed snippets].
53
+
54
+ ### Loggers
55
+
56
+ The following logging classes are no longer available:
57
+
58
+ * Ramaze::Logger::Growl
59
+ * Ramaze::Logger::Analogger
60
+ * Ramaze::Logger::Knotify
61
+ * Ramaze::Logger::Xosd
62
+
63
+ ### Helpers
64
+
65
+ The following helpers have been removed:
66
+
67
+ * Ramaze::Helper::Disqus
68
+ * Ramaze::Helper::Ultraviolet
69
+
70
+ ### Core classes
71
+
72
+ The following core classes have been removed:
73
+
74
+ * Ramaze::AppGraph
75
+ * Ramaze::Plugin
76
+ * Ramaze::MiddlewareCompiler (alias of Innate::MiddlewareCompiler)
77
+
78
+ ### Prototypes
79
+
80
+ The prototype generated by `ramaze create` has been changed. It contains a set
81
+ of Rake tasks, a README, a Gemfile and some other small changes compared to the
82
+ previous prototype. Existing projects are not affected.
83
+
84
+ [rake tasks]: https://github.com/Ramaze/ramaze/blob/master/lib/proto/task/ramaze.rake
85
+ [removed snippets]: https://github.com/Ramaze/ramaze/commit/7e966dcdec50d490eb828f7673f101b1a6b087b3
@@ -0,0 +1,335 @@
1
+ # @title Views
2
+ # Views
3
+
4
+ Views are the last step in the process of a request to a MVC framework such as
5
+ Ramaze. A controller loads a model, the model processes a certain amount of
6
+ data and the controller will then pass this data to a view. The typical flow of
7
+ a MVC framework (or any framework using a view system) looks like the following:
8
+
9
+ Request --> Controller --> View
10
+ ^ |
11
+ | '--> Model
12
+ | |
13
+ '--<-----'
14
+
15
+ The contents of a view is what the visitor of a page will eventually see.
16
+ Looking back at the waiter example introduced in the :doc:`controllers` chapter
17
+ a view can be seen as our dinner. It's the end result we requested for but it
18
+ has been modified according to our order.
19
+
20
+ Ramaze has support for many different template engines and thus views can look
21
+ quite different. By default Ramaze uses a simple template engine called "Etanni",
22
+ Etanni was developed by Michael Fellinger exclusively for Ramaze and is a very
23
+ fast template engine. In this chapter we'll use Etanni to make it a bit easier
24
+ to understand how views work.
25
+
26
+ ## Layouts
27
+
28
+ Ramaze also has a concept of layouts. Layouts are basically views for views and
29
+ are placed in the "layout" directory of your application. These views can be
30
+ used to display generic elements such as a navigation menu for all views.
31
+ Because of this it's recommended to only place action specific markup in your
32
+ views. Global elements such as navigation menus or page titles should go in a
33
+ layout.
34
+
35
+ In order to render a view inside a layout all you have to do is calling the
36
+ "content" instance variable. If we were to use Etanni (more on this later) our
37
+ code would look like the following:
38
+
39
+ <div id="container">
40
+ #{@content}
41
+ </div>
42
+
43
+ In order to use a layout we have to tell Ramaze to do so in our controller.
44
+ Setting a layout can be done in a few different ways. The easiest way is using
45
+ the method "layout" in your controller as following:
46
+
47
+ class Blogs < Ramaze::Controller
48
+ layout 'default'
49
+ end
50
+
51
+ This will tell Ramaze to use the layout "default.xhtml" for the Blogs controller.
52
+ While suited for most people there comes a time when you're in the need of a
53
+ more dynamic way of assigning a layout. This can be done in two different ways.
54
+ The first way is passing a block to the layout() method:
55
+
56
+ class Blogs < Ramaze::Controller
57
+ layout do |path|
58
+ if path === 'index'
59
+ :index_layout
60
+ else
61
+ :alternative_layout
62
+ end
63
+ end
64
+ end
65
+
66
+ In this example two layouts are used, `index_layout` for the index() method and
67
+ `alternative_layout` for all other methods.
68
+
69
+ The second way is using the method `set_layout`. This method works almost
70
+ identical to layout() but has one big advantage: it can set method specific
71
+ layouts. Changing the code posted above so that it uses this method would look
72
+ like the following:
73
+
74
+ class Blogs < Ramaze::Controller
75
+ # Set our default layout
76
+ layout 'alternative_layout'
77
+
78
+ # Set our layout for the index() method
79
+ set_layout 'index_layout' => [:index]
80
+ end
81
+
82
+ The `set_layout` method takes a hash where the keys are the names of the layouts
83
+ to use and the values the methods for which to use each layout. Below is another
84
+ example that specifies a few extra layout/method combinations.
85
+
86
+ class Blogs < Ramaze::Controller
87
+ # Set our default layout
88
+ layout 'default'
89
+
90
+ # Set our layout for the index() method
91
+ set_layout 'main' => [:index, :edit], 'extra' => [:add, :synchronize]
92
+ end
93
+
94
+ <div class="note todo">
95
+ <p>
96
+ <strong>Note:</strong> layouts should be set <strong>outside</strong>
97
+ controller actions. Doing so can lead to unexpected behaviour as the
98
+ layout won't be visible until the next request.
99
+ </p>
100
+ </div>
101
+
102
+ ## Loading Views
103
+
104
+ Loading views can be done in two different ways. When not explicitly calling a
105
+ certain view (or returning any data from the controller) Ramaze will try to load
106
+ a matching view for the current action. If the method "edit" was called Ramaze
107
+ will try to load a view called "edit". Manually sending a response back can be
108
+ done by returning a string from the controller method that is called. Take a
109
+ look at the example below.
110
+
111
+ class Blogs < Ramaze::Controller
112
+ map '/'
113
+
114
+ def index
115
+
116
+ end
117
+
118
+ def custom
119
+ "This is my custom response!"
120
+ end
121
+
122
+ def other
123
+ render_view :foobar
124
+ end
125
+ end
126
+
127
+ If the user were to visit /index Ramaze would try to load the view "index.xhtml"
128
+ (``.xhtml`` is the extension for Etanni templates) but when the user goes to
129
+ /custom he'll always see the message "This is my custom response!". This is
130
+ because Ramaze will use the return value of a controller method as the body for
131
+ the response that will be sent back to the visitor.
132
+
133
+ Let's take a look at the other() method in our controller. As you can see it
134
+ calls a method `render_view`. This method is used to render a different view
135
+ (in this case foobar.xhtml) but without calling it's action, once this is done
136
+ the contents of the view will be returned to the controller. When calling custom
137
+ views you can use any of the following methods:
138
+
139
+ * render\_view
140
+ * render\_partial
141
+ * render\_file
142
+ * render\_custom
143
+ * render\_full
144
+
145
+ ### render\_view
146
+
147
+ As mentioned earlier this method is used to render a view without calling it's
148
+ action. This can be useful if you have several methods that share the same view
149
+ but feed it different data. The usage of this method is quite simple, it's first
150
+ argument is the name of the view to load (without the extension, Ramaze will
151
+ figure this out) and the second argument is a hash containing any additional
152
+ variables to send to the view (more on this later).
153
+
154
+ # Render "foo.xhtml"
155
+ render_view :foo
156
+
157
+ # Render "foo.xhtml" and send some extra data to it
158
+ render_view :foo, :name => "Ramaze"
159
+
160
+ ### render\_partial
161
+
162
+ The `render_partial` method works similar to the `render_view` method but with
163
+ two differences:
164
+
165
+ 1. This method *does* execute a matching action.
166
+ 2. This method *does not* render a layout.
167
+
168
+ This makes the `render_partial` method useful for responses to Ajax calls that
169
+ don't need (or don't want to) load both the view and the layout. This method has
170
+ the same arguments as the `render_view` method.
171
+
172
+ # Render the view "partial.xhtml"
173
+ render_partial :partial
174
+
175
+ # Render the partial "partial.xhtml" and send some extra data to it
176
+ render_partial :partial, :name => "Ramaze"
177
+
178
+ ### render\_file
179
+
180
+ There comes a time when you may want to render a file that's located somewhere
181
+ else. For this there is the `render_file()`` method. This method takes a path,
182
+ either relative or absolute to a file that should be rendered. This can be
183
+ useful if you have a cache directory located outside of your project directory
184
+ and you want to load a view from it.
185
+
186
+ The first argument of this method is a path to a file to render, the second
187
+ argument is a hash with variables just like the other render methods.
188
+ Optionally this method accepts a block that can be used to modify the current
189
+ action.
190
+
191
+ # Render a file located in /tmp
192
+ render_file '/tmp/view.xhtml'
193
+
194
+ # Render a file and send some extra data to it
195
+ render_file '/tmp/view.xhtml', :name => "Ramaze"
196
+
197
+ # Render a file and modify the action
198
+ render_file '/tmp/view.xhtml' do |action|
199
+ # Remove our layout
200
+ action.layout = nil
201
+ end
202
+
203
+ ### render\_custom
204
+
205
+ The render_custom() method can be used to create your personal render method and
206
+ is actually used by methods such as the render_partial method. The syntax is the
207
+ same as the render_file() method except that instead of a full path it's first
208
+ argument should be the name of the action to render.
209
+
210
+ render_custom :index do |action|
211
+ # Remove the layout
212
+ action.layout = nil
213
+
214
+ # Render the view without calling a method
215
+ action.method = nil
216
+ end
217
+
218
+ ### render\_full
219
+
220
+ Last but not least there's the render_full() method. This is the method Ramaze
221
+ uses for calling a controller along with it's views and such. This method takes
222
+ two arguments, the first is the full path of the action to render and the second
223
+ a hash that will be used for the query string parameters. Please note that if this
224
+ method is called in the first request of a client you won't have access to the
225
+ session data and such, any following calls will have access to this data.
226
+
227
+ # Calls Blogs#index
228
+ render_full '/blog/index'
229
+
230
+ # Calls Blogs#edit(10)
231
+ render_full '/blog/edit/10'
232
+
233
+ ### Assigning Data
234
+
235
+ Assigning data to a view is very simple. Ramaze will copy all instance variables
236
+ from the current controller into the view. This means that if you have a variable
237
+ @user set to "Yorick Peterse" this variable can be displayed in your view as
238
+ following (assuming you're using Etanni):
239
+
240
+ <p>Username: #{@user}</p>
241
+
242
+ Besides this you can assign custom data to a view by calling any of the render
243
+ methods and passing a hash to them.
244
+
245
+ Please note that the behavior or the syntax of displaying variables may change
246
+ depending on the template engine you're using. While Etanni allows you to execute
247
+ plain Ruby code in your view a template engine such as Mustache won't and thus
248
+ may have a different syntax. If we wanted to use Mustache and display our @user
249
+ variable it would have to be done as following:
250
+
251
+ <p>Username: {{user}}</p>
252
+
253
+ ## View Mapping
254
+
255
+ Views are saved in the directory "view" and are saved according to the controller
256
+ mapping. If you have a controller that's mapped to /modules/blog the index view
257
+ will be located at view/modules/blog/index.xhtml. Below are a few examples that
258
+ show where the views are located when passing different values to the map()
259
+ method.
260
+
261
+ map '/' # view/index.html, view/edit.xhtml, etc
262
+ map '/blog' # view/blog/index.xhtml, view/blog/edit.xhtml, etc
263
+ map '/modules/blog' # view/modules/blog/index.xhtml, view/modules/blog/edit.xhtml, etc
264
+
265
+ ## Template Engines
266
+
267
+ Ramaze ships with support for the following template engines:
268
+
269
+ * Erector
270
+ * Etanni
271
+ * Erubis
272
+ * Ezamar
273
+ * HAML
274
+ * Less
275
+ * Gestalt
276
+ * Liquid
277
+ * Lokar
278
+ * Mustache
279
+ * Nagoro
280
+ * Remarkably
281
+ * Sass
282
+ * Slippers
283
+ * Tagz
284
+ * Tenjin
285
+
286
+ All of these engines can be used on a per controller basis by calling the
287
+ engine() method and passing a symbol or string to it.
288
+
289
+ class Blogs < Ramaze::Controller
290
+ engine :etanni
291
+ end
292
+
293
+ The engine() method uses the provide() method (more on that in a second) to set
294
+ the given engine for all data sent back to the visitor with a content type of
295
+ "text/html". If you want to use a certain engine for a different content type
296
+ (e.g. application/json) you can do so using the provide() method:
297
+
298
+ class Blogs < Ramaze::Controller
299
+ # Simple right?
300
+ provide(:json, :erb)
301
+
302
+ # Somewhat more verbose
303
+ provide(:json, :engine => :erb)
304
+
305
+ # AWESOME!
306
+ provide(:json, :type => 'application/json') do |action, value|
307
+ # "value" is the response body from our controller's method
308
+ value.to_json
309
+ end
310
+ end
311
+
312
+ It's important to remember that the actions in the provide() method will only
313
+ be executed if it's first parameter (in this case "json") are appended to the
314
+ URL as an extension. A request to /hello would output HTML when using the above
315
+ code, if we wanted JSON we'd have to send a request to /hello.json.
316
+
317
+ The default template engine used by Ramaze is Etanni. Etanni is a small template
318
+ engine that ships with Ramaze (and Innate!) that's extremely fast and has a very
319
+ simple syntax. Statements are wrapped in <?r ?> tags and rendering data can be
320
+ done by wrapping the variables in ``#{}``:
321
+
322
+ # <?r ?> accepts regular Ruby code
323
+ <?r if @user.name === 'yorick' ?>
324
+ <p>Hello Yorick</p>
325
+ <?r else ?>
326
+ <p>And who are you?</p>
327
+ <?r end ?>
328
+
329
+ # Display our name
330
+ #{@user.name}
331
+
332
+ Etanni can be very useful for most project but it's *not* recommended to use it
333
+ when you want to allow a client to manage certain templates (e.g. Email layouts).
334
+ This is because Etanni allows you to execute regular Ruby code and thus someone
335
+ could do some serious damage to your server without even knowing it.
data/lib/proto/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'ramaze'
4
+ gem 'rake'
@@ -0,0 +1,35 @@
1
+ # Ramaze Application
2
+
3
+ Welcome to your new Ramaze application. This README serves as a starting point
4
+ for writing an application using the code you just generated.
5
+
6
+ Once you've started working on your application you'll probably want to update
7
+ this README so that its contents reflect your application's state and purpose.
8
+
9
+ ## Requirements
10
+
11
+ In order to run this application you'll need to have Ramaze 2.0.0 or newer and
12
+ Rake. Optionally you can install Bundler and use it for Gem management, this
13
+ can be done as following:
14
+
15
+ $ gem install bundler
16
+ $ bundle install
17
+
18
+ ## Rake Tasks
19
+
20
+ This application comes with a few predefined Rake tasks that make it easy to
21
+ get started. You can list these tasks by running `rake -T` or `rake -D` (this
22
+ shows longer descriptions for tasks if there are any).
23
+
24
+ For example, to start a Ramaze console using Pry you'd run the following
25
+ command:
26
+
27
+ $ rake ramaze:pry
28
+
29
+ ## Resources
30
+
31
+ In case you need help you can refer to the following resources:
32
+
33
+ * Ramaze website: <http://ramaze.net/>
34
+ * Github repository: <https://github.com/ramaze/ramaze>
35
+ * IRC channel: \#ramaze on Freenode
@@ -0,0 +1 @@
1
+ Dir.glob(File.expand_path('../task/*.rake', __FILE__)) { |task| import task }
data/lib/proto/app.rb ADDED
@@ -0,0 +1,9 @@
1
+ # This file contains your application, it requires dependencies and necessary
2
+ # parts of the application.
3
+ require 'rubygems'
4
+ require 'ramaze'
5
+
6
+ # Make sure that Ramaze knows where you are
7
+ Ramaze.options.roots = [__DIR__]
8
+
9
+ require __DIR__('controller/init')