Pistos-ramaze 2009.02 → 2009.04.08

Sign up to get free protection for your applications and to get access to all the features.
Files changed (530) hide show
  1. data/.mailmap +25 -0
  2. data/CHANGELOG +16546 -0
  3. data/MANIFEST +487 -0
  4. data/{README.md → README.markdown} +0 -5
  5. data/Rakefile +75 -242
  6. data/bin/ramaze +142 -55
  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.nag +25 -0
  12. data/examples/app/auth/start.rb +23 -0
  13. data/examples/app/auth/view/index.nag +4 -0
  14. data/examples/app/auth/view/login.nag +20 -0
  15. data/examples/app/auth/view/secret.nag +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 +76 -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 +80 -28
  26. data/examples/app/blog/model/init.rb +10 -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/basic/element.rb +5 -3
  60. data/examples/basic/gestalt.rb +1 -2
  61. data/examples/basic/hello.rb +3 -4
  62. data/examples/basic/layout.rb +2 -2
  63. data/examples/basic/linking.rb +7 -7
  64. data/examples/basic/partial.rb +3 -5
  65. data/examples/basic/simple.rb +1 -5
  66. data/examples/helpers/cache.rb +5 -5
  67. data/examples/helpers/httpdigest.rb +31 -32
  68. data/examples/misc/memleak_detector.rb +17 -12
  69. data/examples/misc/serve_directory.rb +6 -0
  70. data/examples/templates/template_erubis.rb +9 -10
  71. data/examples/templates/template_ezamar.rb +8 -7
  72. data/examples/templates/template_haml.rb +6 -7
  73. data/examples/templates/template_liquid.rb +20 -19
  74. data/examples/templates/template_markaby.rb +2 -3
  75. data/examples/templates/template_nagoro.rb +6 -7
  76. data/examples/templates/template_redcloth.rb +8 -9
  77. data/examples/templates/template_remarkably.rb +7 -8
  78. data/examples/templates/template_tenjin.rb +6 -7
  79. data/examples/templates/{template → view}/external.haml +4 -4
  80. data/examples/templates/{template → view}/external.liquid +0 -0
  81. data/examples/templates/{template → view}/external.mab +0 -0
  82. data/examples/templates/{template → view}/external.nag +4 -4
  83. data/examples/templates/{template → view}/external.redcloth +4 -4
  84. data/examples/templates/{template → view}/external.rem +4 -4
  85. data/examples/templates/{template → view}/external.rhtml +6 -6
  86. data/examples/templates/{template → view}/external.tenjin +4 -4
  87. data/examples/templates/{template → view}/external.zmr +6 -6
  88. data/lib/proto/config.ru +17 -0
  89. data/lib/proto/controller/init.rb +2 -2
  90. data/lib/proto/layout/default.xhtml +24 -0
  91. data/lib/proto/public/css/screen.css +30 -0
  92. data/lib/proto/public/js/jquery.js +2121 -1294
  93. data/lib/proto/spec/main.rb +8 -11
  94. data/lib/proto/start.rb +3 -3
  95. data/lib/proto/view/index.xhtml +34 -27
  96. data/lib/ramaze/app.rb +124 -0
  97. data/lib/ramaze/cache/localmemcache.rb +56 -0
  98. data/lib/ramaze/cache/memcache.rb +99 -0
  99. data/lib/ramaze/cache/sequel.rb +67 -0
  100. data/lib/ramaze/cache.rb +9 -104
  101. data/lib/ramaze/contrib/app_graph.rb +64 -0
  102. data/lib/ramaze/contrib/gettext/po.rb +23 -23
  103. data/lib/ramaze/contrib/gzip_filter.rb +1 -69
  104. data/lib/ramaze/contrib/rest.rb +20 -15
  105. data/lib/ramaze/contrib/sequel/relation.rb +4 -2
  106. data/lib/ramaze/controller/default.rb +12 -0
  107. data/lib/ramaze/controller.rb +63 -257
  108. data/lib/ramaze/current.rb +3 -47
  109. data/lib/ramaze/files.rb +24 -0
  110. data/lib/ramaze/gestalt.rb +6 -1
  111. data/lib/ramaze/helper/auth.rb +68 -104
  112. data/lib/ramaze/helper/bench.rb +0 -2
  113. data/lib/ramaze/helper/cache.rb +59 -122
  114. data/lib/ramaze/helper/disqus.rb +26 -0
  115. data/lib/ramaze/helper/flash.rb +32 -44
  116. data/lib/ramaze/helper/form.rb +83 -252
  117. data/lib/ramaze/helper/formatting.rb +30 -5
  118. data/lib/ramaze/helper/gestalt.rb +1 -1
  119. data/lib/ramaze/helper/gravatar.rb +66 -19
  120. data/lib/ramaze/helper/httpdigest.rb +75 -66
  121. data/lib/ramaze/helper/link.rb +62 -109
  122. data/lib/ramaze/helper/localize.rb +128 -0
  123. data/lib/ramaze/helper/markaby.rb +1 -1
  124. data/lib/ramaze/helper/maruku.rb +10 -3
  125. data/lib/ramaze/helper/pager.rb +2 -1
  126. data/lib/ramaze/helper/paginate.rb +16 -9
  127. data/lib/ramaze/helper/partial.rb +86 -91
  128. data/lib/ramaze/helper/remarkably.rb +14 -0
  129. data/lib/ramaze/helper/request_accessor.rb +16 -0
  130. data/lib/ramaze/helper/sequel_form.rb +284 -0
  131. data/lib/ramaze/helper/simple_captcha.rb +46 -16
  132. data/lib/ramaze/helper/stack.rb +64 -66
  133. data/lib/ramaze/helper/user.rb +141 -22
  134. data/lib/ramaze/helper/xhtml.rb +27 -16
  135. data/lib/ramaze/helper.rb +6 -81
  136. data/lib/ramaze/log/analogger.rb +1 -2
  137. data/lib/ramaze/log/informer.rb +1 -0
  138. data/lib/ramaze/log/logging.rb +2 -8
  139. data/lib/ramaze/log/syslog.rb +36 -36
  140. data/lib/ramaze/log.rb +19 -7
  141. data/lib/ramaze/middleware_compiler.rb +13 -0
  142. data/lib/ramaze/plugin.rb +69 -0
  143. data/lib/ramaze/reloader.rb +8 -6
  144. data/lib/ramaze/request.rb +117 -0
  145. data/lib/ramaze/{current/response.rb → response.rb} +9 -10
  146. data/lib/ramaze/setup.rb +93 -33
  147. data/lib/ramaze/snippets/ramaze/deprecated.rb +3 -1
  148. data/lib/ramaze/snippets/{dictionary.rb → ramaze/dictionary.rb} +0 -104
  149. data/lib/ramaze/snippets/ramaze/fiber.rb +5 -5
  150. data/lib/ramaze/spec/helper/bacon.rb +4 -3
  151. data/lib/ramaze/spec/helper/snippets.rb +3 -1
  152. data/lib/ramaze/spec/helper/template_examples.rb +29 -0
  153. data/lib/ramaze/spec.rb +37 -1
  154. data/lib/ramaze/tool/create.rb +1 -1
  155. data/lib/ramaze/version.rb +1 -4
  156. data/lib/ramaze/view/erubis.rb +23 -0
  157. data/lib/ramaze/view/ezamar.rb +23 -0
  158. data/lib/ramaze/view/haml.rb +15 -0
  159. data/lib/ramaze/view/liquid.rb +66 -0
  160. data/lib/ramaze/view/maruku.rb +14 -0
  161. data/lib/ramaze/view/nagoro/render_partial.rb +32 -0
  162. data/lib/ramaze/view/nagoro.rb +44 -0
  163. data/lib/ramaze/view/redcloth.rb +21 -0
  164. data/lib/ramaze/view/remarkably.rb +21 -0
  165. data/lib/ramaze/view/sass.rb +21 -0
  166. data/lib/ramaze/view/tagz.rb +63 -0
  167. data/lib/ramaze/view/tenjin.rb +29 -0
  168. data/lib/ramaze/view.rb +44 -0
  169. data/lib/ramaze.rb +76 -129
  170. data/lib/vendor/etag.rb +20 -0
  171. data/lib/vendor/route_exceptions.rb +48 -0
  172. data/ramaze.gemspec +28 -612
  173. data/spec/contrib/rest.rb +28 -0
  174. data/spec/examples/caching.rb +1 -2
  175. data/spec/examples/css.rb +1 -2
  176. data/spec/examples/element.rb +1 -2
  177. data/spec/examples/hello.rb +2 -3
  178. data/spec/examples/helpers/httpdigest.rb +89 -0
  179. data/spec/examples/linking.rb +1 -2
  180. data/spec/examples/simple.rb +1 -6
  181. data/spec/examples/templates/template_erubis.rb +3 -17
  182. data/spec/examples/templates/template_ezamar.rb +3 -18
  183. data/spec/examples/templates/template_haml.rb +3 -17
  184. data/spec/examples/templates/template_liquid.rb +3 -23
  185. data/spec/examples/templates/template_markaby.rb +6 -19
  186. data/spec/examples/templates/template_nagoro.rb +9 -0
  187. data/spec/examples/templates/template_redcloth.rb +3 -22
  188. data/spec/examples/templates/template_remarkably.rb +3 -17
  189. data/spec/examples/templates/template_tenjin.rb +3 -22
  190. data/spec/helper.rb +10 -3
  191. data/spec/ramaze/action/render.rb +5 -15
  192. data/spec/ramaze/action/view/other_wrapper.erb +1 -0
  193. data/spec/ramaze/action/view/sub/sub_wrapper.erb +1 -0
  194. data/spec/ramaze/app.rb +47 -0
  195. data/spec/ramaze/cache/localmemcache.rb +49 -0
  196. data/spec/ramaze/cache/memcache.rb +54 -0
  197. data/spec/ramaze/cache/sequel.rb +51 -0
  198. data/spec/ramaze/controller/actionless_templates.rb +14 -10
  199. data/spec/ramaze/controller/mapping.rb +57 -0
  200. data/spec/ramaze/controller/provide_inheritance.rb +47 -0
  201. data/spec/ramaze/controller/resolve.rb +7 -9
  202. data/spec/ramaze/controller/subclass.rb +13 -13
  203. data/spec/ramaze/controller/template_resolving.rb +21 -57
  204. data/spec/ramaze/dispatcher/directory.rb +38 -24
  205. data/spec/ramaze/dispatcher/file.rb +53 -44
  206. data/spec/ramaze/error.rb +56 -62
  207. data/spec/ramaze/files/public_1/plain.txt +1 -0
  208. data/spec/ramaze/files/public_2/rich.txt +1 -0
  209. data/spec/ramaze/files.rb +29 -0
  210. data/spec/ramaze/gestalt.rb +2 -4
  211. data/spec/ramaze/helper/auth.rb +53 -25
  212. data/spec/ramaze/helper/bench.rb +17 -0
  213. data/spec/ramaze/helper/cache.rb +38 -114
  214. data/spec/ramaze/helper/flash.rb +22 -110
  215. data/spec/ramaze/helper/form.rb +336 -98
  216. data/spec/ramaze/helper/formatting.rb +66 -9
  217. data/spec/ramaze/helper/gestalt.rb +15 -0
  218. data/spec/ramaze/helper/gravatar.rb +40 -0
  219. data/spec/ramaze/helper/httpdigest.rb +162 -0
  220. data/spec/ramaze/helper/link.rb +25 -100
  221. data/spec/ramaze/helper/localize.rb +60 -0
  222. data/spec/ramaze/helper/maruku.rb +19 -0
  223. data/spec/ramaze/helper/pager.rb +13 -16
  224. data/spec/ramaze/helper/paginate.rb +68 -0
  225. data/spec/ramaze/helper/partial.rb +23 -71
  226. data/spec/ramaze/helper/request_accessor.rb +19 -0
  227. data/spec/ramaze/helper/sequel_form.rb +89 -0
  228. data/spec/ramaze/helper/simple_captcha.rb +40 -13
  229. data/spec/ramaze/helper/stack.rb +56 -35
  230. data/spec/ramaze/helper/user.rb +36 -9
  231. data/spec/ramaze/helper/xhtml.rb +32 -0
  232. data/spec/ramaze/log/informer.rb +20 -19
  233. data/spec/ramaze/log/logging.rb +63 -0
  234. data/spec/ramaze/log/syslog.rb +59 -62
  235. data/spec/ramaze/params.rb +8 -11
  236. data/spec/ramaze/request.rb +45 -181
  237. data/spec/ramaze/view/erubis/external.rhtml +8 -0
  238. data/spec/ramaze/view/erubis/sum.rhtml +1 -0
  239. data/spec/ramaze/view/erubis.rb +73 -0
  240. data/spec/ramaze/view/ezamar/external.zmr +8 -0
  241. data/spec/ramaze/view/ezamar/sum.zmr +1 -0
  242. data/spec/ramaze/view/ezamar.rb +73 -0
  243. data/spec/ramaze/view/haml/external.haml +5 -0
  244. data/spec/ramaze/view/haml/sum.haml +2 -0
  245. data/spec/ramaze/view/haml.rb +86 -0
  246. data/spec/ramaze/view/liquid/external.liquid +8 -0
  247. data/spec/ramaze/view/liquid/sum.liquid +1 -0
  248. data/spec/ramaze/view/liquid.rb +73 -0
  249. data/spec/ramaze/view/nagoro/external.nag +8 -0
  250. data/spec/ramaze/view/nagoro/sum.nag +1 -0
  251. data/spec/ramaze/view/nagoro.rb +73 -0
  252. data/spec/ramaze/view/redcloth/external.redcloth +8 -0
  253. data/spec/ramaze/view/redcloth.rb +66 -0
  254. data/spec/ramaze/{template → view}/remarkably/external.rem +0 -0
  255. data/spec/ramaze/{template → view}/remarkably/sum.rem +0 -0
  256. data/spec/ramaze/view/remarkably.rb +49 -0
  257. data/spec/ramaze/{template → view}/sass/file.css.sass +0 -0
  258. data/spec/ramaze/view/sass.rb +73 -0
  259. data/spec/ramaze/{template → view}/tagz/external.tagz +0 -0
  260. data/spec/ramaze/{template → view}/tagz/sum.tagz +0 -0
  261. data/spec/ramaze/{template → view}/tagz.rb +18 -29
  262. data/spec/ramaze/view/tenjin/external.rbhtml +8 -0
  263. data/spec/ramaze/view/tenjin/sum.rbhtml +1 -0
  264. data/spec/ramaze/view/tenjin.rb +57 -0
  265. data/spec/ramaze/view.rb +36 -0
  266. data/spec/snippets/ramaze/dictionary.rb +110 -0
  267. data/spec/snippets/ramaze/struct.rb +12 -0
  268. data/spec/snippets/thread/into.rb +3 -14
  269. data/tasks/authors.rake +30 -0
  270. data/tasks/bacon.rake +66 -0
  271. data/tasks/changelog.rake +18 -0
  272. data/tasks/copyright.rake +21 -0
  273. data/tasks/gem.rake +22 -0
  274. data/tasks/gem_installer.rake +76 -0
  275. data/{rake_tasks → tasks}/git.rake +10 -5
  276. data/tasks/grancher.rake +12 -0
  277. data/tasks/install_dependencies.rake +6 -0
  278. data/tasks/jquery.rake +15 -0
  279. data/tasks/manifest.rake +4 -0
  280. data/{rake_tasks/metric.rake → tasks/metric_changes.rake} +7 -7
  281. data/tasks/rcov.rake +23 -0
  282. data/tasks/release.rake +69 -0
  283. data/tasks/reversion.rake +8 -0
  284. data/tasks/todo.rake +29 -0
  285. data/tasks/traits.rake +21 -0
  286. data/tasks/yard.rake +4 -0
  287. metadata +173 -290
  288. data/benchmark/suite/template_amrita2.rb +0 -17
  289. data/doc/readme_chunks/appendix.txt +0 -10
  290. data/doc/readme_chunks/examples.txt +0 -38
  291. data/doc/readme_chunks/features.txt +0 -148
  292. data/doc/readme_chunks/getting_help.txt +0 -5
  293. data/doc/readme_chunks/getting_started.txt +0 -18
  294. data/doc/readme_chunks/installing.txt +0 -92
  295. data/doc/readme_chunks/introduction.txt +0 -18
  296. data/doc/readme_chunks/principles.txt +0 -56
  297. data/doc/readme_chunks/thanks.txt +0 -59
  298. data/examples/app/auth/auth.rb +0 -54
  299. data/examples/app/auth/template/layout.haml +0 -20
  300. data/examples/app/auth/template/login.haml +0 -16
  301. data/examples/app/blog/public/styles/blog.css +0 -132
  302. data/examples/app/blog/view/edit.xhtml +0 -17
  303. data/examples/app/blog/view/index.xhtml +0 -17
  304. data/examples/app/blog/view/layout.xhtml +0 -11
  305. data/examples/app/blog/view/new.xhtml +0 -16
  306. data/examples/app/rapaste/Rakefile +0 -34
  307. data/examples/app/rapaste/controller/paste.rb +0 -101
  308. data/examples/app/rapaste/model/paste.rb +0 -58
  309. data/examples/app/rapaste/public/css/active4d.css +0 -114
  310. data/examples/app/rapaste/public/css/all_hallows_eve.css +0 -72
  311. data/examples/app/rapaste/public/css/amy.css +0 -147
  312. data/examples/app/rapaste/public/css/blackboard.css +0 -88
  313. data/examples/app/rapaste/public/css/brilliance_black.css +0 -605
  314. data/examples/app/rapaste/public/css/brilliance_dull.css +0 -599
  315. data/examples/app/rapaste/public/css/cobalt.css +0 -149
  316. data/examples/app/rapaste/public/css/dawn.css +0 -121
  317. data/examples/app/rapaste/public/css/display.css +0 -197
  318. data/examples/app/rapaste/public/css/eiffel.css +0 -121
  319. data/examples/app/rapaste/public/css/espresso_libre.css +0 -109
  320. data/examples/app/rapaste/public/css/idle.css +0 -62
  321. data/examples/app/rapaste/public/css/iplastic.css +0 -80
  322. data/examples/app/rapaste/public/css/lazy.css +0 -73
  323. data/examples/app/rapaste/public/css/mac_classic.css +0 -123
  324. data/examples/app/rapaste/public/css/magicwb_amiga.css +0 -104
  325. data/examples/app/rapaste/public/css/pastels_on_dark.css +0 -188
  326. data/examples/app/rapaste/public/css/slush_poppies.css +0 -85
  327. data/examples/app/rapaste/public/css/spacecadet.css +0 -51
  328. data/examples/app/rapaste/public/css/sunburst.css +0 -180
  329. data/examples/app/rapaste/public/css/twilight.css +0 -137
  330. data/examples/app/rapaste/public/css/zenburnesque.css +0 -91
  331. data/examples/app/rapaste/public/js/jquery.js +0 -11
  332. data/examples/app/rapaste/spec/rapaste.rb +0 -51
  333. data/examples/app/rapaste/start.rb +0 -25
  334. data/examples/app/rapaste/view/copy.xhtml +0 -10
  335. data/examples/app/rapaste/view/index.xhtml +0 -9
  336. data/examples/app/rapaste/view/layout.xhtml +0 -25
  337. data/examples/app/rapaste/view/list.xhtml +0 -29
  338. data/examples/app/rapaste/view/search.xhtml +0 -41
  339. data/examples/app/rapaste/view/view.xhtml +0 -40
  340. data/examples/app/todolist/README +0 -1
  341. data/examples/app/todolist/public/js/jquery.js +0 -1923
  342. data/examples/app/todolist/public/ramaze.png +0 -0
  343. data/examples/app/todolist/spec/todolist.rb +0 -132
  344. data/examples/app/todolist/src/controller/main.rb +0 -70
  345. data/examples/app/todolist/src/element/page.rb +0 -31
  346. data/examples/app/todolist/src/model.rb +0 -14
  347. data/examples/app/todolist/template/index.xhtml +0 -17
  348. data/examples/app/todolist/template/new.xhtml +0 -7
  349. data/examples/misc/simple_auth.rb +0 -35
  350. data/examples/templates/template/external.amrita +0 -19
  351. data/examples/templates/template/external.xsl +0 -57
  352. data/examples/templates/template_amrita2.rb +0 -74
  353. data/examples/templates/template_xslt.rb +0 -49
  354. data/lib/proto/public/css/ramaze_error.css +0 -90
  355. data/lib/proto/view/error.xhtml +0 -64
  356. data/lib/ramaze/action/render.rb +0 -192
  357. data/lib/ramaze/action.rb +0 -159
  358. data/lib/ramaze/adapter/base.rb +0 -128
  359. data/lib/ramaze/adapter/cgi.rb +0 -20
  360. data/lib/ramaze/adapter/ebb.rb +0 -18
  361. data/lib/ramaze/adapter/evented_mongrel.rb +0 -7
  362. data/lib/ramaze/adapter/fake.rb +0 -12
  363. data/lib/ramaze/adapter/fcgi.rb +0 -18
  364. data/lib/ramaze/adapter/lsws.rb +0 -19
  365. data/lib/ramaze/adapter/mongrel.rb +0 -21
  366. data/lib/ramaze/adapter/scgi.rb +0 -18
  367. data/lib/ramaze/adapter/swiftiplied_mongrel.rb +0 -7
  368. data/lib/ramaze/adapter/thin.rb +0 -17
  369. data/lib/ramaze/adapter/webrick.rb +0 -43
  370. data/lib/ramaze/adapter.rb +0 -97
  371. data/lib/ramaze/cache/file.rb +0 -71
  372. data/lib/ramaze/cache/memcached.rb +0 -69
  373. data/lib/ramaze/cache/memory.rb +0 -6
  374. data/lib/ramaze/cache/yaml_store.rb +0 -68
  375. data/lib/ramaze/contrib/file_cache.rb +0 -3
  376. data/lib/ramaze/contrib/gems.rb +0 -78
  377. data/lib/ramaze/contrib/sequel/fill.rb +0 -12
  378. data/lib/ramaze/contrib/sequel_cache.rb +0 -92
  379. data/lib/ramaze/contrib.rb +0 -82
  380. data/lib/ramaze/controller/error.rb +0 -46
  381. data/lib/ramaze/controller/main.rb +0 -2
  382. data/lib/ramaze/controller/resolve.rb +0 -278
  383. data/lib/ramaze/current/request.rb +0 -231
  384. data/lib/ramaze/current/session/flash.rb +0 -88
  385. data/lib/ramaze/current/session/hash.rb +0 -62
  386. data/lib/ramaze/current/session.rb +0 -179
  387. data/lib/ramaze/dispatcher/action.rb +0 -50
  388. data/lib/ramaze/dispatcher/directory.rb +0 -119
  389. data/lib/ramaze/dispatcher/error.rb +0 -108
  390. data/lib/ramaze/dispatcher/file.rb +0 -100
  391. data/lib/ramaze/dispatcher.rb +0 -145
  392. data/lib/ramaze/error.rb +0 -24
  393. data/lib/ramaze/helper/aspect.rb +0 -106
  394. data/lib/ramaze/helper/cgi.rb +0 -39
  395. data/lib/ramaze/helper/redirect.rb +0 -100
  396. data/lib/ramaze/helper/rest.rb +0 -43
  397. data/lib/ramaze/helper/sendfile.rb +0 -16
  398. data/lib/ramaze/option/dsl.rb +0 -45
  399. data/lib/ramaze/option/holder.rb +0 -131
  400. data/lib/ramaze/option/merger.rb +0 -108
  401. data/lib/ramaze/option.rb +0 -156
  402. data/lib/ramaze/route.rb +0 -97
  403. data/lib/ramaze/snippets/object/traits.rb +0 -76
  404. data/lib/ramaze/snippets/ramaze/caller_info.rb +0 -30
  405. data/lib/ramaze/snippets/ramaze/caller_lines.rb +0 -51
  406. data/lib/ramaze/snippets/ramaze/state.rb +0 -86
  407. data/lib/ramaze/spec/helper/browser.rb +0 -88
  408. data/lib/ramaze/spec/helper/mock_http.rb +0 -64
  409. data/lib/ramaze/spec/helper/requester.rb +0 -63
  410. data/lib/ramaze/spec/helper/simple_http.rb +0 -434
  411. data/lib/ramaze/spec/helper.rb +0 -135
  412. data/lib/ramaze/store/default.rb +0 -109
  413. data/lib/ramaze/template/amrita2.rb +0 -49
  414. data/lib/ramaze/template/builder.rb +0 -28
  415. data/lib/ramaze/template/erubis.rb +0 -41
  416. data/lib/ramaze/template/ezamar/element.rb +0 -169
  417. data/lib/ramaze/template/ezamar/engine.rb +0 -76
  418. data/lib/ramaze/template/ezamar/morpher.rb +0 -135
  419. data/lib/ramaze/template/ezamar/render_partial.rb +0 -39
  420. data/lib/ramaze/template/ezamar/textpow.syntax +0 -34
  421. data/lib/ramaze/template/ezamar.rb +0 -42
  422. data/lib/ramaze/template/haml.rb +0 -37
  423. data/lib/ramaze/template/liquid.rb +0 -36
  424. data/lib/ramaze/template/markaby.rb +0 -52
  425. data/lib/ramaze/template/maruku.rb +0 -34
  426. data/lib/ramaze/template/nagoro.rb +0 -52
  427. data/lib/ramaze/template/none.rb +0 -14
  428. data/lib/ramaze/template/redcloth.rb +0 -25
  429. data/lib/ramaze/template/remarkably.rb +0 -38
  430. data/lib/ramaze/template/sass.rb +0 -37
  431. data/lib/ramaze/template/tagz.rb +0 -79
  432. data/lib/ramaze/template/tenjin.rb +0 -74
  433. data/lib/ramaze/template/xslt.rb +0 -100
  434. data/lib/ramaze/template.rb +0 -87
  435. data/lib/ramaze/tool/daemonize.rb +0 -37
  436. data/lib/ramaze/tool/localize.rb +0 -202
  437. data/lib/ramaze/tool/mime.rb +0 -35
  438. data/lib/ramaze/tool/mime_types.yaml +0 -615
  439. data/lib/ramaze/tool/record.rb +0 -6
  440. data/lib/ramaze/tool.rb +0 -9
  441. data/lib/ramaze/trinity.rb +0 -16
  442. data/lib/vendor/bacon.rb +0 -323
  443. data/rake_tasks/conf.rake +0 -85
  444. data/rake_tasks/coverage.rake +0 -45
  445. data/rake_tasks/gem.rake +0 -74
  446. data/rake_tasks/maintenance.rake +0 -386
  447. data/rake_tasks/release.rake +0 -76
  448. data/rake_tasks/spec.rake +0 -61
  449. data/spec/contrib/profiling.rb +0 -29
  450. data/spec/contrib/sequel/fill.rb +0 -47
  451. data/spec/examples/simple_auth.rb +0 -32
  452. data/spec/examples/templates/template_amrita2.rb +0 -16
  453. data/spec/ramaze/action/basics.rb +0 -36
  454. data/spec/ramaze/action/cache.rb +0 -87
  455. data/spec/ramaze/action/file_cache.rb +0 -70
  456. data/spec/ramaze/action/layout.rb +0 -190
  457. data/spec/ramaze/adapter/ebb.rb +0 -12
  458. data/spec/ramaze/adapter/mongrel.rb +0 -12
  459. data/spec/ramaze/adapter/record.rb +0 -31
  460. data/spec/ramaze/adapter/webrick.rb +0 -12
  461. data/spec/ramaze/adapter.rb +0 -49
  462. data/spec/ramaze/cache.rb +0 -140
  463. data/spec/ramaze/controller.rb +0 -180
  464. data/spec/ramaze/current/request.rb +0 -30
  465. data/spec/ramaze/current/session.rb +0 -97
  466. data/spec/ramaze/dispatcher.rb +0 -31
  467. data/spec/ramaze/element.rb +0 -107
  468. data/spec/ramaze/helper/aspect.rb +0 -101
  469. data/spec/ramaze/helper/cgi.rb +0 -43
  470. data/spec/ramaze/helper/file.rb +0 -18
  471. data/spec/ramaze/helper/redirect.rb +0 -112
  472. data/spec/ramaze/localize.rb +0 -89
  473. data/spec/ramaze/morpher.rb +0 -111
  474. data/spec/ramaze/public/error404.xhtml +0 -1
  475. data/spec/ramaze/request/ebb.rb +0 -9
  476. data/spec/ramaze/request/mongrel.rb +0 -9
  477. data/spec/ramaze/request/thin.rb +0 -9
  478. data/spec/ramaze/request/webrick.rb +0 -5
  479. data/spec/ramaze/rewrite.rb +0 -36
  480. data/spec/ramaze/route.rb +0 -131
  481. data/spec/ramaze/session.rb +0 -94
  482. data/spec/ramaze/store/default.rb +0 -71
  483. data/spec/ramaze/template/amrita2/external.amrita +0 -6
  484. data/spec/ramaze/template/amrita2/sum.amrita +0 -1
  485. data/spec/ramaze/template/amrita2.rb +0 -50
  486. data/spec/ramaze/template/builder/external.rxml +0 -3
  487. data/spec/ramaze/template/builder.rb +0 -51
  488. data/spec/ramaze/template/erubis/sum.rhtml +0 -1
  489. data/spec/ramaze/template/erubis.rb +0 -41
  490. data/spec/ramaze/template/ezamar/another/long/action.zmr +0 -1
  491. data/spec/ramaze/template/ezamar/combined.zmr +0 -1
  492. data/spec/ramaze/template/ezamar/file_only.zmr +0 -1
  493. data/spec/ramaze/template/ezamar/index.zmr +0 -1
  494. data/spec/ramaze/template/ezamar/nested.zmr +0 -1
  495. data/spec/ramaze/template/ezamar/other__index.xhtml +0 -1
  496. data/spec/ramaze/template/ezamar/some__long__action.zmr +0 -1
  497. data/spec/ramaze/template/ezamar/sum.zmr +0 -1
  498. data/spec/ramaze/template/ezamar.rb +0 -63
  499. data/spec/ramaze/template/haml/index.haml +0 -5
  500. data/spec/ramaze/template/haml/locals.haml +0 -2
  501. data/spec/ramaze/template/haml/with_vars.haml +0 -4
  502. data/spec/ramaze/template/haml.rb +0 -66
  503. data/spec/ramaze/template/liquid/index.liquid +0 -1
  504. data/spec/ramaze/template/liquid/products.liquid +0 -45
  505. data/spec/ramaze/template/liquid.rb +0 -99
  506. data/spec/ramaze/template/markaby/external.mab +0 -8
  507. data/spec/ramaze/template/markaby/sum.mab +0 -1
  508. data/spec/ramaze/template/markaby.rb +0 -61
  509. data/spec/ramaze/template/nagoro/another/long/action.nag +0 -1
  510. data/spec/ramaze/template/nagoro/combined.nag +0 -1
  511. data/spec/ramaze/template/nagoro/file_only.nag +0 -1
  512. data/spec/ramaze/template/nagoro/index.nag +0 -1
  513. data/spec/ramaze/template/nagoro/nested.nag +0 -1
  514. data/spec/ramaze/template/nagoro/some__long__action.nag +0 -1
  515. data/spec/ramaze/template/nagoro/sum.nag +0 -1
  516. data/spec/ramaze/template/nagoro.rb +0 -64
  517. data/spec/ramaze/template/redcloth/external.redcloth +0 -1
  518. data/spec/ramaze/template/redcloth.rb +0 -38
  519. data/spec/ramaze/template/remarkably.rb +0 -58
  520. data/spec/ramaze/template/sass.rb +0 -69
  521. data/spec/ramaze/template/tenjin/external.tenjin +0 -1
  522. data/spec/ramaze/template/tenjin.rb +0 -47
  523. data/spec/ramaze/template/xslt/concat_words.xsl +0 -16
  524. data/spec/ramaze/template/xslt/index.xsl +0 -14
  525. data/spec/ramaze/template/xslt/products.xsl +0 -32
  526. data/spec/ramaze/template/xslt/ruby_version.xsl +0 -14
  527. data/spec/ramaze/template/xslt.rb +0 -90
  528. data/spec/ramaze/template.rb +0 -128
  529. data/spec/snippets/ramaze/caller_info.rb +0 -39
  530. data/spec/snippets/ramaze/caller_lines.rb +0 -30
