Pistos-ramaze 2008.09

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (588) hide show
  1. data/README.markdown +481 -0
  2. data/Rakefile +228 -0
  3. data/benchmark/results.txt +131 -0
  4. data/benchmark/run.rb +362 -0
  5. data/benchmark/suite/minimal.rb +13 -0
  6. data/benchmark/suite/no_informer.rb +9 -0
  7. data/benchmark/suite/no_sessions.rb +10 -0
  8. data/benchmark/suite/no_template.rb +9 -0
  9. data/benchmark/suite/simple.rb +7 -0
  10. data/benchmark/suite/template_amrita2.rb +17 -0
  11. data/benchmark/suite/template_builder.rb +12 -0
  12. data/benchmark/suite/template_erubis.rb +10 -0
  13. data/benchmark/suite/template_ezamar.rb +10 -0
  14. data/benchmark/suite/template_haml.rb +15 -0
  15. data/benchmark/suite/template_liquid.rb +13 -0
  16. data/benchmark/suite/template_markaby.rb +11 -0
  17. data/benchmark/suite/template_nagoro.rb +10 -0
  18. data/benchmark/suite/template_redcloth.rb +15 -0
  19. data/benchmark/suite/template_tenjin.rb +10 -0
  20. data/benchmark/test.rb +35 -0
  21. data/bin/ramaze +80 -0
  22. data/doc/AUTHORS +29 -0
  23. data/doc/CHANGELOG +19530 -0
  24. data/doc/COPYING +56 -0
  25. data/doc/FAQ +92 -0
  26. data/doc/GPL +339 -0
  27. data/doc/INSTALL +92 -0
  28. data/doc/LEGAL +26 -0
  29. data/doc/TODO +29 -0
  30. data/doc/meta/announcement.txt +99 -0
  31. data/doc/meta/configuration.txt +163 -0
  32. data/doc/meta/internals.txt +278 -0
  33. data/doc/meta/users.kml +64 -0
  34. data/doc/readme_chunks/appendix.txt +10 -0
  35. data/doc/readme_chunks/examples.txt +38 -0
  36. data/doc/readme_chunks/features.txt +148 -0
  37. data/doc/readme_chunks/getting_help.txt +5 -0
  38. data/doc/readme_chunks/getting_started.txt +18 -0
  39. data/doc/readme_chunks/installing.txt +92 -0
  40. data/doc/readme_chunks/introduction.txt +18 -0
  41. data/doc/readme_chunks/principles.txt +56 -0
  42. data/doc/readme_chunks/thanks.txt +59 -0
  43. data/doc/tutorial/todolist.html +742 -0
  44. data/doc/tutorial/todolist.mkd +787 -0
  45. data/examples/app/auth/auth.rb +54 -0
  46. data/examples/app/auth/template/layout.haml +20 -0
  47. data/examples/app/auth/template/login.haml +16 -0
  48. data/examples/app/blog/README +3 -0
  49. data/examples/app/blog/controller/main.rb +29 -0
  50. data/examples/app/blog/model/entry.rb +30 -0
  51. data/examples/app/blog/public/styles/blog.css +132 -0
  52. data/examples/app/blog/spec/blog.rb +87 -0
  53. data/examples/app/blog/start.rb +7 -0
  54. data/examples/app/blog/view/edit.xhtml +17 -0
  55. data/examples/app/blog/view/index.xhtml +17 -0
  56. data/examples/app/blog/view/layout.xhtml +11 -0
  57. data/examples/app/blog/view/new.xhtml +16 -0
  58. data/examples/app/chat/model/history.rb +36 -0
  59. data/examples/app/chat/model/message.rb +7 -0
  60. data/examples/app/chat/public/css/chat.css +13 -0
  61. data/examples/app/chat/public/js/chat.js +22 -0
  62. data/examples/app/chat/public/js/jquery.js +3436 -0
  63. data/examples/app/chat/start.rb +40 -0
  64. data/examples/app/chat/view/chat.xhtml +9 -0
  65. data/examples/app/chat/view/index.xhtml +7 -0
  66. data/examples/app/chat/view/layout.xhtml +13 -0
  67. data/examples/app/localization/start.rb +35 -0
  68. data/examples/app/rapaste/Rakefile +34 -0
  69. data/examples/app/rapaste/controller/paste.rb +101 -0
  70. data/examples/app/rapaste/model/paste.rb +58 -0
  71. data/examples/app/rapaste/public/css/active4d.css +114 -0
  72. data/examples/app/rapaste/public/css/all_hallows_eve.css +72 -0
  73. data/examples/app/rapaste/public/css/amy.css +147 -0
  74. data/examples/app/rapaste/public/css/blackboard.css +88 -0
  75. data/examples/app/rapaste/public/css/brilliance_black.css +605 -0
  76. data/examples/app/rapaste/public/css/brilliance_dull.css +599 -0
  77. data/examples/app/rapaste/public/css/cobalt.css +149 -0
  78. data/examples/app/rapaste/public/css/dawn.css +121 -0
  79. data/examples/app/rapaste/public/css/display.css +197 -0
  80. data/examples/app/rapaste/public/css/eiffel.css +121 -0
  81. data/examples/app/rapaste/public/css/espresso_libre.css +109 -0
  82. data/examples/app/rapaste/public/css/idle.css +62 -0
  83. data/examples/app/rapaste/public/css/iplastic.css +80 -0
  84. data/examples/app/rapaste/public/css/lazy.css +73 -0
  85. data/examples/app/rapaste/public/css/mac_classic.css +123 -0
  86. data/examples/app/rapaste/public/css/magicwb_amiga.css +104 -0
  87. data/examples/app/rapaste/public/css/pastels_on_dark.css +188 -0
  88. data/examples/app/rapaste/public/css/slush_poppies.css +85 -0
  89. data/examples/app/rapaste/public/css/spacecadet.css +51 -0
  90. data/examples/app/rapaste/public/css/sunburst.css +180 -0
  91. data/examples/app/rapaste/public/css/twilight.css +137 -0
  92. data/examples/app/rapaste/public/css/zenburnesque.css +91 -0
  93. data/examples/app/rapaste/public/js/jquery.js +11 -0
  94. data/examples/app/rapaste/spec/rapaste.rb +51 -0
  95. data/examples/app/rapaste/start.rb +25 -0
  96. data/examples/app/rapaste/view/copy.xhtml +10 -0
  97. data/examples/app/rapaste/view/index.xhtml +9 -0
  98. data/examples/app/rapaste/view/layout.xhtml +25 -0
  99. data/examples/app/rapaste/view/list.xhtml +29 -0
  100. data/examples/app/rapaste/view/search.xhtml +41 -0
  101. data/examples/app/rapaste/view/view.xhtml +37 -0
  102. data/examples/app/sourceview/public/coderay.css +104 -0
  103. data/examples/app/sourceview/public/images/file.gif +0 -0
  104. data/examples/app/sourceview/public/images/folder.gif +0 -0
  105. data/examples/app/sourceview/public/images/tv-collapsable-last.gif +0 -0
  106. data/examples/app/sourceview/public/images/tv-collapsable.gif +0 -0
  107. data/examples/app/sourceview/public/images/tv-expandable-last.gif +0 -0
  108. data/examples/app/sourceview/public/images/tv-expandable.gif +0 -0
  109. data/examples/app/sourceview/public/images/tv-item-last.gif +0 -0
  110. data/examples/app/sourceview/public/images/tv-item.gif +0 -0
  111. data/examples/app/sourceview/public/jquery.js +11 -0
  112. data/examples/app/sourceview/public/jquery.treeview.css +48 -0
  113. data/examples/app/sourceview/public/jquery.treeview.js +223 -0
  114. data/examples/app/sourceview/public/sourceview.js +52 -0
  115. data/examples/app/sourceview/sourceview.rb +77 -0
  116. data/examples/app/sourceview/template/index.haml +59 -0
  117. data/examples/app/todolist/README +1 -0
  118. data/examples/app/todolist/public/favicon.ico +0 -0
  119. data/examples/app/todolist/public/js/jquery.js +1923 -0
  120. data/examples/app/todolist/public/ramaze.png +0 -0
  121. data/examples/app/todolist/spec/todolist.rb +132 -0
  122. data/examples/app/todolist/src/controller/main.rb +70 -0
  123. data/examples/app/todolist/src/element/page.rb +31 -0
  124. data/examples/app/todolist/src/model.rb +14 -0
  125. data/examples/app/todolist/start.rb +11 -0
  126. data/examples/app/todolist/template/index.xhtml +17 -0
  127. data/examples/app/todolist/template/new.xhtml +7 -0
  128. data/examples/app/upload/start.rb +19 -0
  129. data/examples/app/upload/view/index.xhtml +25 -0
  130. data/examples/app/whywiki/spec/whywiki.rb +58 -0
  131. data/examples/app/whywiki/start.rb +46 -0
  132. data/examples/app/whywiki/template/edit.xhtml +14 -0
  133. data/examples/app/whywiki/template/show.xhtml +18 -0
  134. data/examples/app/wikore/spec/wikore.rb +111 -0
  135. data/examples/app/wikore/src/controller.rb +80 -0
  136. data/examples/app/wikore/src/model.rb +53 -0
  137. data/examples/app/wikore/start.rb +9 -0
  138. data/examples/app/wikore/template/index.xhtml +8 -0
  139. data/examples/app/wiktacular/README +2 -0
  140. data/examples/app/wiktacular/mkd/link/2007-07-20_19-45-51.mkd +1 -0
  141. data/examples/app/wiktacular/mkd/link/current.mkd +1 -0
  142. data/examples/app/wiktacular/mkd/main/2007-07-20_16-31-33.mkd +1 -0
  143. data/examples/app/wiktacular/mkd/main/2007-07-20_19-21-12.mkd +1 -0
  144. data/examples/app/wiktacular/mkd/main/2007-07-20_19-23-10.mkd +2 -0
  145. data/examples/app/wiktacular/mkd/main/2007-07-20_19-45-07.mkd +2 -0
  146. data/examples/app/wiktacular/mkd/main/current.mkd +2 -0
  147. data/examples/app/wiktacular/mkd/markdown/current.mkd +3 -0
  148. data/examples/app/wiktacular/mkd/testing/2007-07-20_16-43-46.mkd +2 -0
  149. data/examples/app/wiktacular/mkd/testing/2007-07-20_19-43-50.mkd +3 -0
  150. data/examples/app/wiktacular/mkd/testing/2007-07-21_18-46-01.mkd +11 -0
  151. data/examples/app/wiktacular/mkd/testing/2007-07-21_18-46-32.mkd +13 -0
  152. data/examples/app/wiktacular/mkd/testing/2007-07-21_18-47-08.mkd +17 -0
  153. data/examples/app/wiktacular/mkd/testing/2007-07-21_18-47-54.mkd +17 -0
  154. data/examples/app/wiktacular/mkd/testing/current.mkd +17 -0
  155. data/examples/app/wiktacular/public/favicon.ico +0 -0
  156. data/examples/app/wiktacular/public/screen.css +72 -0
  157. data/examples/app/wiktacular/spec/wiktacular.rb +157 -0
  158. data/examples/app/wiktacular/src/controller.rb +55 -0
  159. data/examples/app/wiktacular/src/model.rb +102 -0
  160. data/examples/app/wiktacular/start.rb +8 -0
  161. data/examples/app/wiktacular/template/edit.xhtml +6 -0
  162. data/examples/app/wiktacular/template/html_layout.xhtml +27 -0
  163. data/examples/app/wiktacular/template/index.xhtml +9 -0
  164. data/examples/app/wiktacular/template/new.xhtml +6 -0
  165. data/examples/basic/element.rb +45 -0
  166. data/examples/basic/gestalt.rb +27 -0
  167. data/examples/basic/hello.rb +15 -0
  168. data/examples/basic/layout.rb +28 -0
  169. data/examples/basic/linking.rb +29 -0
  170. data/examples/basic/simple.rb +56 -0
  171. data/examples/helpers/cache.rb +31 -0
  172. data/examples/helpers/form_with_sequel.rb +24 -0
  173. data/examples/helpers/httpdigest.rb +50 -0
  174. data/examples/helpers/identity.rb +18 -0
  175. data/examples/helpers/nitro_form.rb +23 -0
  176. data/examples/helpers/paginate.rb +71 -0
  177. data/examples/helpers/provide.rb +23 -0
  178. data/examples/helpers/rest.rb +28 -0
  179. data/examples/helpers/simple_captcha.rb +29 -0
  180. data/examples/misc/css.rb +37 -0
  181. data/examples/misc/facebook.rb +159 -0
  182. data/examples/misc/memleak_detector.rb +32 -0
  183. data/examples/misc/nagoro_element.rb +43 -0
  184. data/examples/misc/ramaise.rb +132 -0
  185. data/examples/misc/rapp.rb +45 -0
  186. data/examples/misc/sequel_scaffolding.rb +34 -0
  187. data/examples/misc/simple_auth.rb +35 -0
  188. data/examples/templates/template/external.amrita +19 -0
  189. data/examples/templates/template/external.haml +22 -0
  190. data/examples/templates/template/external.liquid +28 -0
  191. data/examples/templates/template/external.mab +30 -0
  192. data/examples/templates/template/external.nag +28 -0
  193. data/examples/templates/template/external.redcloth +19 -0
  194. data/examples/templates/template/external.rem +30 -0
  195. data/examples/templates/template/external.rhtml +28 -0
  196. data/examples/templates/template/external.tenjin +28 -0
  197. data/examples/templates/template/external.xsl +57 -0
  198. data/examples/templates/template/external.zmr +28 -0
  199. data/examples/templates/template_amrita2.rb +74 -0
  200. data/examples/templates/template_erubis.rb +53 -0
  201. data/examples/templates/template_ezamar.rb +50 -0
  202. data/examples/templates/template_haml.rb +50 -0
  203. data/examples/templates/template_liquid.rb +65 -0
  204. data/examples/templates/template_markaby.rb +58 -0
  205. data/examples/templates/template_nagoro.rb +51 -0
  206. data/examples/templates/template_redcloth.rb +59 -0
  207. data/examples/templates/template_remarkably.rb +55 -0
  208. data/examples/templates/template_tenjin.rb +53 -0
  209. data/examples/templates/template_xslt.rb +49 -0
  210. data/lib/proto/controller/init.rb +10 -0
  211. data/lib/proto/controller/main.rb +20 -0
  212. data/lib/proto/model/init.rb +4 -0
  213. data/lib/proto/public/css/ramaze_error.css +90 -0
  214. data/lib/proto/public/dispatch.fcgi +11 -0
  215. data/lib/proto/public/favicon.ico +0 -0
  216. data/lib/proto/public/js/jquery.js +3549 -0
  217. data/lib/proto/public/ramaze.png +0 -0
  218. data/lib/proto/spec/main.rb +25 -0
  219. data/lib/proto/start.rb +8 -0
  220. data/lib/proto/start.ru +16 -0
  221. data/lib/proto/view/error.xhtml +64 -0
  222. data/lib/proto/view/index.xhtml +34 -0
  223. data/lib/proto/view/page.xhtml +27 -0
  224. data/lib/ramaze/action/render.rb +191 -0
  225. data/lib/ramaze/action.rb +153 -0
  226. data/lib/ramaze/adapter/base.rb +128 -0
  227. data/lib/ramaze/adapter/cgi.rb +20 -0
  228. data/lib/ramaze/adapter/ebb.rb +18 -0
  229. data/lib/ramaze/adapter/evented_mongrel.rb +7 -0
  230. data/lib/ramaze/adapter/fake.rb +12 -0
  231. data/lib/ramaze/adapter/fcgi.rb +18 -0
  232. data/lib/ramaze/adapter/lsws.rb +19 -0
  233. data/lib/ramaze/adapter/mongrel.rb +21 -0
  234. data/lib/ramaze/adapter/scgi.rb +18 -0
  235. data/lib/ramaze/adapter/swiftiplied_mongrel.rb +7 -0
  236. data/lib/ramaze/adapter/thin.rb +17 -0
  237. data/lib/ramaze/adapter/webrick.rb +43 -0
  238. data/lib/ramaze/adapter.rb +97 -0
  239. data/lib/ramaze/cache/memcached.rb +69 -0
  240. data/lib/ramaze/cache/memory.rb +6 -0
  241. data/lib/ramaze/cache/yaml_store.rb +68 -0
  242. data/lib/ramaze/cache.rb +113 -0
  243. data/lib/ramaze/contrib/auto_params/get_args.rb +58 -0
  244. data/lib/ramaze/contrib/auto_params.rb +135 -0
  245. data/lib/ramaze/contrib/email.rb +84 -0
  246. data/lib/ramaze/contrib/facebook/facebook.rb +171 -0
  247. data/lib/ramaze/contrib/facebook.rb +23 -0
  248. data/lib/ramaze/contrib/file_cache.rb +65 -0
  249. data/lib/ramaze/contrib/gems.rb +78 -0
  250. data/lib/ramaze/contrib/gettext/mo.rb +155 -0
  251. data/lib/ramaze/contrib/gettext/parser.rb +46 -0
  252. data/lib/ramaze/contrib/gettext/po.rb +109 -0
  253. data/lib/ramaze/contrib/gettext.rb +113 -0
  254. data/lib/ramaze/contrib/gzip_filter.rb +69 -0
  255. data/lib/ramaze/contrib/maruku_uv.rb +59 -0
  256. data/lib/ramaze/contrib/profiling.rb +36 -0
  257. data/lib/ramaze/contrib/rest.rb +17 -0
  258. data/lib/ramaze/contrib/sequel/create_join.rb +25 -0
  259. data/lib/ramaze/contrib/sequel/fill.rb +12 -0
  260. data/lib/ramaze/contrib/sequel/form_field.rb +129 -0
  261. data/lib/ramaze/contrib/sequel/image.rb +198 -0
  262. data/lib/ramaze/contrib/sequel/relation.rb +82 -0
  263. data/lib/ramaze/contrib/sequel_cache.rb +92 -0
  264. data/lib/ramaze/contrib.rb +82 -0
  265. data/lib/ramaze/controller/error.rb +46 -0
  266. data/lib/ramaze/controller/main.rb +2 -0
  267. data/lib/ramaze/controller/resolve.rb +273 -0
  268. data/lib/ramaze/controller.rb +280 -0
  269. data/lib/ramaze/current/request.rb +205 -0
  270. data/lib/ramaze/current/response.rb +39 -0
  271. data/lib/ramaze/current/session/flash.rb +87 -0
  272. data/lib/ramaze/current/session/hash.rb +66 -0
  273. data/lib/ramaze/current/session.rb +181 -0
  274. data/lib/ramaze/current.rb +110 -0
  275. data/lib/ramaze/dispatcher/action.rb +48 -0
  276. data/lib/ramaze/dispatcher/directory.rb +119 -0
  277. data/lib/ramaze/dispatcher/error.rb +108 -0
  278. data/lib/ramaze/dispatcher/file.rb +95 -0
  279. data/lib/ramaze/dispatcher.rb +145 -0
  280. data/lib/ramaze/error.rb +24 -0
  281. data/lib/ramaze/gestalt.rb +124 -0
  282. data/lib/ramaze/helper/aspect.rb +106 -0
  283. data/lib/ramaze/helper/auth.rb +125 -0
  284. data/lib/ramaze/helper/cache.rb +140 -0
  285. data/lib/ramaze/helper/cgi.rb +39 -0
  286. data/lib/ramaze/helper/flash.rb +59 -0
  287. data/lib/ramaze/helper/form.rb +281 -0
  288. data/lib/ramaze/helper/formatting.rb +158 -0
  289. data/lib/ramaze/helper/gestalt.rb +15 -0
  290. data/lib/ramaze/helper/gravatar.rb +15 -0
  291. data/lib/ramaze/helper/httpdigest.rb +59 -0
  292. data/lib/ramaze/helper/identity.rb +119 -0
  293. data/lib/ramaze/helper/link.rb +122 -0
  294. data/lib/ramaze/helper/markaby.rb +31 -0
  295. data/lib/ramaze/helper/maruku.rb +7 -0
  296. data/lib/ramaze/helper/nitroform.rb +14 -0
  297. data/lib/ramaze/helper/pager.rb +366 -0
  298. data/lib/ramaze/helper/paginate.rb +234 -0
  299. data/lib/ramaze/helper/partial.rb +105 -0
  300. data/lib/ramaze/helper/redirect.rb +82 -0
  301. data/lib/ramaze/helper/rest.rb +43 -0
  302. data/lib/ramaze/helper/sendfile.rb +16 -0
  303. data/lib/ramaze/helper/sequel.rb +55 -0
  304. data/lib/ramaze/helper/simple_captcha.rb +31 -0
  305. data/lib/ramaze/helper/stack.rb +77 -0
  306. data/lib/ramaze/helper/tagz.rb +19 -0
  307. data/lib/ramaze/helper/thread.rb +17 -0
  308. data/lib/ramaze/helper/ultraviolet.rb +44 -0
  309. data/lib/ramaze/helper/user.rb +110 -0
  310. data/lib/ramaze/helper/xhtml.rb +23 -0
  311. data/lib/ramaze/helper.rb +79 -0
  312. data/lib/ramaze/log/analogger.rb +40 -0
  313. data/lib/ramaze/log/growl.rb +38 -0
  314. data/lib/ramaze/log/hub.rb +41 -0
  315. data/lib/ramaze/log/informer.rb +128 -0
  316. data/lib/ramaze/log/knotify.rb +28 -0
  317. data/lib/ramaze/log/logger.rb +26 -0
  318. data/lib/ramaze/log/logging.rb +89 -0
  319. data/lib/ramaze/log/syslog.rb +51 -0
  320. data/lib/ramaze/log/xosd.rb +92 -0
  321. data/lib/ramaze/log.rb +27 -0
  322. data/lib/ramaze/option/dsl.rb +45 -0
  323. data/lib/ramaze/option/holder.rb +131 -0
  324. data/lib/ramaze/option/merger.rb +108 -0
  325. data/lib/ramaze/option.rb +156 -0
  326. data/lib/ramaze/reloader.rb +186 -0
  327. data/lib/ramaze/route.rb +97 -0
  328. data/lib/ramaze/setup.rb +50 -0
  329. data/lib/ramaze/snippets/array/put_within.rb +44 -0
  330. data/lib/ramaze/snippets/binding/locals.rb +25 -0
  331. data/lib/ramaze/snippets/blankslate.rb +7 -0
  332. data/lib/ramaze/snippets/dictionary.rb +504 -0
  333. data/lib/ramaze/snippets/divide.rb +20 -0
  334. data/lib/ramaze/snippets/fiber.rb +63 -0
  335. data/lib/ramaze/snippets/kernel/constant.rb +41 -0
  336. data/lib/ramaze/snippets/kernel/pretty_inspect.rb +21 -0
  337. data/lib/ramaze/snippets/metaid.rb +17 -0
  338. data/lib/ramaze/snippets/numeric/filesize_format.rb +32 -0
  339. data/lib/ramaze/snippets/numeric/time.rb +63 -0
  340. data/lib/ramaze/snippets/object/__dir__.rb +29 -0
  341. data/lib/ramaze/snippets/object/acquire.rb +40 -0
  342. data/lib/ramaze/snippets/object/instance_variable_defined.rb +19 -0
  343. data/lib/ramaze/snippets/object/pretty.rb +16 -0
  344. data/lib/ramaze/snippets/object/scope.rb +18 -0
  345. data/lib/ramaze/snippets/object/traits.rb +76 -0
  346. data/lib/ramaze/snippets/ordered_set.rb +51 -0
  347. data/lib/ramaze/snippets/proc/locals.rb +19 -0
  348. data/lib/ramaze/snippets/ramaze/caller_info.rb +30 -0
  349. data/lib/ramaze/snippets/ramaze/caller_lines.rb +51 -0
  350. data/lib/ramaze/snippets/ramaze/deprecated.rb +20 -0
  351. data/lib/ramaze/snippets/ramaze/fiber.rb +24 -0
  352. data/lib/ramaze/snippets/ramaze/state.rb +86 -0
  353. data/lib/ramaze/snippets/ramaze/struct.rb +45 -0
  354. data/lib/ramaze/snippets/string/camel_case.rb +21 -0
  355. data/lib/ramaze/snippets/string/color.rb +31 -0
  356. data/lib/ramaze/snippets/string/each.rb +19 -0
  357. data/lib/ramaze/snippets/string/end_with.rb +20 -0
  358. data/lib/ramaze/snippets/string/esc.rb +34 -0
  359. data/lib/ramaze/snippets/string/ord.rb +21 -0
  360. data/lib/ramaze/snippets/string/snake_case.rb +21 -0
  361. data/lib/ramaze/snippets/string/start_with.rb +19 -0
  362. data/lib/ramaze/snippets/string/unindent.rb +28 -0
  363. data/lib/ramaze/snippets/thread/into.rb +18 -0
  364. data/lib/ramaze/snippets.rb +22 -0
  365. data/lib/ramaze/spec/helper/bacon.rb +7 -0
  366. data/lib/ramaze/spec/helper/browser.rb +88 -0
  367. data/lib/ramaze/spec/helper/mock_http.rb +63 -0
  368. data/lib/ramaze/spec/helper/pretty_output.rb +82 -0
  369. data/lib/ramaze/spec/helper/requester.rb +63 -0
  370. data/lib/ramaze/spec/helper/simple_http.rb +434 -0
  371. data/lib/ramaze/spec/helper/snippets.rb +14 -0
  372. data/lib/ramaze/spec/helper.rb +135 -0
  373. data/lib/ramaze/spec.rb +1 -0
  374. data/lib/ramaze/store/default.rb +109 -0
  375. data/lib/ramaze/template/amrita2.rb +45 -0
  376. data/lib/ramaze/template/builder.rb +28 -0
  377. data/lib/ramaze/template/erubis.rb +41 -0
  378. data/lib/ramaze/template/ezamar/element.rb +169 -0
  379. data/lib/ramaze/template/ezamar/engine.rb +76 -0
  380. data/lib/ramaze/template/ezamar/morpher.rb +135 -0
  381. data/lib/ramaze/template/ezamar/render_partial.rb +31 -0
  382. data/lib/ramaze/template/ezamar/textpow.syntax +34 -0
  383. data/lib/ramaze/template/ezamar.rb +42 -0
  384. data/lib/ramaze/template/haml.rb +37 -0
  385. data/lib/ramaze/template/liquid.rb +36 -0
  386. data/lib/ramaze/template/markaby.rb +52 -0
  387. data/lib/ramaze/template/maruku.rb +34 -0
  388. data/lib/ramaze/template/nagoro.rb +52 -0
  389. data/lib/ramaze/template/none.rb +14 -0
  390. data/lib/ramaze/template/redcloth.rb +25 -0
  391. data/lib/ramaze/template/remarkably.rb +38 -0
  392. data/lib/ramaze/template/sass.rb +37 -0
  393. data/lib/ramaze/template/tagz.rb +79 -0
  394. data/lib/ramaze/template/tenjin.rb +74 -0
  395. data/lib/ramaze/template/xslt.rb +100 -0
  396. data/lib/ramaze/template.rb +87 -0
  397. data/lib/ramaze/tool/create.rb +48 -0
  398. data/lib/ramaze/tool/daemonize.rb +37 -0
  399. data/lib/ramaze/tool/localize.rb +202 -0
  400. data/lib/ramaze/tool/mime.rb +35 -0
  401. data/lib/ramaze/tool/mime_types.yaml +615 -0
  402. data/lib/ramaze/tool/project_creator.rb +110 -0
  403. data/lib/ramaze/tool/record.rb +6 -0
  404. data/lib/ramaze/tool.rb +9 -0
  405. data/lib/ramaze/trinity.rb +16 -0
  406. data/lib/ramaze/version.rb +6 -0
  407. data/lib/ramaze.rb +133 -0
  408. data/lib/vendor/bacon.rb +323 -0
  409. data/rake_tasks/conf.rake +71 -0
  410. data/rake_tasks/coverage.rake +46 -0
  411. data/rake_tasks/gem.rake +74 -0
  412. data/rake_tasks/git.rake +41 -0
  413. data/rake_tasks/maintenance.rake +386 -0
  414. data/rake_tasks/metric.rake +24 -0
  415. data/rake_tasks/release.rake +76 -0
  416. data/rake_tasks/spec.rake +61 -0
  417. data/ramaze.gemspec +773 -0
  418. data/spec/contrib/auto_params.rb +121 -0
  419. data/spec/contrib/profiling.rb +29 -0
  420. data/spec/contrib/sequel/fill.rb +47 -0
  421. data/spec/examples/caching.rb +19 -0
  422. data/spec/examples/css.rb +15 -0
  423. data/spec/examples/element.rb +15 -0
  424. data/spec/examples/hello.rb +11 -0
  425. data/spec/examples/linking.rb +18 -0
  426. data/spec/examples/simple.rb +45 -0
  427. data/spec/examples/simple_auth.rb +32 -0
  428. data/spec/examples/templates/template_amrita2.rb +16 -0
  429. data/spec/examples/templates/template_erubis.rb +23 -0
  430. data/spec/examples/templates/template_ezamar.rb +23 -0
  431. data/spec/examples/templates/template_haml.rb +23 -0
  432. data/spec/examples/templates/template_liquid.rb +29 -0
  433. data/spec/examples/templates/template_markaby.rb +23 -0
  434. data/spec/examples/templates/template_redcloth.rb +28 -0
  435. data/spec/examples/templates/template_remarkably.rb +23 -0
  436. data/spec/examples/templates/template_tenjin.rb +28 -0
  437. data/spec/helper.rb +3 -0
  438. data/spec/ramaze/action/basics.rb +36 -0
  439. data/spec/ramaze/action/cache.rb +87 -0
  440. data/spec/ramaze/action/file_cache.rb +70 -0
  441. data/spec/ramaze/action/layout.rb +190 -0
  442. data/spec/ramaze/action/render.rb +31 -0
  443. data/spec/ramaze/action/view/bar.xhtml +1 -0
  444. data/spec/ramaze/action/view/instancevars/layout.xhtml +1 -0
  445. data/spec/ramaze/action/view/other_wrapper.xhtml +1 -0
  446. data/spec/ramaze/action/view/single_wrapper.xhtml +1 -0
  447. data/spec/ramaze/action/view/sub/sub_wrapper.xhtml +1 -0
  448. data/spec/ramaze/adapter/ebb.rb +12 -0
  449. data/spec/ramaze/adapter/mongrel.rb +12 -0
  450. data/spec/ramaze/adapter/record.rb +31 -0
  451. data/spec/ramaze/adapter/webrick.rb +12 -0
  452. data/spec/ramaze/adapter.rb +49 -0
  453. data/spec/ramaze/cache.rb +140 -0
  454. data/spec/ramaze/controller/actionless_templates.rb +32 -0
  455. data/spec/ramaze/controller/resolve.rb +32 -0
  456. data/spec/ramaze/controller/subclass.rb +36 -0
  457. data/spec/ramaze/controller/template_resolving.rb +113 -0
  458. data/spec/ramaze/controller/view/bar.xhtml +1 -0
  459. data/spec/ramaze/controller/view/base/another.xhtml +1 -0
  460. data/spec/ramaze/controller/view/greet.xhtml +1 -0
  461. data/spec/ramaze/controller/view/list.xhtml +1 -0
  462. data/spec/ramaze/controller/view/other/greet/other.xhtml +1 -0
  463. data/spec/ramaze/controller/view/other_wrapper.xhtml +1 -0
  464. data/spec/ramaze/controller.rb +180 -0
  465. data/spec/ramaze/current/request.rb +30 -0
  466. data/spec/ramaze/current/session.rb +97 -0
  467. data/spec/ramaze/dispatcher/directory.rb +55 -0
  468. data/spec/ramaze/dispatcher/file.rb +60 -0
  469. data/spec/ramaze/dispatcher/public/favicon.ico +0 -0
  470. data/spec/ramaze/dispatcher/public/file name.txt +1 -0
  471. data/spec/ramaze/dispatcher/public/test_download.css +141 -0
  472. data/spec/ramaze/dispatcher.rb +31 -0
  473. data/spec/ramaze/element.rb +107 -0
  474. data/spec/ramaze/error.rb +94 -0
  475. data/spec/ramaze/gestalt.rb +131 -0
  476. data/spec/ramaze/helper/aspect.rb +101 -0
  477. data/spec/ramaze/helper/auth.rb +66 -0
  478. data/spec/ramaze/helper/cache.rb +160 -0
  479. data/spec/ramaze/helper/cgi.rb +43 -0
  480. data/spec/ramaze/helper/file.rb +18 -0
  481. data/spec/ramaze/helper/flash.rb +133 -0
  482. data/spec/ramaze/helper/form.rb +118 -0
  483. data/spec/ramaze/helper/formatting.rb +54 -0
  484. data/spec/ramaze/helper/link.rb +124 -0
  485. data/spec/ramaze/helper/pager.rb +99 -0
  486. data/spec/ramaze/helper/partial.rb +88 -0
  487. data/spec/ramaze/helper/redirect.rb +112 -0
  488. data/spec/ramaze/helper/simple_captcha.rb +22 -0
  489. data/spec/ramaze/helper/stack.rb +73 -0
  490. data/spec/ramaze/helper/user.rb +43 -0
  491. data/spec/ramaze/helper/view/locals.xhtml +1 -0
  492. data/spec/ramaze/helper/view/loop.xhtml +4 -0
  493. data/spec/ramaze/helper/view/num.xhtml +1 -0
  494. data/spec/ramaze/helper/view/partial.xhtml +1 -0
  495. data/spec/ramaze/helper/view/recursive.xhtml +8 -0
  496. data/spec/ramaze/helper/view/recursive_local_ivars.xhtml +7 -0
  497. data/spec/ramaze/helper/view/recursive_locals.xhtml +7 -0
  498. data/spec/ramaze/helper/view/test_template.xhtml +1 -0
  499. data/spec/ramaze/localize.rb +89 -0
  500. data/spec/ramaze/log/informer.rb +72 -0
  501. data/spec/ramaze/log/syslog.rb +73 -0
  502. data/spec/ramaze/morpher.rb +111 -0
  503. data/spec/ramaze/params.rb +157 -0
  504. data/spec/ramaze/public/error404.xhtml +1 -0
  505. data/spec/ramaze/public/favicon.ico +0 -0
  506. data/spec/ramaze/public/ramaze.png +0 -0
  507. data/spec/ramaze/public/test_download.css +141 -0
  508. data/spec/ramaze/request/ebb.rb +9 -0
  509. data/spec/ramaze/request/mongrel.rb +9 -0
  510. data/spec/ramaze/request/thin.rb +9 -0
  511. data/spec/ramaze/request/webrick.rb +5 -0
  512. data/spec/ramaze/request.rb +185 -0
  513. data/spec/ramaze/rewrite/file.css +1 -0
  514. data/spec/ramaze/rewrite.rb +36 -0
  515. data/spec/ramaze/route.rb +131 -0
  516. data/spec/ramaze/session.rb +94 -0
  517. data/spec/ramaze/store/default.rb +71 -0
  518. data/spec/ramaze/struct.rb +47 -0
  519. data/spec/ramaze/template/amrita2/external.amrita +6 -0
  520. data/spec/ramaze/template/amrita2/sum.amrita +1 -0
  521. data/spec/ramaze/template/amrita2.rb +50 -0
  522. data/spec/ramaze/template/builder/external.rxml +3 -0
  523. data/spec/ramaze/template/builder.rb +51 -0
  524. data/spec/ramaze/template/erubis/sum.rhtml +1 -0
  525. data/spec/ramaze/template/erubis.rb +41 -0
  526. data/spec/ramaze/template/ezamar/another/long/action.zmr +1 -0
  527. data/spec/ramaze/template/ezamar/combined.zmr +1 -0
  528. data/spec/ramaze/template/ezamar/file_only.zmr +1 -0
  529. data/spec/ramaze/template/ezamar/index.zmr +1 -0
  530. data/spec/ramaze/template/ezamar/nested.zmr +1 -0
  531. data/spec/ramaze/template/ezamar/other__index.xhtml +1 -0
  532. data/spec/ramaze/template/ezamar/some__long__action.zmr +1 -0
  533. data/spec/ramaze/template/ezamar/sum.zmr +1 -0
  534. data/spec/ramaze/template/ezamar.rb +63 -0
  535. data/spec/ramaze/template/haml/index.haml +5 -0
  536. data/spec/ramaze/template/haml/locals.haml +2 -0
  537. data/spec/ramaze/template/haml/with_vars.haml +4 -0
  538. data/spec/ramaze/template/haml.rb +66 -0
  539. data/spec/ramaze/template/liquid/index.liquid +1 -0
  540. data/spec/ramaze/template/liquid/products.liquid +45 -0
  541. data/spec/ramaze/template/liquid.rb +99 -0
  542. data/spec/ramaze/template/markaby/external.mab +8 -0
  543. data/spec/ramaze/template/markaby/sum.mab +1 -0
  544. data/spec/ramaze/template/markaby.rb +61 -0
  545. data/spec/ramaze/template/nagoro/another/long/action.nag +1 -0
  546. data/spec/ramaze/template/nagoro/combined.nag +1 -0
  547. data/spec/ramaze/template/nagoro/file_only.nag +1 -0
  548. data/spec/ramaze/template/nagoro/index.nag +1 -0
  549. data/spec/ramaze/template/nagoro/nested.nag +1 -0
  550. data/spec/ramaze/template/nagoro/some__long__action.nag +1 -0
  551. data/spec/ramaze/template/nagoro/sum.nag +1 -0
  552. data/spec/ramaze/template/nagoro.rb +64 -0
  553. data/spec/ramaze/template/ramaze/external.test +1 -0
  554. data/spec/ramaze/template/redcloth/external.redcloth +1 -0
  555. data/spec/ramaze/template/redcloth.rb +38 -0
  556. data/spec/ramaze/template/remarkably/external.rem +8 -0
  557. data/spec/ramaze/template/remarkably/sum.rem +1 -0
  558. data/spec/ramaze/template/remarkably.rb +58 -0
  559. data/spec/ramaze/template/sass/file.css.sass +5 -0
  560. data/spec/ramaze/template/sass.rb +69 -0
  561. data/spec/ramaze/template/tagz/external.tagz +8 -0
  562. data/spec/ramaze/template/tagz/sum.tagz +1 -0
  563. data/spec/ramaze/template/tagz.rb +62 -0
  564. data/spec/ramaze/template/tenjin/external.tenjin +1 -0
  565. data/spec/ramaze/template/tenjin.rb +47 -0
  566. data/spec/ramaze/template/xslt/concat_words.xsl +16 -0
  567. data/spec/ramaze/template/xslt/index.xsl +14 -0
  568. data/spec/ramaze/template/xslt/products.xsl +32 -0
  569. data/spec/ramaze/template/xslt/ruby_version.xsl +14 -0
  570. data/spec/ramaze/template/xslt.rb +90 -0
  571. data/spec/ramaze/template.rb +128 -0
  572. data/spec/snippets/array/put_within.rb +33 -0
  573. data/spec/snippets/binding/locals.rb +9 -0
  574. data/spec/snippets/divide.rb +19 -0
  575. data/spec/snippets/kernel/constant.rb +23 -0
  576. data/spec/snippets/numeric/filesize_format.rb +12 -0
  577. data/spec/snippets/numeric/time.rb +12 -0
  578. data/spec/snippets/object/__dir__.rb +8 -0
  579. data/spec/snippets/object/acquire.rb +71 -0
  580. data/spec/snippets/ordered_set.rb +63 -0
  581. data/spec/snippets/ramaze/caller_info.rb +39 -0
  582. data/spec/snippets/ramaze/caller_lines.rb +30 -0
  583. data/spec/snippets/string/camel_case.rb +25 -0
  584. data/spec/snippets/string/color.rb +11 -0
  585. data/spec/snippets/string/snake_case.rb +24 -0
  586. data/spec/snippets/string/unindent.rb +43 -0
  587. data/spec/snippets/thread/into.rb +20 -0
  588. metadata +823 -0
