manveru-ramaze 2009.01 → 2009.04

Sign up to get free protection for your applications and to get access to all the features.
Files changed (540) hide show
  1. data/.mailmap +25 -0
  2. data/CHANGELOG +16750 -0
  3. data/MANIFEST +485 -0
  4. data/README.markdown +0 -5
  5. data/Rakefile +79 -222
  6. data/bin/ramaze +275 -52
  7. data/doc/AUTHORS +36 -28
  8. data/doc/FAQ +1 -1
  9. data/doc/tutorial/todolist.html +1415 -742
  10. data/doc/tutorial/todolist.txt +939 -0
  11. data/examples/app/auth/layout/auth.xhtml +25 -0
  12. data/examples/app/auth/start.rb +23 -0
  13. data/examples/app/auth/view/index.xhtml +4 -0
  14. data/examples/app/auth/view/login.xhtml +20 -0
  15. data/examples/app/auth/view/secret.xhtml +1 -0
  16. data/examples/app/blog/app.rb +69 -0
  17. data/{lib/proto/start.ru → examples/app/blog/config.ru} +8 -7
  18. data/examples/app/blog/controller/comment.rb +45 -0
  19. data/examples/app/blog/controller/entry.rb +85 -0
  20. data/examples/app/blog/controller/init.rb +86 -0
  21. data/examples/app/blog/controller/main.rb +16 -25
  22. data/examples/app/blog/controller/tag.rb +9 -0
  23. data/examples/app/blog/layout/default.nag +31 -0
  24. data/examples/app/blog/model/comment.rb +58 -0
  25. data/examples/app/blog/model/entry.rb +81 -22
  26. data/examples/app/blog/model/init.rb +15 -0
  27. data/examples/app/blog/model/tag.rb +36 -0
  28. data/examples/app/blog/public/css/screen.css +273 -0
  29. data/examples/app/blog/start.rb +3 -5
  30. data/examples/app/blog/view/comment/form.nag +10 -0
  31. data/examples/app/blog/view/comment/show.nag +16 -0
  32. data/examples/app/blog/view/entry/edit.nag +14 -0
  33. data/examples/app/blog/view/entry/feed.atom.nag +8 -0
  34. data/examples/app/blog/view/entry/feed.rss.nag +7 -0
  35. data/examples/app/blog/view/entry/index.nag +7 -0
  36. data/examples/app/blog/view/entry/new.nag +13 -0
  37. data/examples/app/blog/view/entry/show.nag +36 -0
  38. data/examples/app/blog/view/feed.atom.nag +18 -0
  39. data/examples/app/blog/view/feed.rss.nag +25 -0
  40. data/examples/app/blog/view/index.nag +6 -0
  41. data/examples/app/blog/view/tag/index.nag +5 -0
  42. data/examples/app/chat/{view/layout.xhtml → layout/default.nag} +1 -1
  43. data/examples/app/chat/model/history.rb +13 -11
  44. data/examples/app/chat/public/css/chat.css +9 -13
  45. data/examples/app/chat/public/js/chat.js +6 -0
  46. data/examples/app/chat/start.rb +16 -17
  47. data/examples/app/chat/view/{chat.xhtml → chat.nag} +0 -0
  48. data/examples/app/chat/view/{index.xhtml → index.nag} +0 -0
  49. data/examples/app/sourceview/{sourceview.rb → start.rb} +36 -34
  50. data/examples/app/sourceview/{template → view}/index.haml +0 -0
  51. data/examples/app/todolist/controller/init.rb +10 -0
  52. data/examples/app/todolist/controller/task.rb +39 -0
  53. data/examples/app/todolist/layout/default.xhtml +14 -0
  54. data/examples/app/todolist/model/init.rb +14 -0
  55. data/examples/app/todolist/model/task.rb +39 -0
  56. data/examples/app/todolist/public/css/screen.css +63 -0
  57. data/examples/app/todolist/start.rb +6 -6
  58. data/examples/app/todolist/view/index.xhtml +29 -0
  59. data/examples/app/wikore/spec/wikore.rb +4 -6
  60. data/examples/app/wikore/src/controller.rb +9 -11
  61. data/examples/app/wikore/src/model.rb +7 -10
  62. data/examples/app/wikore/start.rb +1 -1
  63. data/examples/app/wikore/{template → view}/index.xhtml +0 -0
  64. data/examples/basic/element.rb +5 -3
  65. data/examples/basic/gestalt.rb +1 -2
  66. data/examples/basic/hello.rb +3 -4
  67. data/examples/basic/layout.rb +2 -2
  68. data/examples/basic/linking.rb +7 -7
  69. data/examples/basic/partial.rb +3 -5
  70. data/examples/basic/simple.rb +1 -5
  71. data/examples/helpers/cache.rb +5 -5
  72. data/examples/helpers/httpdigest.rb +31 -32
  73. data/examples/misc/memleak_detector.rb +17 -12
  74. data/examples/misc/rapp.rb +28 -17
  75. data/examples/misc/serve_directory.rb +6 -0
  76. data/examples/templates/template_erubis.rb +9 -10
  77. data/examples/templates/template_ezamar.rb +8 -7
  78. data/examples/templates/template_haml.rb +6 -7
  79. data/examples/templates/template_liquid.rb +20 -19
  80. data/examples/templates/template_markaby.rb +2 -3
  81. data/examples/templates/template_nagoro.rb +6 -7
  82. data/examples/templates/template_redcloth.rb +8 -9
  83. data/examples/templates/template_remarkably.rb +7 -8
  84. data/examples/templates/template_tenjin.rb +6 -7
  85. data/examples/templates/{template → view}/external.haml +4 -4
  86. data/examples/templates/{template → view}/external.liquid +0 -0
  87. data/examples/templates/{template → view}/external.mab +0 -0
  88. data/examples/templates/{template → view}/external.nag +4 -4
  89. data/examples/templates/{template → view}/external.redcloth +4 -4
  90. data/examples/templates/{template → view}/external.rem +4 -4
  91. data/examples/templates/{template → view}/external.rhtml +6 -6
  92. data/examples/templates/{template → view}/external.tenjin +4 -4
  93. data/examples/templates/{template → view}/external.zmr +6 -6
  94. data/lib/proto/app.rb +15 -0
  95. data/lib/proto/config.ru +16 -0
  96. data/lib/proto/controller/init.rb +2 -2
  97. data/lib/proto/{view/page.xhtml → layout/default.xhtml} +1 -4
  98. data/lib/proto/public/css/screen.css +30 -0
  99. data/lib/proto/public/js/jquery.js +2121 -1294
  100. data/lib/proto/spec/main.rb +11 -15
  101. data/lib/proto/start.rb +6 -10
  102. data/lib/proto/view/index.xhtml +34 -27
  103. data/lib/ramaze/app.rb +124 -0
  104. data/lib/ramaze/cache/localmemcache.rb +56 -0
  105. data/lib/ramaze/cache/memcache.rb +99 -0
  106. data/lib/ramaze/cache/sequel.rb +67 -0
  107. data/lib/ramaze/cache.rb +9 -104
  108. data/lib/ramaze/contrib/app_graph.rb +64 -0
  109. data/lib/ramaze/contrib/email.rb +2 -0
  110. data/lib/ramaze/contrib/gzip_filter.rb +1 -69
  111. data/lib/ramaze/contrib/rest.rb +20 -15
  112. data/lib/ramaze/contrib/sequel/create_join.rb +1 -0
  113. data/lib/ramaze/contrib/sequel/form_field.rb +4 -4
  114. data/lib/ramaze/contrib/sequel/image.rb +9 -11
  115. data/lib/ramaze/contrib/sequel/relation.rb +21 -5
  116. data/lib/ramaze/controller/default.rb +12 -0
  117. data/lib/ramaze/controller.rb +63 -257
  118. data/lib/ramaze/current.rb +3 -106
  119. data/lib/ramaze/files.rb +24 -0
  120. data/lib/ramaze/gestalt.rb +6 -1
  121. data/lib/ramaze/helper/auth.rb +68 -104
  122. data/lib/ramaze/helper/bench.rb +0 -2
  123. data/lib/ramaze/helper/cache.rb +71 -120
  124. data/lib/ramaze/helper/disqus.rb +26 -0
  125. data/lib/ramaze/helper/flash.rb +32 -29
  126. data/lib/ramaze/helper/form.rb +83 -252
  127. data/lib/ramaze/helper/formatting.rb +32 -5
  128. data/lib/ramaze/helper/gestalt.rb +1 -1
  129. data/lib/ramaze/helper/gravatar.rb +66 -19
  130. data/lib/ramaze/helper/httpdigest.rb +75 -66
  131. data/lib/ramaze/helper/link.rb +62 -109
  132. data/lib/ramaze/helper/localize.rb +138 -0
  133. data/lib/ramaze/helper/markaby.rb +1 -1
  134. data/lib/ramaze/helper/maruku.rb +10 -3
  135. data/lib/ramaze/helper/pager.rb +2 -1
  136. data/lib/ramaze/helper/paginate.rb +17 -9
  137. data/lib/ramaze/helper/partial.rb +86 -91
  138. data/lib/ramaze/helper/remarkably.rb +14 -0
  139. data/lib/ramaze/helper/request_accessor.rb +16 -0
  140. data/lib/ramaze/helper/sequel_form.rb +284 -0
  141. data/lib/ramaze/helper/simple_captcha.rb +46 -16
  142. data/lib/ramaze/helper/stack.rb +64 -66
  143. data/lib/ramaze/helper/user.rb +141 -22
  144. data/lib/ramaze/helper/xhtml.rb +27 -16
  145. data/lib/ramaze/helper.rb +6 -81
  146. data/lib/ramaze/log/analogger.rb +1 -2
  147. data/lib/ramaze/log/informer.rb +1 -0
  148. data/lib/ramaze/log/logging.rb +2 -8
  149. data/lib/ramaze/log.rb +19 -7
  150. data/lib/ramaze/middleware_compiler.rb +13 -0
  151. data/lib/ramaze/plugin.rb +69 -0
  152. data/lib/ramaze/reloader.rb +6 -4
  153. data/lib/ramaze/request.rb +118 -0
  154. data/lib/ramaze/{current/response.rb → response.rb} +9 -12
  155. data/lib/ramaze/setup.rb +93 -33
  156. data/lib/ramaze/snippets/ramaze/deprecated.rb +3 -1
  157. data/lib/ramaze/snippets/{dictionary.rb → ramaze/dictionary.rb} +0 -104
  158. data/lib/ramaze/spec/helper/bacon.rb +4 -3
  159. data/lib/ramaze/spec/helper/snippets.rb +3 -1
  160. data/lib/ramaze/spec/helper/template_examples.rb +29 -0
  161. data/lib/ramaze/spec.rb +34 -1
  162. data/lib/ramaze/tool/create.rb +1 -1
  163. data/lib/ramaze/version.rb +1 -4
  164. data/lib/ramaze/view/erubis.rb +23 -0
  165. data/lib/ramaze/view/ezamar.rb +23 -0
  166. data/lib/ramaze/view/haml.rb +16 -0
  167. data/lib/ramaze/view/liquid.rb +100 -0
  168. data/lib/ramaze/view/maruku.rb +14 -0
  169. data/lib/ramaze/view/nagoro/render_partial.rb +32 -0
  170. data/lib/ramaze/view/nagoro.rb +44 -0
  171. data/lib/ramaze/view/redcloth.rb +21 -0
  172. data/lib/ramaze/view/remarkably.rb +21 -0
  173. data/lib/ramaze/view/sass.rb +21 -0
  174. data/lib/ramaze/view/tagz.rb +63 -0
  175. data/lib/ramaze/view/tenjin.rb +29 -0
  176. data/lib/ramaze/view.rb +48 -0
  177. data/lib/ramaze.rb +78 -129
  178. data/lib/vendor/etag.rb +20 -0
  179. data/lib/vendor/route_exceptions.rb +48 -0
  180. data/ramaze.gemspec +38 -605
  181. data/spec/contrib/rest.rb +28 -0
  182. data/spec/examples/caching.rb +1 -2
  183. data/spec/examples/css.rb +1 -2
  184. data/spec/examples/element.rb +1 -2
  185. data/spec/examples/hello.rb +2 -3
  186. data/spec/examples/helpers/httpdigest.rb +64 -0
  187. data/spec/examples/linking.rb +1 -2
  188. data/spec/examples/simple.rb +1 -6
  189. data/spec/examples/templates/template_erubis.rb +3 -17
  190. data/spec/examples/templates/template_ezamar.rb +3 -18
  191. data/spec/examples/templates/template_haml.rb +3 -17
  192. data/spec/examples/templates/template_liquid.rb +3 -23
  193. data/spec/examples/templates/template_markaby.rb +6 -19
  194. data/spec/examples/templates/template_nagoro.rb +9 -0
  195. data/spec/examples/templates/template_redcloth.rb +3 -22
  196. data/spec/examples/templates/template_remarkably.rb +3 -17
  197. data/spec/examples/templates/template_tenjin.rb +3 -22
  198. data/spec/helper.rb +10 -3
  199. data/spec/ramaze/action/render.rb +5 -15
  200. data/spec/ramaze/action/view/other_wrapper.erb +1 -0
  201. data/spec/ramaze/action/view/sub/sub_wrapper.erb +1 -0
  202. data/spec/ramaze/app.rb +47 -0
  203. data/spec/ramaze/cache/localmemcache.rb +49 -0
  204. data/spec/ramaze/cache/memcache.rb +54 -0
  205. data/spec/ramaze/cache/sequel.rb +51 -0
  206. data/spec/ramaze/controller/actionless_templates.rb +14 -10
  207. data/spec/ramaze/controller/mapping.rb +57 -0
  208. data/spec/ramaze/controller/provide_inheritance.rb +47 -0
  209. data/spec/ramaze/controller/resolve.rb +7 -9
  210. data/spec/ramaze/controller/subclass.rb +13 -13
  211. data/spec/ramaze/controller/template_resolving.rb +21 -57
  212. data/spec/ramaze/dispatcher/directory.rb +38 -24
  213. data/spec/ramaze/dispatcher/file.rb +55 -44
  214. data/spec/ramaze/error.rb +56 -62
  215. data/spec/ramaze/files/public_1/plain.txt +1 -0
  216. data/spec/ramaze/files/public_2/rich.txt +1 -0
  217. data/spec/ramaze/files.rb +29 -0
  218. data/spec/ramaze/gestalt.rb +2 -4
  219. data/spec/ramaze/helper/auth.rb +41 -24
  220. data/spec/ramaze/helper/bench.rb +17 -0
  221. data/spec/ramaze/helper/cache.rb +65 -101
  222. data/spec/ramaze/helper/flash.rb +20 -112
  223. data/spec/ramaze/helper/form.rb +336 -98
  224. data/spec/ramaze/helper/formatting.rb +66 -9
  225. data/spec/ramaze/helper/gestalt.rb +15 -0
  226. data/spec/ramaze/helper/gravatar.rb +40 -0
  227. data/spec/ramaze/helper/httpdigest.rb +144 -0
  228. data/spec/ramaze/helper/link.rb +25 -100
  229. data/spec/ramaze/helper/localize.rb +60 -0
  230. data/spec/ramaze/helper/maruku.rb +19 -0
  231. data/spec/ramaze/helper/pager.rb +13 -16
  232. data/spec/ramaze/helper/paginate.rb +68 -0
  233. data/spec/ramaze/helper/request_accessor.rb +19 -0
  234. data/spec/ramaze/helper/sequel_form.rb +89 -0
  235. data/spec/ramaze/helper/simple_captcha.rb +35 -12
  236. data/spec/ramaze/helper/stack.rb +52 -39
  237. data/spec/ramaze/helper/user.rb +39 -10
  238. data/spec/ramaze/helper/xhtml.rb +32 -0
  239. data/spec/ramaze/log/informer.rb +20 -19
  240. data/spec/ramaze/log/logging.rb +63 -0
  241. data/spec/ramaze/params.rb +8 -11
  242. data/spec/ramaze/request.rb +57 -181
  243. data/spec/ramaze/view/erubis/external.rhtml +8 -0
  244. data/spec/ramaze/view/erubis/sum.rhtml +1 -0
  245. data/spec/ramaze/view/erubis.rb +73 -0
  246. data/spec/ramaze/view/ezamar/external.zmr +8 -0
  247. data/spec/ramaze/view/ezamar/sum.zmr +1 -0
  248. data/spec/ramaze/view/ezamar.rb +73 -0
  249. data/spec/ramaze/view/haml/external.haml +5 -0
  250. data/spec/ramaze/view/haml/sum.haml +2 -0
  251. data/spec/ramaze/view/haml.rb +86 -0
  252. data/spec/ramaze/view/liquid/external.liquid +8 -0
  253. data/spec/ramaze/view/liquid/sum.liquid +1 -0
  254. data/spec/ramaze/view/liquid.rb +73 -0
  255. data/spec/ramaze/view/nagoro/external.nag +8 -0
  256. data/spec/ramaze/view/nagoro/sum.nag +1 -0
  257. data/spec/ramaze/view/nagoro.rb +73 -0
  258. data/spec/ramaze/view/redcloth/external.redcloth +8 -0
  259. data/spec/ramaze/view/redcloth.rb +66 -0
  260. data/spec/ramaze/{template → view}/remarkably/external.rem +0 -0
  261. data/spec/ramaze/{template → view}/remarkably/sum.rem +0 -0
  262. data/spec/ramaze/view/remarkably.rb +49 -0
  263. data/spec/ramaze/{template → view}/sass/file.css.sass +0 -0
  264. data/spec/ramaze/view/sass.rb +73 -0
  265. data/spec/ramaze/{template → view}/tagz/external.tagz +0 -0
  266. data/spec/ramaze/{template → view}/tagz/sum.tagz +0 -0
  267. data/spec/ramaze/{template → view}/tagz.rb +18 -29
  268. data/spec/ramaze/view/tenjin/external.rbhtml +8 -0
  269. data/spec/ramaze/view/tenjin/sum.rbhtml +1 -0
  270. data/spec/ramaze/view/tenjin.rb +57 -0
  271. data/spec/ramaze/view.rb +36 -0
  272. data/spec/snippets/ramaze/dictionary.rb +110 -0
  273. data/spec/snippets/ramaze/struct.rb +12 -0
  274. data/spec/snippets/thread/into.rb +3 -14
  275. data/tasks/authors.rake +30 -0
  276. data/tasks/bacon.rake +66 -0
  277. data/tasks/changelog.rake +18 -0
  278. data/tasks/copyright.rake +21 -0
  279. data/tasks/gem.rake +22 -0
  280. data/tasks/gem_installer.rake +76 -0
  281. data/{rake_tasks → tasks}/git.rake +10 -5
  282. data/tasks/grancher.rake +12 -0
  283. data/tasks/install_dependencies.rake +6 -0
  284. data/tasks/jquery.rake +15 -0
  285. data/tasks/manifest.rake +4 -0
  286. data/{rake_tasks/metric.rake → tasks/metric_changes.rake} +6 -6
  287. data/tasks/rcov.rake +23 -0
  288. data/tasks/release.rake +51 -0
  289. data/tasks/reversion.rake +8 -0
  290. data/tasks/setup.rake +24 -0
  291. data/tasks/todo.rake +29 -0
  292. data/tasks/traits.rake +21 -0
  293. data/tasks/yard.rake +4 -0
  294. metadata +188 -285
  295. data/benchmark/suite/template_amrita2.rb +0 -17
  296. data/doc/readme_chunks/appendix.txt +0 -10
  297. data/doc/readme_chunks/examples.txt +0 -38
  298. data/doc/readme_chunks/features.txt +0 -148
  299. data/doc/readme_chunks/getting_help.txt +0 -5
  300. data/doc/readme_chunks/getting_started.txt +0 -18
  301. data/doc/readme_chunks/installing.txt +0 -92
  302. data/doc/readme_chunks/introduction.txt +0 -18
  303. data/doc/readme_chunks/principles.txt +0 -56
  304. data/doc/readme_chunks/thanks.txt +0 -59
  305. data/examples/app/auth/auth.rb +0 -54
  306. data/examples/app/auth/template/layout.haml +0 -20
  307. data/examples/app/auth/template/login.haml +0 -16
  308. data/examples/app/blog/public/styles/blog.css +0 -132
  309. data/examples/app/blog/view/edit.xhtml +0 -17
  310. data/examples/app/blog/view/index.xhtml +0 -17
  311. data/examples/app/blog/view/layout.xhtml +0 -11
  312. data/examples/app/blog/view/new.xhtml +0 -16
  313. data/examples/app/rapaste/Rakefile +0 -34
  314. data/examples/app/rapaste/controller/paste.rb +0 -101
  315. data/examples/app/rapaste/model/paste.rb +0 -58
  316. data/examples/app/rapaste/public/css/active4d.css +0 -114
  317. data/examples/app/rapaste/public/css/all_hallows_eve.css +0 -72
  318. data/examples/app/rapaste/public/css/amy.css +0 -147
  319. data/examples/app/rapaste/public/css/blackboard.css +0 -88
  320. data/examples/app/rapaste/public/css/brilliance_black.css +0 -605
  321. data/examples/app/rapaste/public/css/brilliance_dull.css +0 -599
  322. data/examples/app/rapaste/public/css/cobalt.css +0 -149
  323. data/examples/app/rapaste/public/css/dawn.css +0 -121
  324. data/examples/app/rapaste/public/css/display.css +0 -197
  325. data/examples/app/rapaste/public/css/eiffel.css +0 -121
  326. data/examples/app/rapaste/public/css/espresso_libre.css +0 -109
  327. data/examples/app/rapaste/public/css/idle.css +0 -62
  328. data/examples/app/rapaste/public/css/iplastic.css +0 -80
  329. data/examples/app/rapaste/public/css/lazy.css +0 -73
  330. data/examples/app/rapaste/public/css/mac_classic.css +0 -123
  331. data/examples/app/rapaste/public/css/magicwb_amiga.css +0 -104
  332. data/examples/app/rapaste/public/css/pastels_on_dark.css +0 -188
  333. data/examples/app/rapaste/public/css/slush_poppies.css +0 -85
  334. data/examples/app/rapaste/public/css/spacecadet.css +0 -51
  335. data/examples/app/rapaste/public/css/sunburst.css +0 -180
  336. data/examples/app/rapaste/public/css/twilight.css +0 -137
  337. data/examples/app/rapaste/public/css/zenburnesque.css +0 -91
  338. data/examples/app/rapaste/public/js/jquery.js +0 -11
  339. data/examples/app/rapaste/spec/rapaste.rb +0 -51
  340. data/examples/app/rapaste/start.rb +0 -25
  341. data/examples/app/rapaste/view/copy.xhtml +0 -10
  342. data/examples/app/rapaste/view/index.xhtml +0 -9
  343. data/examples/app/rapaste/view/layout.xhtml +0 -25
  344. data/examples/app/rapaste/view/list.xhtml +0 -29
  345. data/examples/app/rapaste/view/search.xhtml +0 -41
  346. data/examples/app/rapaste/view/view.xhtml +0 -40
  347. data/examples/app/todolist/README +0 -1
  348. data/examples/app/todolist/public/js/jquery.js +0 -1923
  349. data/examples/app/todolist/public/ramaze.png +0 -0
  350. data/examples/app/todolist/spec/todolist.rb +0 -132
  351. data/examples/app/todolist/src/controller/main.rb +0 -70
  352. data/examples/app/todolist/src/element/page.rb +0 -31
  353. data/examples/app/todolist/src/model.rb +0 -14
  354. data/examples/app/todolist/template/index.xhtml +0 -17
  355. data/examples/app/todolist/template/new.xhtml +0 -7
  356. data/examples/helpers/provide.rb +0 -23
  357. data/examples/misc/simple_auth.rb +0 -35
  358. data/examples/templates/template/external.amrita +0 -19
  359. data/examples/templates/template/external.xsl +0 -57
  360. data/examples/templates/template_amrita2.rb +0 -74
  361. data/examples/templates/template_xslt.rb +0 -49
  362. data/lib/proto/public/css/ramaze_error.css +0 -90
  363. data/lib/proto/view/error.xhtml +0 -64
  364. data/lib/ramaze/action/render.rb +0 -192
  365. data/lib/ramaze/action.rb +0 -159
  366. data/lib/ramaze/adapter/base.rb +0 -128
  367. data/lib/ramaze/adapter/cgi.rb +0 -20
  368. data/lib/ramaze/adapter/ebb.rb +0 -18
  369. data/lib/ramaze/adapter/evented_mongrel.rb +0 -7
  370. data/lib/ramaze/adapter/fake.rb +0 -12
  371. data/lib/ramaze/adapter/fcgi.rb +0 -18
  372. data/lib/ramaze/adapter/lsws.rb +0 -19
  373. data/lib/ramaze/adapter/mongrel.rb +0 -21
  374. data/lib/ramaze/adapter/scgi.rb +0 -18
  375. data/lib/ramaze/adapter/swiftiplied_mongrel.rb +0 -7
  376. data/lib/ramaze/adapter/thin.rb +0 -17
  377. data/lib/ramaze/adapter/webrick.rb +0 -43
  378. data/lib/ramaze/adapter.rb +0 -97
  379. data/lib/ramaze/cache/file.rb +0 -71
  380. data/lib/ramaze/cache/memcached.rb +0 -69
  381. data/lib/ramaze/cache/memory.rb +0 -6
  382. data/lib/ramaze/cache/yaml_store.rb +0 -68
  383. data/lib/ramaze/contrib/file_cache.rb +0 -3
  384. data/lib/ramaze/contrib/gems.rb +0 -78
  385. data/lib/ramaze/contrib/sequel/fill.rb +0 -12
  386. data/lib/ramaze/contrib/sequel_cache.rb +0 -92
  387. data/lib/ramaze/contrib.rb +0 -82
  388. data/lib/ramaze/controller/error.rb +0 -46
  389. data/lib/ramaze/controller/main.rb +0 -2
  390. data/lib/ramaze/controller/resolve.rb +0 -278
  391. data/lib/ramaze/current/request.rb +0 -222
  392. data/lib/ramaze/current/session/flash.rb +0 -87
  393. data/lib/ramaze/current/session/hash.rb +0 -62
  394. data/lib/ramaze/current/session.rb +0 -179
  395. data/lib/ramaze/dispatcher/action.rb +0 -50
  396. data/lib/ramaze/dispatcher/directory.rb +0 -119
  397. data/lib/ramaze/dispatcher/error.rb +0 -108
  398. data/lib/ramaze/dispatcher/file.rb +0 -100
  399. data/lib/ramaze/dispatcher.rb +0 -145
  400. data/lib/ramaze/error.rb +0 -24
  401. data/lib/ramaze/helper/aspect.rb +0 -106
  402. data/lib/ramaze/helper/cgi.rb +0 -39
  403. data/lib/ramaze/helper/redirect.rb +0 -100
  404. data/lib/ramaze/helper/rest.rb +0 -43
  405. data/lib/ramaze/helper/sendfile.rb +0 -16
  406. data/lib/ramaze/option/dsl.rb +0 -45
  407. data/lib/ramaze/option/holder.rb +0 -131
  408. data/lib/ramaze/option/merger.rb +0 -108
  409. data/lib/ramaze/option.rb +0 -156
  410. data/lib/ramaze/route.rb +0 -97
  411. data/lib/ramaze/snippets/object/traits.rb +0 -76
  412. data/lib/ramaze/snippets/ramaze/caller_info.rb +0 -30
  413. data/lib/ramaze/snippets/ramaze/caller_lines.rb +0 -51
  414. data/lib/ramaze/snippets/ramaze/state.rb +0 -86
  415. data/lib/ramaze/snippets/string/each.rb +0 -19
  416. data/lib/ramaze/spec/helper/browser.rb +0 -88
  417. data/lib/ramaze/spec/helper/mock_http.rb +0 -64
  418. data/lib/ramaze/spec/helper/requester.rb +0 -63
  419. data/lib/ramaze/spec/helper/simple_http.rb +0 -434
  420. data/lib/ramaze/spec/helper.rb +0 -135
  421. data/lib/ramaze/store/default.rb +0 -109
  422. data/lib/ramaze/template/amrita2.rb +0 -45
  423. data/lib/ramaze/template/builder.rb +0 -28
  424. data/lib/ramaze/template/erubis.rb +0 -41
  425. data/lib/ramaze/template/ezamar/element.rb +0 -169
  426. data/lib/ramaze/template/ezamar/engine.rb +0 -76
  427. data/lib/ramaze/template/ezamar/morpher.rb +0 -135
  428. data/lib/ramaze/template/ezamar/render_partial.rb +0 -39
  429. data/lib/ramaze/template/ezamar/textpow.syntax +0 -34
  430. data/lib/ramaze/template/ezamar.rb +0 -42
  431. data/lib/ramaze/template/haml.rb +0 -37
  432. data/lib/ramaze/template/liquid.rb +0 -36
  433. data/lib/ramaze/template/markaby.rb +0 -52
  434. data/lib/ramaze/template/maruku.rb +0 -34
  435. data/lib/ramaze/template/nagoro.rb +0 -52
  436. data/lib/ramaze/template/none.rb +0 -14
  437. data/lib/ramaze/template/redcloth.rb +0 -25
  438. data/lib/ramaze/template/remarkably.rb +0 -38
  439. data/lib/ramaze/template/sass.rb +0 -37
  440. data/lib/ramaze/template/tagz.rb +0 -79
  441. data/lib/ramaze/template/tenjin.rb +0 -74
  442. data/lib/ramaze/template/xslt.rb +0 -100
  443. data/lib/ramaze/template.rb +0 -87
  444. data/lib/ramaze/tool/daemonize.rb +0 -37
  445. data/lib/ramaze/tool/localize.rb +0 -202
  446. data/lib/ramaze/tool/mime.rb +0 -35
  447. data/lib/ramaze/tool/mime_types.yaml +0 -615
  448. data/lib/ramaze/tool/record.rb +0 -6
  449. data/lib/ramaze/tool.rb +0 -9
  450. data/lib/ramaze/trinity.rb +0 -16
  451. data/lib/vendor/bacon.rb +0 -323
  452. data/rake_tasks/conf.rake +0 -71
  453. data/rake_tasks/coverage.rake +0 -45
  454. data/rake_tasks/gem.rake +0 -74
  455. data/rake_tasks/maintenance.rake +0 -386
  456. data/rake_tasks/release.rake +0 -76
  457. data/rake_tasks/spec.rake +0 -61
  458. data/spec/contrib/profiling.rb +0 -29
  459. data/spec/contrib/sequel/fill.rb +0 -47
  460. data/spec/examples/simple_auth.rb +0 -32
  461. data/spec/examples/templates/template_amrita2.rb +0 -16
  462. data/spec/ramaze/action/basics.rb +0 -36
  463. data/spec/ramaze/action/cache.rb +0 -87
  464. data/spec/ramaze/action/file_cache.rb +0 -70
  465. data/spec/ramaze/action/layout.rb +0 -190
  466. data/spec/ramaze/adapter/ebb.rb +0 -12
  467. data/spec/ramaze/adapter/mongrel.rb +0 -12
  468. data/spec/ramaze/adapter/record.rb +0 -31
  469. data/spec/ramaze/adapter/webrick.rb +0 -12
  470. data/spec/ramaze/adapter.rb +0 -49
  471. data/spec/ramaze/cache.rb +0 -140
  472. data/spec/ramaze/controller.rb +0 -180
  473. data/spec/ramaze/current/request.rb +0 -30
  474. data/spec/ramaze/current/session.rb +0 -97
  475. data/spec/ramaze/dispatcher.rb +0 -31
  476. data/spec/ramaze/element.rb +0 -107
  477. data/spec/ramaze/helper/aspect.rb +0 -101
  478. data/spec/ramaze/helper/cgi.rb +0 -43
  479. data/spec/ramaze/helper/file.rb +0 -18
  480. data/spec/ramaze/helper/partial.rb +0 -88
  481. data/spec/ramaze/helper/redirect.rb +0 -112
  482. data/spec/ramaze/localize.rb +0 -89
  483. data/spec/ramaze/morpher.rb +0 -111
  484. data/spec/ramaze/public/error404.xhtml +0 -1
  485. data/spec/ramaze/request/ebb.rb +0 -9
  486. data/spec/ramaze/request/mongrel.rb +0 -9
  487. data/spec/ramaze/request/thin.rb +0 -9
  488. data/spec/ramaze/request/webrick.rb +0 -5
  489. data/spec/ramaze/rewrite.rb +0 -36
  490. data/spec/ramaze/route.rb +0 -131
  491. data/spec/ramaze/session.rb +0 -94
  492. data/spec/ramaze/store/default.rb +0 -71
  493. data/spec/ramaze/template/amrita2/external.amrita +0 -6
  494. data/spec/ramaze/template/amrita2/sum.amrita +0 -1
  495. data/spec/ramaze/template/amrita2.rb +0 -50
  496. data/spec/ramaze/template/builder/external.rxml +0 -3
  497. data/spec/ramaze/template/builder.rb +0 -51
  498. data/spec/ramaze/template/erubis/sum.rhtml +0 -1
  499. data/spec/ramaze/template/erubis.rb +0 -41
  500. data/spec/ramaze/template/ezamar/another/long/action.zmr +0 -1
  501. data/spec/ramaze/template/ezamar/combined.zmr +0 -1
  502. data/spec/ramaze/template/ezamar/file_only.zmr +0 -1
  503. data/spec/ramaze/template/ezamar/index.zmr +0 -1
  504. data/spec/ramaze/template/ezamar/nested.zmr +0 -1
  505. data/spec/ramaze/template/ezamar/other__index.xhtml +0 -1
  506. data/spec/ramaze/template/ezamar/some__long__action.zmr +0 -1
  507. data/spec/ramaze/template/ezamar/sum.zmr +0 -1
  508. data/spec/ramaze/template/ezamar.rb +0 -63
  509. data/spec/ramaze/template/haml/index.haml +0 -5
  510. data/spec/ramaze/template/haml/locals.haml +0 -2
  511. data/spec/ramaze/template/haml/with_vars.haml +0 -4
  512. data/spec/ramaze/template/haml.rb +0 -66
  513. data/spec/ramaze/template/liquid/index.liquid +0 -1
  514. data/spec/ramaze/template/liquid/products.liquid +0 -45
  515. data/spec/ramaze/template/liquid.rb +0 -99
  516. data/spec/ramaze/template/markaby/external.mab +0 -8
  517. data/spec/ramaze/template/markaby/sum.mab +0 -1
  518. data/spec/ramaze/template/markaby.rb +0 -61
  519. data/spec/ramaze/template/nagoro/another/long/action.nag +0 -1
  520. data/spec/ramaze/template/nagoro/combined.nag +0 -1
  521. data/spec/ramaze/template/nagoro/file_only.nag +0 -1
  522. data/spec/ramaze/template/nagoro/index.nag +0 -1
  523. data/spec/ramaze/template/nagoro/nested.nag +0 -1
  524. data/spec/ramaze/template/nagoro/some__long__action.nag +0 -1
  525. data/spec/ramaze/template/nagoro/sum.nag +0 -1
  526. data/spec/ramaze/template/nagoro.rb +0 -64
  527. data/spec/ramaze/template/redcloth/external.redcloth +0 -1
  528. data/spec/ramaze/template/redcloth.rb +0 -38
  529. data/spec/ramaze/template/remarkably.rb +0 -58
  530. data/spec/ramaze/template/sass.rb +0 -69
  531. data/spec/ramaze/template/tenjin/external.tenjin +0 -1
  532. data/spec/ramaze/template/tenjin.rb +0 -47
  533. data/spec/ramaze/template/xslt/concat_words.xsl +0 -16
  534. data/spec/ramaze/template/xslt/index.xsl +0 -14
  535. data/spec/ramaze/template/xslt/products.xsl +0 -32
  536. data/spec/ramaze/template/xslt/ruby_version.xsl +0 -14
  537. data/spec/ramaze/template/xslt.rb +0 -90
  538. data/spec/ramaze/template.rb +0 -128
  539. data/spec/snippets/ramaze/caller_info.rb +0 -39
  540. data/spec/snippets/ramaze/caller_lines.rb +0 -30