@@ -0,0 +1,13 @@
1
+ module Ramaze
2
+ class MiddlewareCompiler < Innate::MiddlewareCompiler
3
+ def static(path)
4
+ require 'rack/contrib'
5
+ Rack::ETag.new(Rack::ConditionalGet.new(Rack::File.new(path)))
6
+ end
7
+
8
+ def directory(path)
9
+ require 'rack/contrib'
10
+ Rack::ETag.new(Rack::ConditionalGet.new(Rack::Directory.new(path)))
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,69 @@
1
+ # Copyright (c) 2009 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
+ def self.plugin(name, options = {})
6
+ Plugin.load(name, options)
7
+ end
8
+
9
+ module Plugin
10
+ PLUGIN_LIST = Set.new
11
+ EXTS = %w[rb so bundle]
12
+ PATH = []
13
+ POOL = []
14
+
15
+ module_function
16
+
17
+ Ramaze.options.setup << self
18
+
19
+ def setup
20
+ PLUGIN_LIST.each do |name, const, options|
21
+ const.setup(options) if const.respond_to?(:setup)
22
+ end
23
+ end
24
+
25
+ def teardown
26
+ PLUGIN_LIST.each do |name, const, options|
27
+ const.teardown if const.respond_to?(:teardown)
28
+ end
29
+ end
30
+
31
+ def add_pool(pool)
32
+ POOL.unshift(pool)
33
+ POOL.uniq!
34
+ end
35
+
36
+ add_pool(self)
37
+
38
+ def add_path(path)
39
+ PATH.unshift(File.expand_path(path))
40
+ PATH.uniq!
41
+ end
42
+
43
+ add_path(__DIR__)
44
+ add_path('')
45
+
46
+ def load(name, options)
47
+ name = name.to_s
48
+ try_require(name.snake_case)
49
+ PLUGIN_LIST << [name, const_get(name.camel_case), options]
50
+ rescue Exception => exception
51
+ Log.error(exception)
52
+ raise LoadError, "Plugin #{name} not found"
53
+ end
54
+
55
+ def try_require(name)
56
+ found = Dir[glob(name)].first
57
+ require(File.expand_path(found)) if found
58
+ rescue LoadError
59
+ end
60
+
61
+ def glob(name = '*')
62
+ "{#{paths.join(',')}}/plugin/#{name}.{#{EXTS.join(',')}}"
63
+ end
64
+
65
+ def paths
66
+ PATH
67
+ end
68
+ end
69
+ end
@@ -46,7 +46,11 @@ module Ramaze
46
46
  }