@@ -0,0 +1,92 @@
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
+ Ramaze::Log.log( :warn, "Both xosd gems are currently known to be broken" )
5
+ require 'xosd'
6
+ require 'thread'
7
+
8
+ module Ramaze
9
+ module Logger
10
+
11
+ # Informer for the XOSD notification system for X11.
12
+ #
13
+ # You can install the ruby-bindings with:
14
+ # gem install xosd.
15
+
16
+ class Xosd < ::Xosd
17
+ attr_accessor :options
18
+
19
+ include Logging
20
+
21
+ DEFAULT = {
22
+ :font_size => 20,
23
+ :font => "-*-*-*-*-*-*-%d-*-*-*-*-*-*-*",
24
+ :align => 'center',
25
+ :color => '#FFFFFF',
26
+ :lines => 3,
27
+ :valign => 'top',
28
+ :timeout => 3,
29
+ :outline_color => "#000000",
30
+ :outline_width => 1,
31
+ :vertical_offset => 20,
32
+ :colors => {
33
+ :error => "#FF0000",
34
+ :info => "#00FF00",
35
+ :warn => "#EAA61E",
36
+ :debug => "#FFFF00"
37
+ },
38
+ }
39
+
40
+ # keys to ignore when setting the options to the instance.
41
+ IGNORE = [:colors, :font_size, :lines]
42
+
43
+ # Here new messages are pushed to eventually displaying them.
44
+ QUEUE = Queue.new
45
+
46
+ # Create a new instance, valid options are in DEFAULT.
47
+ # In the background a new thread will be running that checks the QUEUE
48
+ # and processes all messages that are being sent to it.
49
+ # This is done to make output nicer and readable.
50
+
51
+ def initialize(options = {})
52
+ @options = DEFAULT.merge(options)
53
+
54
+ super(@options[:lines])
55
+
56
+ @options.each do |key, value|
57
+ next if IGNORE.include?(key)
58
+ value %= @options[:font_size] if key == :font
59
+ send("#{key}=", value)
60
+ end
61
+
62
+ Thread.new(self) do |xosd|
63
+ loop do
64
+ items = []
65
+ lines = xosd.options[:lines]
66
+ items << QUEUE.shift until QUEUE.empty? or items.size >= lines
67
+
68
+ unless items.empty?
69
+ # pad up with empty lines to avoid dragging around old messages.
70
+ items << [:info, ' '] until items.size >= lines
71
+
72
+ items.each_with_index do |(tag, message), i|
73
+ xosd.color = xosd.options[:colors][tag.to_sym]
74
+ xosd.display(message, i)
75
+ end
76
+ end
77
+ sleep xosd.options[:timeout]
78
+ end
79
+ end
80
+ end
81
+
82
+ # pushes all messages it gets on the QUEUE for further processing.
83
+
84
+ def log(tag, *messages)
85
+ messages.each do |message|
86
+ QUEUE << [tag, message]
87
+ end
88
+ end
89
+ end
90
+
91
+ end
92
+ end
data/lib/ramaze/log.rb ADDED
@@ -0,0 +1,27 @@
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 'ramaze/log/logging'
5
+ require 'ramaze/log/hub'
6
+ require 'ramaze/log/informer'
7
+
8
+ begin
9
+ require 'win32console' if RUBY_PLATFORM =~ /win32/i
10
+ rescue LoadError => ex
11
+ puts ex
12
+ puts "For nice colors on windows, please `gem install win32console`"
13
+ Ramaze::Logger::Informer.trait[:colorize] = false
14
+ end
15
+
16
+ module Ramaze
17
+ autoload :Analogger, "ramaze/log/analogger.rb"
18
+ autoload :Knotify, "ramaze/log/knotify.rb"
19
+ autoload :Syslog, "ramaze/log/syslog.rb"
20
+ autoload :Growl, "ramaze/log/growl.rb"
21
+ autoload :Xosd, "ramaze/log/xosd.rb"
22
+ autoload :Logger, "ramaze/log/logger.rb"
23
+
24
+ unless defined?(Log)
25
+ Log = Logger::LogHub.new(Logger::Informer)
26
+ end
27
+ end
@@ -0,0 +1,45 @@
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
+ module Option
6
+ class DSL
7
+ attr_reader :holder
8
+
9
+ def initialize(holder, &block)
10
+ @holder = holder
11
+ @config = {}
12
+ instance_eval(&block) if block_given?
13
+ end
14
+
15
+ def o(doc, key, value, options = {})
16
+ @config[key] = [doc, value, options]
17
+
18
+ holder.add_option(key, value, complain = false)
19
+ holder.trait[key] = options.merge(:doc => doc)
20
+ end
21
+
22
+ # to generate a new sorted source file from the config, was only used to
23
+ # merge new and old DSL.
24
+ def output
25
+ @config.keys.sort_by{|k,v| k.to_s }.each do |key|
26
+ doc, value, options = @config[key]
27
+ puts "o %s," % doc.dump
28
+
29
+ if options.empty?
30
+ puts " %p, %p" % [key, value]
31
+ else
32
+ format = options.map{|(k,v)| '%p => %p' % [k,v]}.join(', ')
33
+ puts " %p, %p, %s" % [key, value, format]
34
+ end
35
+
36
+ puts
37
+ end
38
+ end
39
+ end
40
+
41
+ def self.dsl(&block)
42
+ Option::DSL.new(&block)
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,131 @@
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 'ramaze/option/merger'
5
+
6
+ module Ramaze
7
+ module Option
8
+ class Holder
9
+ include Merger
10
+
11
+ def initialize(options = {})
12
+ @members = Set.new
13
+
14
+ options.each do |key, value|
15
+ add_option(key, value, complain = false)
16
+ end
17
+ end
18
+
19
+ def add_option(key, value, complain = true)
20
+ Log.warn("Adding #{key} to #{self}") if complain
21
+
22
+ self.class.class_eval do
23
+ attr_reader key unless method_defined?(key)
24
+ attr_writer key unless method_defined?("#{key}=")
25
+ end
26
+
27
+ self[key] = value
28
+ end
29
+
30
+ def [](key)
31
+ __send__(key)
32
+ end
33
+
34
+ def []=(key, value)
35
+ @members << key.to_s.to_sym
36
+ __send__("#{key}=", value)
37
+ end
38
+
39
+ include Enumerable
40
+
41
+ def each
42
+ @members.each do |member|
43
+ yield member, self[member]
44
+ end
45
+ end
46
+
47
+ def startup(options)
48
+ options.each do |key, value|
49
+ self[key] = value
50
+ end
51
+
52
+ merge!(ARGV)
53
+ merge!(ENV)
54
+
55
+ self.root ||= File.dirname(File.expand_path(runner))
56
+ [self.load_engines].flatten.compact.each do |engine|
57
+ Ramaze::Template.const_get(engine)
58
+ end
59
+ end
60
+
61
+ # batch-assignment of key/value from hash, yields self if a block is given.
62
+ def setup(hash = {})
63
+ merge!(hash)
64
+ yield(self) if block_given?
65
+ end
66
+
67
+ # Modified options
68
+
69
+ def port=(number)
70
+ @port = number.to_i
71
+ end
72
+
73
+ def public_root=(pr)
74
+ @public_root = pr
75
+ end
76
+
77
+ # Find a suitable public_root, if none of these is a directory just use the
78
+ # currently set one.
79
+ def public_root
80
+ [ @public_root,
81
+ root/@public_root
82
+ ].find{|path| File.directory?(path) } || @public_root
83
+ end
84
+
85
+ def view_root=(vr)
86
+ @view_root = vr
87
+ end
88
+
89
+ # Find a suitable view_root, if none of these is a directory just use
90
+ # the currently set one.
91
+ def view_root
92
+ [ @view_root,
93
+ root/@view_root,
94
+ root/'template',
95
+ ].find{|path| File.directory?(path) } || @view_root
96
+ end
97
+
98
+ def adapter
99
+ find_from_aliases(@adapter, :adapter_aliases, Ramaze::Adapter, "ramaze/adapter")
100
+ end
101
+
102
+ def cache
103
+ find_from_aliases(@cache, :cache_aliases, Ramaze, "ramaze/cache")
104
+ end
105
+
106
+ def sourcereload=(interval)
107
+ Ramaze::Reloader::OPTIONS[:cooldown] = interval
108
+ end
109
+
110
+ private
111
+
112
+ def find_from_aliases(name, alias_key, mod, path)
113
+ case name
114
+ when String, Symbol
115
+ name = name.to_s
116
+ class_name = self[alias_key][name] || name
117
+ find_require(name, class_name, mod, path)
118
+ else
119
+ name
120
+ end
121
+ end
122
+
123
+ def find_require(name, class_name, mod, path)
124
+ file_path = File.join(path, name)
125
+ require(file_path) unless mod.const_defined?(class_name)
126
+
127
+ mod.const_get(class_name)
128
+ end
129
+ end
130
+ end
131
+ end
@@ -0,0 +1,108 @@
1
+ module Ramaze
2
+ module Option
3
+ module Merger
4
+
5
+ # Pass it anything that may work as option: ENV, hashes, ARGV...
6
+ # it will figure out how to get config from it and modify Global.
7
+ def merge!(obj, &block)
8
+ case obj
9
+ when ENV
10
+ merge_prefixed!(obj)
11
+ else
12
+ if obj.respond_to?(:each_pair)
13
+ obj.each_pair do |key, value|
14
+ self[key] = value
15
+ end
16
+ elsif obj.respond_to?(:each)
17
+ merge_cli!(obj, &block)
18
+ end
19
+ end
20
+
21
+ self
22
+ end
23
+
24
+ # Prefixed options, mostly useful for filtering out from ENV.
25
+ # by default the prefix is case-insensitive and set to ramaze_ - that
26
+ # works for keys like:
27
+ # $ RAMAZE_PORT=80 ruby start.rb
28
+ # $ ramaze_port=80 ruby start.rb
29
+ # $ Ramaze_Port=80 ruby start.rb
30
+ def merge_prefixed!(obj, prefix = 'ramaze_')
31
+ opts = {}
32
+ obj.each do |key, value|
33
+ next unless key =~ /^#{prefix}(.*)/i
34
+ opts[$1.downcase] = value
35
+ end
36
+ merge! opts
37
+ end
38
+
39
+ # Only destructive for now, should non-destructive keep both Global and
40
+ # the obj original?
41
+
42
+ def merge_cli!(obj, &block)
43
+ option_parser(&block).parse!(obj)
44
+ end
45
+
46
+ def option_parser(bin = 'ramaze')
47
+ require 'optparse'
48
+ require 'abbrev'
49
+
50
+ OptionParser.new{|opt|
51
+ ruby_version = "ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]"
52
+ ramaze_version = "Ramaze Version #{VERSION}"
53
+ version = "#{ramaze_version}, on #{ruby_version}"
54
+
55
+ opt.banner = "Usage: #{bin} start.rb [OPTIONS]"
56
+ opt.define_head version
57
+
58
+ yield(opt) if block_given?
59
+
60
+ opt.separator ''
61
+ opt.separator 'Global options, value in [] shows default.'
62
+
63
+ Global.each do |key, value|
64
+ long_option = "--#{key}"
65
+ options = Global.trait.fetch(key, {})
66
+ doc, cli, short = options.values_at(:doc, :cli, :short)
67
+ short_option = "-#{short}" if short
68
+
69
+ next unless cli or short
70
+
71
+ case cli || value
72
+ when Integer
73
+ option = [short_option, "#{long_option} NUM", Integer, doc]
74
+ when String, Symbol
75
+ option = [short_option, "#{long_option} STRING", String, doc]
76
+ when Array
77
+ next unless cli
78
+ cli = cli.map{|c| c.to_s }
79
+ list = " " << cli.join(', ')
80
+ doc = "[#{value}] #{doc}"
81
+ aliases = cli.abbrev
82
+ option = [short_option, "#{long_option} CHOICE", cli, doc, list]
83
+ else
84
+ option = [short_option, long_option, doc]
85
+ end
86
+
87
+ option.delete(nil)
88
+
89
+ opt.on(*option){|o| Ramaze::Global[key] = o }
90
+ end
91
+
92
+ opt.separator ''
93
+ opt.separator 'Common options:'
94
+
95
+ opt.on('-h', '--help', 'Show this message') do
96
+ puts opt
97
+ exit
98
+ end
99
+
100
+ opt.on('-v', '--version', "Show version") do
101
+ puts version
102
+ exit
103
+ end
104
+ }
105
+ end
106
+ end
107
+ end
108
+ end
@@ -0,0 +1,156 @@
1
+ require 'ramaze/option/dsl'
2
+ require 'ramaze/option/holder'
3
+
4
+ module Ramaze
5
+ Global = Option::Holder.new
6
+
7
+ Option::DSL.new Global do
8
+ o "List of aliases for adapters",
9
+ :adapter_aliases, {
10
+ "mongrel" => "Mongrel",
11
+ "evented_mongrel" => "Mongrel",
12
+ "fcgi" => "Fcgi",
13
+ "thin" => "Thin",
14
+ "ebb" => "Ebb",
15
+ "cgi" => "Cgi",
16
+ "lsws" => "LSWS",
17
+ "scgi" => "SCGI",
18
+ "webrick" => "WEBrick",
19
+ "swiftiplied_mongrel" => "Mongrel",
20
+ }
21
+
22
+ o "Hash of aliases for caches",
23
+ :cache_aliases, {
24
+ "memory" => "MemoryCache",
25
+ "yaml" => "YAMLStoreCache",
26
+ "memcache" => "MemcachedCache",
27
+ "memcached" => "MemcachedCache",
28
+ }
29
+
30
+ o "Disable templates without actions",
31
+ :actionless_templates, true, :cli => true
32
+
33
+ o "Set adapter Ramaze will run on.",
34
+ :adapter, :webrick, :cli => @config[:adapter_aliases][1].keys, :short => :a
35
+
36
+ o "Set the size of Backtrace shown.",
37
+ :backtrace_size, 10, :cli => 10
38
+
39
+ o "Turn benchmarking every request on.",
40
+ :benchmarking, false, :short => :b, :cli => false
41
+
42
+ o "Do not log about these requests to static files, values as in Global.ignore",
43
+ :boring, ["/favicon.ico"]
44
+
45
+ o "Use this for general caching and as base for Cache.new.",
46
+ :cache, :memory, :cli => [:memory, :memcached, :yaml]
47
+
48
+ o "Turn on naive caching of all requests.",
49
+ :cache_all, false, :cli => false
50
+
51
+ o "Alternative caches",
52
+ :cache_alternative, {}
53
+
54
+ o "Don't cache action if session flash data is present for a request.",
55
+ :no_cache_flash, true, :cli => true
56
+
57
+ o "Compile Templates",
58
+ :compile, false, :cli => false
59
+
60
+ o "Start Ramaze within an IRB session",
61
+ :console, false, :short => :c
62
+
63
+ o "Active contribs",
64
+ :contribs, Set.new
65
+
66
+ o "Set default Content-Type for responses",
67
+ :content_type, "text/html"
68
+
69
+ o "Set default Accept-Charset for responses. No header set if nil.",
70
+ :accept_charset, nil
71
+
72
+ o "All subclasses of Controller are collected here.",
73
+ :controllers, Set.new
74
+
75
+ o "Instruction for daemonize, only works with bin/ramaze for now",
76
+ :daemonize, '', :cli => [:start, :stop]
77
+
78
+ o "Turn on customized error pages. Use Rack::ShowException otherwise.",
79
+ :error_page, true, :cli => true
80
+
81
+ o "Caching actions to the filesystem in Global.public_root",
82
+ :file_cache, false, :cli => false
83
+
84
+ o "Specify what IP Ramaze will respond to - 0.0.0.0 for all",
85
+ :host, "0.0.0.0", :cli => "0.0.0.0"
86
+
87
+ o "Ignore requests to these paths if no file in public_root exists, absolute path or regex",
88
+ :ignore, ["/favicon.ico"]
89
+
90
+ o "Body set on ignored paths",
91
+ :ignore_body, "File not found"
92
+
93
+ o "Status set on ignored paths",
94
+ :ignore_status, 404
95
+
96
+ o "Enable directory listing",
97
+ :list_directories, false
98
+
99
+ o "Templating engines to load on startup",
100
+ :load_engines, nil
101
+
102
+ o "All paths to controllers are mapped here.",
103
+ :mapping, {}
104
+
105
+ o "Activate middleware",
106
+ :middleware, true
107
+
108
+ o "For your own modes to decide on",
109
+ :mode, :live, :cli => [:live, :dev, :spec]
110
+
111
+ o "The place ramaze was started from, useful mostly for debugging",
112
+ :origin, :main
113
+
114
+ o "Specify port",
115
+ :port, 7000, :short => :p, :cli => 7000
116
+
117
+ o "Specify directory to serve static files",
118
+ :public_root, "public", :cli => "public"
119
+
120
+ o "Prefix for incoming and outgoing links",
121
+ :prefix, '/'
122
+
123
+ o "Record all Request objects by assigning a filtering Proc to me.",
124
+ :record, false
125
+
126
+ o "root directory of your application (former APPDIR)",
127
+ :root, File.dirname(File.expand_path($0))
128
+
129
+ o "Don't wait until all adapter-threads are finished or killed.",
130
+ :run_loose, false, :cli => false
131
+
132
+ o "The runner of your application (start.rb)",
133
+ :runner, "/home/manveru/c/ramaze/examples/hello.rb"
134
+
135
+ o "The running server will be put here from Adapter.",
136
+ :server, nil
137
+
138
+ o "Turn on session for all requests.",
139
+ :sessions, true, :cli => true
140
+
141
+ o "Turn on BF/DoS protection for error-responses",
142
+ :shield, false, :cli => false
143
+
144
+ o "What signal to trap to call Ramaze::shutdown",
145
+ :shutdown_trap, "SIGINT"
146
+
147
+ o "Interval in seconds of the Reloader",
148
+ :sourcereload, 3, :cli => 3
149
+
150
+ o "Test before start if adapters will be able to connect",
151
+ :test_connections, true, :cli => true
152
+
153
+ o "Specify directory to serve dynamic files",
154
+ :view_root, "view", :cli => "view"
155
+ end
156
+ end