@@ -1,278 +0,0 @@
1
- # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
- # All files in this distribution are subject to the terms of the Ruby license.
3
-
4
- module Ramaze
5
- class Controller
6
- # TODO:
7
- # * fix caching, see todos below
8
- # FILTER = [ :cached, :default ] unless defined?(FILTER)
9
- FILTER = [ :default ] unless defined?(FILTER)
10
-
11
- class << self
12
-
13
- # Resolve an absolute path in the application by passing it to each
14
- # element of Ramaze::Controller::FILTER.
15
- # If an element does not respond to call it will be sent to self
16
- # instead, in either case with path as argument.
17
-
18
- def resolve(path, routed = false)
19
- Thread.current[:routed] = routed
20
-
21
- FILTER.each do |filter|
22
- answer = if filter.respond_to?(:call)
23
- filter.call(path)
24
- else
25
- send(filter.to_s, path)
26
- end
27
- return answer if answer
28
- end
29
-
30
- raise_no_filter(path)
31
- end
32
-
33
- # Default element of FILTER.
34
- # Looks up the path in Cache.resolved and returns it if found.
35
-
36
- def cached(path)
37
- if found = Cache.resolved[path]
38
- if found.respond_to?(:relaxed_hash)
39
- return found.dup
40
- else
41
- Log.warn("Found faulty `#{path}' in Cache.resolved, deleting it for sanity.")
42
- Cache.resolved.delete path
43
- end
44
- end
45
-
46
- nil
47
- end
48
-
49
- # Default element of FILTER.
50
- # The default handler that tries to find the best match for the given
51
- # path in terms of Controller/method/template and given arguments.
52
- # If a match is found it will be cached for further use.
53
-
54
- def default(path)
55
- mapping = Global.mapping
56
- controllers = Global.controllers
57
-
58
- raise_no_controller(path) if controllers.empty? or mapping.empty?
59
-
60
- # TODO:
61
- # * following code is dangerous (DoS):
62
- # patterns = Cache.patterns[path] ||= pattern_for(path)
63
-
64
- first_controller = nil
65
-
66
- # Look through the possible ways of interpreting the path until we find
67
- # one that matches an existing controller action.
68
- patterns_for(path) do |controller, method, params|
69
- if controller = mapping[controller]
70
- first_controller ||= controller
71
-
72
- action = controller.resolve_action(method, *params)
73
- next unless action
74
-
75
- template = action.template
76
-
77
- valid_action =
78
- if Action.stack.size > 0 || Global.actionless_templates
79
- action.method or (params.empty? && template)
80
- else
81
- action.method
82
- end
83
-
84
- if valid_action
85
- # TODO:
86
- # * dangerous as well
87
- # Cache.resolved[path] = action
88
- return action
89
- end
90
- end
91
- end
92
-
93
- if !Thread.current[:routed] and new_path = Route.resolve(path)
94
- Log.dev("Routing from `#{path}' to `#{new_path}'")
95
- return resolve(new_path, true)
96
- end
97
-
98
- raise_no_action(first_controller, path) if first_controller
99
- raise_no_controller(path)
100
- end
101
-
102
- # Try to produce an Action from the given path and paremters with the
103
- # appropiate template if one exists.
104
-
105
- def resolve_action(path, *parameter)
106
- path, parameter = path.to_s, parameter.map{|e| e.to_s}
107
- # Use ancestral_trait so if template is set in superclass, it is still found.
108
- if info = ancestral_trait["#{path}_template"]
109
- template = info[:file]
110
- unless template
111
- controller, action = info.values_at :controller, :action
112
- # Controller may not have been explicitly set, in which case use self.
113
- controller ||= self
114
- template = controller.resolve_template(action)
115
- end
116
- end
117
-
118
- method, params = resolve_method(path, *parameter)
119
-
120
- if method or parameter.empty?
121
- template ||= resolve_template(path)
122
- end
123
-
124
- action =
125
- Action.create :path => path,
126
- :method => method,
127
- :params => params,
128
- :template => template,
129
- :controller => self
130
- return false unless action.valid_rest?
131
- action
132
- end
133
-
134
- # Search the #template_paths for a fitting template for path.
135
- # Only the first found possibility for the generated glob is returned.
136
-
137
- def resolve_template(path)
138
- path = path.to_s
139
- path_converted = path.split('__').inject{|s,v| File.join(s, v) }
140
- possible_paths = [path, path_converted].compact
141
-
142
- paths = template_paths.map{|pa|
143
- possible_paths.map{|a|
144
- File.join(pa, a)
145
- }
146
- }.flatten.uniq
147
-
148
- glob = "{#{paths.join(',')}}.{#{extension_order.join(',')}}"
149
-
150
- Dir[glob].first
151
- end
152
-
153
- # Composes an array with the template-paths to look up in the right order.
154
- # Usually this is composed of Global.view_root and the mapping of the
155
- # controller.
156
-
157
- def template_paths
158
- if paths = view_root
159
- paths
160
- else
161
- view_root(File.join(Global.view_root, Global.mapping.invert[self]))
162
- end
163
- end
164
-
165
- # Based on methodname and arity, tries to find the right method on
166
- # current controller.
167
- def resolve_method(name, *params)
168
- cam = cached_action_methods
169
-
170
- if cam.include?(name)
171
- method = name
172
- else
173
- name = name.gsub(/__/, '/')
174
- method = name if cam.include?(name)
175
- end
176
-
177
- if method
178
- arity = instance_method(method).arity
179
- if arity < 0 or params.size == arity
180
- return method, params
181
- end
182
- end
183
-
184
- return nil, []
185
- end
186
-
187
- # List or create a list of action methods to be cached
188
-
189
- def cached_action_methods
190
- Cache.action_methods[self] ||= action_methods
191
- end
192
-
193
- # methodnames that may be used for current controller.
194
- def action_methods
195
- ancs = relevant_ancestors + action_modules
196
- ancs.reverse.inject [] do |meths, anc|
197
- meths +
198
- anc.public_instance_methods(false).map{|im| im.to_s } -
199
- anc.private_instance_methods(false).map{|im| im.to_s }
200
- end
201
- end
202
-
203
- # Array of all modules (so including Ramaze helpers) that are included in
204
- # this controller and where the module is also in the Helper::LOOKUP set.
205
- # Hence this is the included modules whose public methods may be exposed
206
- # as actions of this controller.
207
- def action_modules
208
- Helper::LOOKUP.find_all {|mod| self.include?(mod)}
209
- end
210
-
211
- # Iterator that yields potential ways in which a given path could be mapped
212
- # to controller, action and params. It produces them in strict order, with
213
- # longest controller path favoured, then longest action path.
214
-
215
- def patterns_for path
216
- # Split into fragments, and remove empty ones (which split may have output).
217
- # The to_s is vital as sometimes we are passed an array.
218
- fragments = path.to_s.split '/'
219
- fragments.delete ''
220
-
221
- # Work through all the possible splits of controller and 'the rest' (action
222
- # + params) starting with longest possible controller.
223
- fragments.length.downto(0) do |ca_split|
224
- controller = '/' + fragments[0...ca_split].join('/')
225
-
226
- # Work on the remaining portion, generating all the action/params splits.
227
- fragments.length.downto(ca_split) do |ap_split|
228
- action = fragments[ca_split...ap_split].join '__'
229
- params = fragments[ap_split..-1]
230
- if action.empty?
231
- yield controller, 'index', params
232
- else
233
- yield controller, "#{action}__index", params
234
- yield controller, action, params
235
- end
236
- end
237
- end
238
- end
239
-
240
- # Uses custom defined engines and all available engines and throws it
241
- # against the extensions for the template to find the most likely
242
- # templating-engine to use ordered by priority and likelyhood.
243
- def extension_order
244
- t_extensions = Template::ENGINES
245
- all_extensions = t_extensions.values.flatten
246
-
247
- if engine = trait[:engine]
248
- c_extensions = t_extensions.select{|k,v| k == engine}.map{|k,v| v}.flatten
249
- return (c_extensions + all_extensions).uniq
250
- end
251
-
252
- all_extensions
253
- end
254
-
255
- # Raises Ramaze::Error::NoFilter
256
- # TODO:
257
- # * is this called at all for anybody?
258
- # I think everybody has filters.
259
-
260
- def raise_no_filter(path)
261
- raise Ramaze::Error::NoFilter, "No Filter found for `#{path}'"
262
- end
263
-
264
- # Raises Ramaze::Error::NoController
265
-
266
- def raise_no_controller(path)
267
- raise Ramaze::Error::NoController, "No Controller found for `#{path}'"
268
- end
269
-
270
- # Raises Ramaze::Error::NoAction
271
-
272
- def raise_no_action(controller, path)
273
- STATE[:controller] = controller
274
- raise Ramaze::Error::NoAction, "No Action found for `#{path}' on #{controller}"
275
- end
276
- end
277
- end
278
- end
@@ -1,222 +0,0 @@
1
- # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
2
- # All files in this distribution are subject to the terms of the Ruby license.
3
-
4
- require 'rack/request'
5
-
6
- module Ramaze
7
-
8
- # The purpose of this class is to act as a simple wrapper for Rack::Request
9
- # and provide some convinient methods for our own use.
10
-
11
- class Request < ::Rack::Request
12
- class << self
13
-
14
- # get the current request out of STATE[:request]
15
- #
16
- # You can call this from everywhere with Ramaze::Request.current
17
-
18
- def current() Current.request end
19
- end
20
-
21
- # you can access the original @request via this method_missing,
22
- # first it tries to match your method with any of the HTTP parameters
23
- # then, in case that fails, it will relay to @request
24
-
25
- def method_missing meth, *args
26
- key = meth.to_s.upcase
27
- return env[key] if env.has_key?(key)
28
- super
29
- end
30
-
31
- # the full request URI provided by Rack::Request e.g. http://localhost:7000/controller/action?foo=bar.xhtml
32
-
33
- def request_uri
34
- env['REQUEST_URI'] || path_info
35
- end
36
-
37
- # the IP address(s) making the request provided by Rack::Request. You shouldn't trust it
38
-
39
- def ip
40
- if addr = env['HTTP_X_FORWARDED_FOR']
41
- addr.split(',').last.strip
42
- else
43
- env['REMOTE_ADDR']
44
- end
45
- end
46
-
47
- # Request is from a local network?
48
- # Checks both IPv4 and IPv6
49
-
50
- ipv4 = %w[ 127.0.0.1/32 192.168.0.0/16 172.16.0.0/12 10.0.0.0/8 169.254.0.0/16 ]
51
- ipv6 = %w[ fc00::/7 fe80::/10 fec0::/10 ::1 ]
52
- LOCAL = (ipv4 + ipv6).map{|a| IPAddr.new(a)} unless defined?(LOCAL)
53
-
54
- # returns true if the IP address making the request is from local network.
55
- # Optional argument address can be used to check any IP address.
56
-
57
- def local_net?(address = ip)
58
- addr = IPAddr.new(address)
59
- LOCAL.find{|range| range.include?(addr) }
60
- rescue ArgumentError => ex
61
- raise ArgumentError, ex unless ex.message == 'invalid address'
62
- end
63
-
64
- def [](key, *rest)
65
- return params[key.to_s] if rest.empty?
66
- [key, *rest].map{|k| params[k.to_s] }
67
- end
68
-
69
- # Sets any arguments passed as @instance_variables for the current action.
70
- #
71
- # Usage:
72
- # request.params # => {'name' => 'manveru', 'q' => 'google', 'lang' => 'de'}
73
- # to_ivs(:name, :q)
74
- # @q # => 'google'
75
- # @name # => 'manveru'
76
- # @lang # => nil
77
-
78
- def to_ivs(*args)
79
- instance = Action.current.instance
80
- args.each do |arg|
81
- next unless value = self[arg]
82
- instance.instance_variable_set("@#{arg}", value)
83
- end
84
- end
85
-
86
- # Wrapping Request#params to support a one-level hash notation.
87
- # It doesn't support anything really fancy, so be conservative in its use.
88
- #
89
- # See if following provides something useful for us:
90
- # http://redhanded.hobix.com/2006/01/25.html
91
- #
92
- # Example Usage:
93
- #
94
- # # Template:
95
- #
96
- # <form action="/paste">
97
- # <input type="text" name="paste[name]" />
98
- # <input type="text" name="paste[syntax]" />
99
- # <input type="submit" />
100
- # </form>
101
- #
102
- # # In your Controller:
103
- #
104
- # def paste
105
- # name, syntax = request['paste'].values_at('name', 'syntax')
106
- # paste = Paste.create_with(:name => name, :syntax => syntax)
107
- # redirect '/'
108
- # end
109
- #
110
- # # Or, easier:
111
- #
112
- # def paste
113
- # paste = Paste.create_with(request['paste'])
114
- # redirect '/'
115
- # end
116
-
117
- def params
118
- return {} if put?
119
- return @ramaze_params if @ramaze_params
120
-
121
- begin
122
- @rack_params ||= super
123
- rescue EOFError => ex
124
- @rack_params = {}
125
- Log.error(ex)
126
- end
127
-
128
- @ramaze_params = {}
129
-
130
- @rack_params.each do |key, value|
131
- if key =~ /^(.*?)(\[.*\])/
132
- prim, nested = $~.captures
133
- ref = @ramaze_params
134
-
135
- keys = nested.scan(/\[([^\]]+)\]/).flatten
136
- keys.unshift prim
137
-
138
- keys.each_with_index do |k, i|
139
- if i + 1 >= keys.size
140
- ref[k] = value
141
- else
142
- # in case the value is a string we cannot let it be ref next
143
- # time, so throw it away
144
- if ref[k].is_a?(String)
145
- ref = ref[k] = {}
146
- else
147
- ref = ref[k] ||= {}
148
- end
149
- end
150
- end
151
- else
152
- @ramaze_params[key] = value
153
- end
154
- end
155
-
156
- @ramaze_params
157
- end
158
-
159
- # Interesting HTTP variables from env
160
-
161
- def http_vars
162
- env.reject{ |k,v|
163
- k.to_s !~ /USER|HOST|REQUEST|REMOTE|FORWARD|REFER|PATH|QUERY|VERSION|KEEP|CACHE/
164
- }
165
- end
166
-
167
- # Returns a string presentation of the request, useful for debugging
168
- # parameters of the action.
169
-
170
- def to_s
171
- p, c, e = params.inspect, cookies.inspect, http_vars.inspect
172
- %{#<Ramaze::Request params=#{p} cookies=#{c} env=#{e}>}
173
- end
174
- alias inspect to_s
175
-
176
- # Pretty prints current action with parameters, cookies and
177
- # enviroment variables.
178
-
179
- def pretty_print pp
180
- p, c, e = params, cookies, http_vars
181
- pp.object_group(self){
182
- { 'params' => params,
183
- 'cookies' => cookies,
184
- 'env' => http_vars }.each do |name, hash|
185
- pp.breakable
186
- pp.text " @#{name}="
187
- pp.nest(name.length+3){ pp.pp_hash hash }
188
- end
189
- }
190
- end
191
-
192
- # Answers with a subset of request.params with only the key/value pairs for
193
- # which you pass the keys.
194
- # Valid keys are objects that respond to :to_s
195
- #
196
- # Example:
197
- # request.params
198
- # # => {'name' => 'jason', 'age' => '45', 'job' => 'lumberjack'}
199
- # request.subset('name')
200
- # # => {'name' => 'jason'}
201
- # request.subset(:name, :job)
202
- # # => {'name' => 'jason', 'job' => 'lumberjack'}
203
-
204
- def subset(*keys)
205
- keys = keys.map{|k| k.to_s }
206
- params.reject{|k,v| not keys.include?(k) }
207
- end
208
-
209
- def domain(path = '/')
210
- scheme = env['rack.url_scheme'] || 'http'
211
- host = env['HTTP_HOST']
212
- URI("#{scheme}://#{host}#{path}")
213
- end
214
-
215
- # Returns and array of locales from env['HTTP_ACCEPT_LANGUAGE].
216
- # e.g. ["fi", "en", "ja", "fr", "de", "es", "it", "nl", "sv"]
217
-
218
- def locales
219
- env['HTTP_ACCEPT_LANGUAGE'].to_s.split(/(?:,|;q=[\d.,]+)/)
220
- end
221
- end
222
- end
@@ -1,87 +0,0 @@
1
- module Ramaze
2
- class Session
3
- # The purpose of this class is to act as a unifier of the previous
4
- # and current flash.
5
- #
6
- # Flash means pairs of keys and values that are held only over one
7
- # request/response cycle. So you can assign a key/value in the current
8
- # session and retrieve it in the current and following request.
9
- #
10
- # Please see the FlashHelper for details on the usage as you won't need
11
- # to touch this class at all.
12
- class Flash
13
- include Enumerable
14
-
15
- def initialize sess
16
- @session = sess
17
- end
18
-
19
- # iterate over the combined session
20
- def each(&block)
21
- combined.each(&block)
22
- end
23
-
24
- # the current session[:FLASH_PREVIOUS]
25
- def previous
26
- session[:FLASH_PREVIOUS] || {}
27
- end
28
-
29
- # the current session[:FLASH]
30
- def current
31
- session[:FLASH] ||= {}
32
- end
33
-
34
- # combined key/value pairs of previous and current
35
- # current keys overshadow the old ones.
36
- def combined
37
- previous.merge(current)
38
- end
39
-
40
- # flash[key] in your Controller
41
- def [](key)
42
- combined[key]
43
- end
44
-
45
- # flash[key] = value in your Controller
46
- def []=(key, value)
47
- prev = session[:FLASH] || {}
48
- prev[key] = value
49
- session[:FLASH] = prev
50
- end
51
-
52
- # Inspects the combined SessionFlash
53
-
54
- def inspect
55
- combined.inspect
56
- end
57
-
58
- # Delete a key
59
-
60
- def delete(key)
61
- current.delete(key)
62
- end
63
-
64
- # check if combined is empty
65
-
66
- def empty?
67
- combined.empty?
68
- end
69
-
70
- def merge!(hash)
71
- current.merge!(hash)
72
- end
73
-
74
- def merge(hash)
75
- current.merge(hash)
76
- end
77
-
78
- private
79
-
80
- # Associated session object
81
-
82
- def session
83
- @session
84
- end
85
- end
86
- end
87
- end
@@ -1,62 +0,0 @@
1
- module Ramaze
2
- class Session
3
-
4
- # The Session::Hash acts as the wrapper for a simple Hash
5
- #
6
- # Its purpose is to notify the underlying cache, in which the sessions
7
- # are stored, about updates.
8
- class Hash
9
-
10
- # Sets @hash to an empty Hash
11
-
12
- def initialize(session)
13
- @session = session
14
- @hash = {}
15
- end
16
-
17
- # relays all the methods to the @hash and updates the session_cache in
18
- # Session.current.sessions if anything changes.
19
-
20
- def method_missing(*args, &block)
21
- result = @hash.send(*args, &block)
22
- Cache.sessions[@session.session_id] = self
23
- result
24
- end
25
-
26
- # Calls #inspect on the wrapped @hash
27
-
28
- def inspect
29
- @hash.inspect
30
- end
31
-
32
- # Use client side session variables
33
-
34
- def client
35
- Request.current['session.client'] ||= unmarshal(Request.current.cookies["#{Session::SESSION_KEY}-client"]) || {}
36
- end
37
-
38
- private
39
-
40
- # Marshal a session hash into safe cookie data. Include an integrity hash.
41
- def marshal(session)
42
- data = [ Marshal.dump(session) ].pack('m').chop
43
- "#{data}--#{generate_digest(data)}"
44
- end
45
-
46
- # Unmarshal cookie data to a hash and verify its integrity.
47
- def unmarshal(cookie)
48
- return unless cookie
49
- data, digest = cookie.split('--')
50
- return nil unless digest == generate_digest(data)
51
- Marshal.load(data.unpack('m').first)
52
- end
53
-
54
- # Generate the inline SHA512 message digest. Larger (128 bytes) than SHA256
55
- # (64 bytes) or RMD160 (40 bytes), but small relative to the 4096 byte
56
- # max cookie size.
57
- def generate_digest(data)
58
- Digest::SHA512.hexdigest "#{data}#{Session.trait[:secret]}"
59
- end
60
- end
61
- end
62
- end