47
47
 
48
48
  begin
49
- gem 'RInotify', '>=0.9' # is older version ok?
49
+ begin
50
+ gem('RInotify', '>=0.9') # is older version ok?
51
+ rescue NoMethodError # Kernel::gem might simply be not available
52
+ end
53
+
50
54
  require 'rinotify'
51
55
  require 'ramaze/reloader/watch_inotify'
52
56
  Watcher = WatchInotify
@@ -56,7 +60,7 @@ module Ramaze
56
60
  Watcher = WatchStat
57
61
  end
58
62
 
59
- def initialize(app = nil)
63
+ def initialize(app)
60
64
  @app = app
61
65
  @files = {}
62
66
  @watcher = Watcher.new
@@ -81,7 +85,7 @@ module Ramaze
81
85
  end
82
86
  end
83
87
 
84
- @app.call(env) if @app
88
+ @app.call(env)
85
89
  end
86
90
 
87
91
  def cycle
@@ -147,9 +151,7 @@ module Ramaze
147
151
  # Overwrite to add actions after a file is Kernel::load-ed successfully,
148
152
  # by default we clean the Cache for compiled templates and resolved actions.
149
153
  def after_safe_load_succeed(file)
150
- Ramaze::Cache.compiled.clear
151
- Ramaze::Cache.resolved.clear
152
- Ramaze::Cache.action_methods.clear
154
+ Cache.clear_after_reload
153
155
  after_safe_load(file)
154
156
  end
155
157
 
@@ -0,0 +1,117 @@
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
+ # The purpose of this class is to act as a simple wrapper for Rack::Request
6
+ # and provide some convinient methods for our own use.
7
+ class Request < Innate::Request
8
+ # Currently active request out of STATE[:request]
9
+ def self.current; Current.request; end
10
+
11
+ # you can access the original @request via this method_missing,
12
+ # first it tries to match your method with any of the HTTP parameters
13
+ # then, in case that fails, it will relay to @request
14
+
15
+ def method_missing meth, *args
16
+ key = meth.to_s.upcase
17
+ return env[key] if env.has_key?(key)
18
+ super
19
+ end
20
+
21
+ # Sets any arguments passed as @instance_variables for the current action.
22
+ #
23
+ # Usage:
24
+ # request.params # => {'name' => 'manveru', 'q' => 'google', 'lang' => 'de'}
25
+ # to_ivs(:name, :q)
26
+ # @q # => 'google'
27
+ # @name # => 'manveru'
28
+ # @lang # => nil
29
+
30
+ def to_ivs(*args)
31
+ instance = Action.current.instance
32
+ args.each do |arg|
33
+ next unless value = self[arg]
34
+ instance.instance_variable_set("@#{arg}", value)
35
+ end
36
+ end
37
+
38
+ def accept_charset(default = 'UTF-8')
39
+ return default unless charsets = env['HTTP_ACCEPT_CHARSET']
40
+ charset = charsets.split(',', 2).first
41
+ charset == '*' ? default : charset
42
+ end
43
+
44
+ # Try to find out which languages the client would like to have and sort
45
+ # them by weight, (most wanted first).
46
+ #
47
+ # Returns and array of locales from env['HTTP_ACCEPT_LANGUAGE].
48
+ # e.g. ["fi", "en", "ja", "fr", "de", "es", "it", "nl", "sv"]
49
+ #
50
+ # Usage:
51
+ #
52
+ # request.accept_language
53
+ # # => ['en-us', 'en', 'de-at', 'de']
54
+ #
55
+ # @param [String #to_s] string the value of HTTP_ACCEPT_LANGUAGE
56
+ # @return [Array] list of locales
57
+ # @see Request#accept_language_with_weight
58
+ # @author manveru
59
+ def accept_language(string = env['HTTP_ACCEPT_LANGUAGE'])
60
+ return [] unless string
61
+
62
+ accept_language_with_weight(string).map{|lang, weight| lang }
63
+ end
64
+ alias locales accept_language
65
+
66
+ # Transform the HTTP_ACCEPT_LANGUAGE header into an Array with:
67
+ #
68
+ # [[lang, weight], [lang, weight], ...]
69
+ #
70
+ # This algorithm was taken and improved from the locales library.
71
+ #
72
+ # Usage:
73
+ #
74
+ # request.accept_language_with_weight
75
+ # # => [["en-us", 1.0], ["en", 0.8], ["de-at", 0.5], ["de", 0.3]]
76
+ #
77
+ # @param [String #to_s] string the value of HTTP_ACCEPT_LANGUAGE
78
+ # @return [Array] array of [lang, weight] arrays
79
+ # @see Request#accept_language
80
+ # @author manveru
81
+ def accept_language_with_weight(string = env['HTTP_ACCEPT_LANGUAGE'])
82
+ string.to_s.gsub(/\s+/, '').split(',').
83
+ map{|chunk| chunk.split(';q=', 2) }.
84
+ map{|lang, weight| [lang, weight ? weight.to_f : 1.0] }.
85
+ sort_by{|lang, weight| -weight }
86
+ end
87
+
88
+ INTERESTING_HTTP_VARIABLES =
89
+ (/USER|HOST|REQUEST|REMOTE|FORWARD|REFER|PATH|QUERY|VERSION|KEEP|CACHE/)
90
+
91
+ # Interesting HTTP variables from env
92
+ def http_variables
93
+ env.reject{|key, value| key.to_s !~ INTERESTING_HTTP_VARIABLES }
94
+ end
95
+ alias http_vars http_variables
96
+
97
+ REQUEST_STRING_FORMAT = "#<%s params=%p cookies=%p env=%p>"
98
+
99
+ def to_s
100
+ REQUEST_STRING_FORMAT % [self.class, params, cookies, http_variables]
101
+ end
102
+ alias inspect to_s
103
+
104
+ # Pretty prints current action with parameters, cookies and enviroment
105
+ # variables.
106
+ def pretty_print(pp)
107
+ pp.object_group(self){
108
+ group = { 'params' => params, 'cookies' => cookies, 'env' => http_variables }
109
+ group.each do |name, hash|
110
+ pp.breakable
111
+ pp.text " @#{name}="
112
+ pp.nest(name.size + 3){ pp.pp_hash(hash) }
113
+ end
114
+ }
115
+ end
116
+ end
117
+ end
@@ -1,24 +1,23 @@
1
- # Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
1
+ # Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com
2
2
  # All files in this distribution are subject to the terms of the Ruby license.
3
3
 
4
4
  module Ramaze
5
5
  class Response < Rack::Response
6
- class << self
7
- # Alias for Current::response
8
- def current() Current.response end
9
- end
6
+ # Alias for Current.response
7
+ def self.current; Current.response; end
10
8
 
11
9
  def initialize(body = [], status = 200, header = {}, &block)
12
- header['Content-Type'] ||= Global.content_type
13
- header['Accept-Charset'] = Global.accept_charset if Global.accept_charset
10
+ modified_header = Ramaze.options.header.merge(header)
11
+ header.merge!(modified_header)
14
12
  super
15
13
  end
16
14
 
17
15
  # Build/replace this responses data
18
- def build(new_body = body, status = status, new_header = {})
19
- self.header.merge!(new_header)
16
+ def build(new_body = nil, new_status = nil, new_header = nil)
17
+ self.header.merge!(new_header) if new_header
20
18
 
21
- self.body, self.status = new_body, status
19
+ self.body = new_body if new_body
20
+ self.status = new_status if new_status
22
21
  end
23
22
 
24
23
  def body=(obj)
data/lib/ramaze/setup.rb CHANGED
@@ -1,50 +1,110 @@
1
1
  module Ramaze
2
- def self.setup(start = true, &block)
3
- SetupEnvironment.new(&block) if block_given?
4
- self.start if start
2
+ # Convenient setup and activation of gems from different sources and specific
3
+ # versions.
4
+ # It's almost like Kernel#gem but also installs automatically if a gem is
5
+ # missing.
6
+ #
7
+ # @usage
8
+ # Ramaze.setup :verbose => true do
9
+ # # gem and specific version
10
+ # gem 'makura', '>=2009.01'
11
+ #
12
+ # # gem and name for require
13
+ # gem 'aws-s3', :lib => 'aws/s3'
14
+ #
15
+ # # gem with specific version from rubyforge (default)
16
+ # gem 'json', :version => '=1.1.3', :source => rubyforge
17
+ #
18
+ # # gem from github
19
+ # gem 'manveru-org', :lib => 'org', :source => github
20
+ # end
21
+ #
22
+ # @option options [boolean] (true) verbose
23
+ # @option options [String] (nil) extconf
24
+ # @yield block
25
+ # @see GemSetup#initialize
26
+ # @author manveru
27
+ def self.setup(options = {:verbose => true}, &block)
28
+ GemSetup.new(options, &block)
5
29
  end
6
30
 
7
- class SetupEnvironment
8
- # FIXME:
9
- # * This is weird, class scope includes Global, yet it's skipped
10
- # by Ruby on the lookup only because it's not in the scope of the block
11
- # at the point of creation, shouldn't instance_eval take the binding of
12
- # the SetupEnvironment instance in acocunt?
31
+ class GemSetup
32
+ def initialize(options = {}, &block)
33
+ @gems = []
34
+ @options = options.dup
35
+ @verbose = @options.delete(:verbose)
13
36
 
14
- def initialize(&block)
37
+ run(&block)
38
+ end
39
+
40
+ def run(&block)
41
+ return unless block_given?
15
42
  instance_eval(&block)
43
+ setup
44
+ end
45
+
46
+ def gem(name, version = nil, options = {})
47
+ if version.respond_to?(:merge!)
48
+ options = version
49
+ else
50
+ options[:version] = version
51
+ end
52
+
53
+ @gems << [name, options]
16
54
  end
17
55
 
18
- # Shortcut for Ramaze::Gems::gem
19
- def gem(*args)
20
- require 'ramaze/contrib/gems'
21
- Ramaze::Gems::gem(*args)
22
- Ramaze::Gems::setup
56
+ # all gems defined, let's try to load/install them
57
+ def setup
58
+ require 'rubygems'
59
+ require 'rubygems/dependency_installer'
60
+
61
+ @gems.each do |name, options|
62
+ setup_gem(name, options)
63
+ end
23
64
  end
24
65
 
25
- # Shortcut if you don't need specific versions but tons of gems
26
- def gems(*args)
27
- args.each{|g| gem(g) }
66
+ # first try to activate, install and try to activate again if activation
67
+ # fails the first time
68
+ def setup_gem(name, options, try_install = true)
69
+ log "activating #{name}"
70
+ Gem.activate(name, *[options[:version]].compact)
71
+ require(options[:lib] || name)
72
+ rescue LoadError => exception
73
+ puts exception
74
+ install_gem(name, options) if try_install
75
+ setup_gem(name, options, try_install = false)
28
76
  end
29
77
 
30
- def global(hash = nil)
31
- if hash
32
- Global.merge!(hash)
33
- else
34
- Global
78
+ # tell rubygems to install a gem
79
+ def install_gem(name, options)
80
+ installer = Gem::DependencyInstaller.new(options)
81
+
82
+ temp_argv(options[:extconf]) do
83
+ log "Installing #{name}"
84
+ installer.install(name, options[:version])
35
85
  end
36
86
  end
37
- alias option global
38
- end
39
- end
40
87
 
41
- __END__
42
- Usage example:
88
+ # prepare ARGV for rubygems installer
89
+ def temp_argv(extconf)
90
+ if extconf ||= @options[:extconf]
91
+ old_argv = ARGV.clone
92
+ ARGV.replace(extconf.split(' '))
93
+ end
94
+
95
+ yield
43
96
 
44
- Ramaze.setup do
45
- gem 'json'
97
+ ensure
98
+ ARGV.replace(old_argv) if extconf
99
+ end
100
+
101
+ private
46
102
 
47
- option :middleware => true
48
- global.adapter = :thin
49
- option.port = 7000
103
+ def log(msg)
104
+ puts(msg) if @verbose
105
+ end
106
+
107
+ def rubyforge; 'http://gems.rubyforge.org/' end
108
+ def github; 'http://gems.github.com/' end
109
+ end
50
110
  end
@@ -1,6 +1,8 @@
1
1
  module Ramaze
2
2
  DEPRECATED_CONSTANTS = {
3
- :ThreadAccessor => :StateAccessor
3
+ :BASEDIR => :ROOT,
4
+ :Template => :View,
5
+ :Optional => :Optioned,
4
6
  }
5
7
 
6
8
  def self.deprecated(from, to = nil)
@@ -398,107 +398,3 @@ module Ramaze
398
398
 
399
399
  end
400
400
  end
401
-
402
-
403
-
404
- # _____ _
405
- # |_ _|__ ___| |_
406
- # | |/ _ \/ __| __|
407
- # | | __/\__ \ |_
408
- # |_|\___||___/\__|
409
- #
410
-
411
- =begin testing
412
-
413
- require 'test/unit'
414
-
415
- class TC_Dictionary < Test::Unit::TestCase
416
-
417
- def test_create
418
- hsh = Dictionary['z', 1, 'a', 2, 'c', 3]
419
- assert_equal( ['z','a','c'], hsh.keys )
420
- end
421
-
422
- def test_op_store
423
- hsh = Dictionary.new
424
- hsh['z'] = 1
425
- hsh['a'] = 2
426
- hsh['c'] = 3
427
- assert_equal( ['z','a','c'], hsh.keys )
428
- end
429
-
430
- def test_push
431
- hsh = Dictionary['a', 1, 'c', 2, 'z', 3]
432
- assert( hsh.push('end', 15) )
433
- assert_equal( 15, hsh['end'] )
434
- assert( ! hsh.push('end', 30) )
435
- assert( hsh.unshift('begin', 50) )
436
- assert_equal( 50, hsh['begin'] )
437
- assert( ! hsh.unshift('begin', 60) )
438
- assert_equal( ["begin", "a", "c", "z", "end"], hsh.keys )
439
- assert_equal( ["end", 15], hsh.pop )
440
- assert_equal( ["begin", "a", "c", "z"], hsh.keys )
441
- assert_equal( ["begin", 50], hsh.shift )
442
- end
443
-
444
- def test_insert
445
- # front
446
- h = Dictionary['a', 1, 'b', 2, 'c', 3]
447
- r = Dictionary['d', 4, 'a', 1, 'b', 2, 'c', 3]
448
- assert_equal( 4, h.insert(0,'d',4) )
449
- assert_equal( r, h )
450
- # back
451
- h = Dictionary['a', 1, 'b', 2, 'c', 3]
452
- r = Dictionary['a', 1, 'b', 2, 'c', 3, 'd', 4]
453
- assert_equal( 4, h.insert(-1,'d',4) )
454
- assert_equal( r, h )
455
- end
456
-
457
- def test_update
458
- # with other orderred hash
459
- h1 = Dictionary['a', 1, 'b', 2, 'c', 3]
460
- h2 = Dictionary['d', 4]
461
- r = Dictionary['a', 1, 'b', 2, 'c', 3, 'd', 4]
462
- assert_equal( r, h1.update(h2) )
463
- assert_equal( r, h1 )
464
- # with other hash
465
- h1 = Dictionary['a', 1, 'b', 2, 'c', 3]
466
- h2 = { 'd' => 4 }
467
- r = Dictionary['a', 1, 'b', 2, 'c', 3, 'd', 4]
468
- assert_equal( r, h1.update(h2) )
469
- assert_equal( r, h1 )
470
- end
471
-
472
- def test_merge
473
- # with other orderred hash
474
- h1 = Dictionary['a', 1, 'b', 2, 'c', 3]
475
- h2 = Dictionary['d', 4]
476
- r = Dictionary['a', 1, 'b', 2, 'c', 3, 'd', 4]
477
- assert_equal( r, h1.merge(h2) )
478
- # with other hash
479
- h1 = Dictionary['a', 1, 'b', 2, 'c', 3]
480
- h2 = { 'd' => 4 }
481
- r = Dictionary['a', 1, 'b', 2, 'c', 3, 'd', 4]
482
- assert_equal( r, h1.merge(h2) )
483
- end
484
-
485
- def test_order_by
486
- h1 = Dictionary['a', 3, 'b', 2, 'c', 1]
487
- h1.order_by{ |k,v| v }
488
- assert_equal( [1,2,3], h1.values )
489
- assert_equal( ['c','b','a'], h1.keys )
490
- end
491
-
492
- def test_op_store
493
- h1 = Dictionary[]
494
- h1[:a] = 1
495
- h1[:c] = 3
496
- assert_equal( [1,3], h1.values )
497
- h1[:b,1] = 2
498
- assert_equal( [1,2,3], h1.values )
499
- assert_equal( [:a,:b,:c], h1.keys )
500
- end
501
-
502
- end
503
-
504
- =end
@@ -1,10 +1,10 @@
1
1
  module Ramaze
2
2
  class Fiber < ::Fiber
3
- attr_accessor :state
4
-
5
- def initialize(*args)
6
- super
7
- @state = {}
3
+ # initialize isn't being called, so we have to hook into ::new
4
+ def self.new(*args)
5
+ instance = super
6
+ instance.state = {}
7
+ instance
8
8
  end
9
9
 
10
10
  attr_accessor :state
@@ -1,7 +1,8 @@
1
- libdir = File.expand_path(File.join(File.dirname(__FILE__), '../../../'))
2
- $LOAD_PATH.unshift libdir
3
- require 'vendor/bacon'
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '../../../ramaze'))
2
+
3
+ require 'bacon'
4
4
  require 'ramaze/spec/helper/pretty_output'
5
+
5
6
  Bacon.extend Bacon::PrettyOutput
6
7
  # Bacon.extend Bacon::TestUnitOutput
7
8
  Bacon.summary_on_exit
@@ -11,4 +11,6 @@ if caller
11
11
  end
12
12
  end
13
13
 
14
- require 'lib/ramaze/spec/helper/bacon'
14
+ require 'bacon'
15
+
16
+ Bacon.summary_on_exit
@@ -0,0 +1,29 @@
1
+ module Ramaze
2
+ module Spec
3
+ module Examples
4
+ module Templates
5
+ def self.tests( describe, spec_engine )
6
+
7
+ describe.behaves_like :mock
8
+
9
+ describe.it '/' do
10
+ get('/').body.strip.should =~
11
+ %r{<a href\s*=\s*"/">Home</a>\s+\|\s+<a href\s*=\s*"/internal">internal</a>\s+\|\s+<a href\s*=\s*"/external">external</a>}
12
+ end
13
+
14
+ %w[/internal /external].each do |url|
15
+ describe.it url do
16
+ html = get(url).body
17
+ html.should.not == nil
18
+ html.should =~ %r{<title>Template::#{spec_engine} (internal|external)</title>}
19
+ html.should =~ %r{<h1>The (internal|external) Template for #{spec_engine}</h1>}
20
+ end
21
+
22
+ end
23
+
24
+ end
25
+
26
+ end
27
+ end
28
+ end
29
+ end
data/lib/ramaze/spec.rb CHANGED
@@ -1 +1,37 @@
1
- require 'ramaze/spec/helper'
1
+ require 'ramaze'
2
+ require 'bacon'
3
+
4
+ require 'innate/spec'
5
+
6
+ def spec_requires(*libs)
7
+ spec_precondition 'require' do
8
+ libs.each{|lib| require(lib) }
9
+ end
10
+ end
11
+ alias spec_require spec_requires
12
+
13
+ def spec_precondition(name)
14
+ yield
15
+ rescue LoadError => ex
16
+ puts "Spec require: %p failed: %p" % [name, ex.message]
17
+ exit 0
18
+ rescue Exception => ex
19
+ puts "Spec precondition: %p failed: %p" % [name, ex.message]
20
+ exit 0
21
+ end
22
+
23
+ module Ramaze
24
+ Mock::OPTIONS[:app] = Ramaze
25
+
26
+ middleware!(:spec){|m| m.run(AppMap) }
27
+ end
28
+
29
+ shared :rack_test do
30
+ require 'rack/test'
31
+
32
+ extend Rack::Test::Methods
33
+
34
+ def app
35
+ Ramaze.middleware(:spec)
36
+ end
37
+ end
@@ -24,7 +24,7 @@ module Ramaze
24
24
  # :layout copy one subdirectory in +proto+
25
25
 
26
26
  DEFAULT = {
27
- :proto => File.join(::Ramaze::BASEDIR, 'proto'),
27
+ :proto => File.join(ROOT, 'proto'),
28
28
  :amend => false,
29
29
  :force => false,
30
30
  :layout => '/',
@@ -1,6 +1,3 @@
1
- # Copyright (c) 2009 Michael Fellinger m.fellinger@gmail.com
2
- # All files in this distribution are subject to the terms of the Ruby license.
3
-
4
1
  module Ramaze
5
- VERSION = "2009.02"
2
+ VERSION = "2009.04.08"
6
3
  end