thorero-core 0.9.4.6

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 (275) hide show
  1. data/LICENSE +20 -0
  2. data/README +21 -0
  3. data/Rakefile +352 -0
  4. data/TODO +0 -0
  5. data/bin/merb +12 -0
  6. data/bin/merb-specs +5 -0
  7. data/docs/bootloading.dox +58 -0
  8. data/docs/documentation_standards +40 -0
  9. data/docs/merb-core-call-stack-diagram.mmap +0 -0
  10. data/docs/merb-core-call-stack-diagram.pdf +0 -0
  11. data/docs/merb-core-call-stack-diagram.png +0 -0
  12. data/docs/new_render_api +51 -0
  13. data/lib/merb-core.rb +603 -0
  14. data/lib/merb-core/autoload.rb +32 -0
  15. data/lib/merb-core/bootloader.rb +708 -0
  16. data/lib/merb-core/config.rb +303 -0
  17. data/lib/merb-core/constants.rb +43 -0
  18. data/lib/merb-core/controller/abstract_controller.rb +578 -0
  19. data/lib/merb-core/controller/exceptions.rb +302 -0
  20. data/lib/merb-core/controller/merb_controller.rb +256 -0
  21. data/lib/merb-core/controller/mime.rb +106 -0
  22. data/lib/merb-core/controller/mixins/authentication.rb +87 -0
  23. data/lib/merb-core/controller/mixins/controller.rb +290 -0
  24. data/lib/merb-core/controller/mixins/render.rb +481 -0
  25. data/lib/merb-core/controller/mixins/responder.rb +472 -0
  26. data/lib/merb-core/controller/template.rb +254 -0
  27. data/lib/merb-core/core_ext.rb +8 -0
  28. data/lib/merb-core/core_ext/kernel.rb +319 -0
  29. data/lib/merb-core/dispatch/cookies.rb +91 -0
  30. data/lib/merb-core/dispatch/dispatcher.rb +278 -0
  31. data/lib/merb-core/dispatch/exceptions.html.erb +303 -0
  32. data/lib/merb-core/dispatch/request.rb +603 -0
  33. data/lib/merb-core/dispatch/router.rb +179 -0
  34. data/lib/merb-core/dispatch/router/behavior.rb +867 -0
  35. data/lib/merb-core/dispatch/router/cached_proc.rb +52 -0
  36. data/lib/merb-core/dispatch/router/route.rb +321 -0
  37. data/lib/merb-core/dispatch/session.rb +78 -0
  38. data/lib/merb-core/dispatch/session/cookie.rb +168 -0
  39. data/lib/merb-core/dispatch/session/memcached.rb +184 -0
  40. data/lib/merb-core/dispatch/session/memory.rb +241 -0
  41. data/lib/merb-core/dispatch/worker.rb +28 -0
  42. data/lib/merb-core/gem_ext/erubis.rb +77 -0
  43. data/lib/merb-core/logger.rb +202 -0
  44. data/lib/merb-core/plugins.rb +59 -0
  45. data/lib/merb-core/rack.rb +21 -0
  46. data/lib/merb-core/rack/adapter.rb +44 -0
  47. data/lib/merb-core/rack/adapter/ebb.rb +25 -0
  48. data/lib/merb-core/rack/adapter/evented_mongrel.rb +26 -0
  49. data/lib/merb-core/rack/adapter/fcgi.rb +17 -0
  50. data/lib/merb-core/rack/adapter/irb.rb +118 -0
  51. data/lib/merb-core/rack/adapter/mongrel.rb +26 -0
  52. data/lib/merb-core/rack/adapter/runner.rb +28 -0
  53. data/lib/merb-core/rack/adapter/swiftiplied_mongrel.rb +26 -0
  54. data/lib/merb-core/rack/adapter/thin.rb +39 -0
  55. data/lib/merb-core/rack/adapter/thin_turbo.rb +24 -0
  56. data/lib/merb-core/rack/adapter/webrick.rb +36 -0
  57. data/lib/merb-core/rack/application.rb +18 -0
  58. data/lib/merb-core/rack/handler/mongrel.rb +97 -0
  59. data/lib/merb-core/rack/middleware.rb +26 -0
  60. data/lib/merb-core/rack/middleware/path_prefix.rb +31 -0
  61. data/lib/merb-core/rack/middleware/profiler.rb +19 -0
  62. data/lib/merb-core/rack/middleware/static.rb +45 -0
  63. data/lib/merb-core/server.rb +252 -0
  64. data/lib/merb-core/tasks/audit.rake +68 -0
  65. data/lib/merb-core/tasks/merb.rb +1 -0
  66. data/lib/merb-core/tasks/merb_rake_helper.rb +12 -0
  67. data/lib/merb-core/test.rb +11 -0
  68. data/lib/merb-core/test/helpers.rb +9 -0
  69. data/lib/merb-core/test/helpers/controller_helper.rb +8 -0
  70. data/lib/merb-core/test/helpers/multipart_request_helper.rb +175 -0
  71. data/lib/merb-core/test/helpers/request_helper.rb +344 -0
  72. data/lib/merb-core/test/helpers/route_helper.rb +33 -0
  73. data/lib/merb-core/test/helpers/view_helper.rb +121 -0
  74. data/lib/merb-core/test/matchers.rb +9 -0
  75. data/lib/merb-core/test/matchers/controller_matchers.rb +319 -0
  76. data/lib/merb-core/test/matchers/route_matchers.rb +136 -0
  77. data/lib/merb-core/test/matchers/view_matchers.rb +335 -0
  78. data/lib/merb-core/test/run_specs.rb +47 -0
  79. data/lib/merb-core/test/tasks/spectasks.rb +68 -0
  80. data/lib/merb-core/test/test_ext/hpricot.rb +32 -0
  81. data/lib/merb-core/test/test_ext/object.rb +14 -0
  82. data/lib/merb-core/test/test_ext/string.rb +14 -0
  83. data/lib/merb-core/vendor/facets.rb +2 -0
  84. data/lib/merb-core/vendor/facets/dictionary.rb +433 -0
  85. data/lib/merb-core/vendor/facets/inflect.rb +345 -0
  86. data/lib/merb-core/version.rb +11 -0
  87. data/spec/private/config/adapter_spec.rb +32 -0
  88. data/spec/private/config/config_spec.rb +202 -0
  89. data/spec/private/config/environment_spec.rb +13 -0
  90. data/spec/private/config/spec_helper.rb +1 -0
  91. data/spec/private/core_ext/kernel_spec.rb +169 -0
  92. data/spec/private/dispatch/bootloader_spec.rb +24 -0
  93. data/spec/private/dispatch/cookies_spec.rb +107 -0
  94. data/spec/private/dispatch/dispatch_spec.rb +35 -0
  95. data/spec/private/dispatch/fixture/app/controllers/application.rb +4 -0
  96. data/spec/private/dispatch/fixture/app/controllers/exceptions.rb +27 -0
  97. data/spec/private/dispatch/fixture/app/controllers/foo.rb +21 -0
  98. data/spec/private/dispatch/fixture/app/helpers/global_helpers.rb +8 -0
  99. data/spec/private/dispatch/fixture/app/views/exeptions/client_error.html.erb +37 -0
  100. data/spec/private/dispatch/fixture/app/views/exeptions/internal_server_error.html.erb +216 -0
  101. data/spec/private/dispatch/fixture/app/views/exeptions/not_acceptable.html.erb +38 -0
  102. data/spec/private/dispatch/fixture/app/views/exeptions/not_found.html.erb +40 -0
  103. data/spec/private/dispatch/fixture/app/views/foo/bar.html.erb +0 -0
  104. data/spec/private/dispatch/fixture/app/views/layout/application.html.erb +11 -0
  105. data/spec/private/dispatch/fixture/config/black_hole.rb +12 -0
  106. data/spec/private/dispatch/fixture/config/environments/development.rb +6 -0
  107. data/spec/private/dispatch/fixture/config/environments/production.rb +5 -0
  108. data/spec/private/dispatch/fixture/config/environments/test.rb +6 -0
  109. data/spec/private/dispatch/fixture/config/init.rb +45 -0
  110. data/spec/private/dispatch/fixture/config/rack.rb +11 -0
  111. data/spec/private/dispatch/fixture/config/router.rb +35 -0
  112. data/spec/private/dispatch/fixture/log/merb_test.log +1874 -0
  113. data/spec/private/dispatch/fixture/public/images/merb.jpg +0 -0
  114. data/spec/private/dispatch/fixture/public/merb.fcgi +4 -0
  115. data/spec/private/dispatch/fixture/public/stylesheets/master.css +119 -0
  116. data/spec/private/dispatch/route_params_spec.rb +24 -0
  117. data/spec/private/dispatch/session_mixin_spec.rb +47 -0
  118. data/spec/private/dispatch/spec_helper.rb +1 -0
  119. data/spec/private/plugins/plugin_spec.rb +166 -0
  120. data/spec/private/rack/application_spec.rb +49 -0
  121. data/spec/private/router/behavior_spec.rb +60 -0
  122. data/spec/private/router/fixture/log/merb_test.log +139 -0
  123. data/spec/private/router/route_spec.rb +414 -0
  124. data/spec/private/router/router_spec.rb +175 -0
  125. data/spec/private/vendor/facets/plural_spec.rb +564 -0
  126. data/spec/private/vendor/facets/singular_spec.rb +489 -0
  127. data/spec/public/DEFINITIONS +11 -0
  128. data/spec/public/abstract_controller/controllers/alt_views/layout/application.erb +1 -0
  129. data/spec/public/abstract_controller/controllers/alt_views/layout/merb/test/fixtures/abstract/render_string_controller_layout.erb +1 -0
  130. data/spec/public/abstract_controller/controllers/alt_views/layout/merb/test/fixtures/abstract/render_template_controller_layout.erb +1 -0
  131. data/spec/public/abstract_controller/controllers/alt_views/merb/test/fixtures/abstract/display_object_with_multiple_roots/index.erb +1 -0
  132. data/spec/public/abstract_controller/controllers/alt_views/merb/test/fixtures/abstract/display_object_with_multiple_roots/show.erb +1 -0
  133. data/spec/public/abstract_controller/controllers/alt_views/merb/test/fixtures/abstract/render_template_multiple_roots/index.erb +1 -0
  134. data/spec/public/abstract_controller/controllers/alt_views/partial/basic_partial_with_multiple_roots/_partial.erb +1 -0
  135. data/spec/public/abstract_controller/controllers/alt_views/render_template_multiple_roots_and_custom_location/index.erb +1 -0
  136. data/spec/public/abstract_controller/controllers/alt_views/render_template_multiple_roots_inherited/index.erb +1 -0
  137. data/spec/public/abstract_controller/controllers/cousins.rb +41 -0
  138. data/spec/public/abstract_controller/controllers/display.rb +54 -0
  139. data/spec/public/abstract_controller/controllers/filters.rb +193 -0
  140. data/spec/public/abstract_controller/controllers/helpers.rb +41 -0
  141. data/spec/public/abstract_controller/controllers/partial.rb +121 -0
  142. data/spec/public/abstract_controller/controllers/render.rb +113 -0
  143. data/spec/public/abstract_controller/controllers/views/helpers/capture/index.erb +1 -0
  144. data/spec/public/abstract_controller/controllers/views/helpers/capture_eq/index.erb +1 -0
  145. data/spec/public/abstract_controller/controllers/views/helpers/capture_with_args/index.erb +1 -0
  146. data/spec/public/abstract_controller/controllers/views/helpers/concat/index.erb +1 -0
  147. data/spec/public/abstract_controller/controllers/views/layout/alt.erb +1 -0
  148. data/spec/public/abstract_controller/controllers/views/layout/custom.erb +1 -0
  149. data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/display_object/index.erb +1 -0
  150. data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/display_object_with_action/new.erb +1 -0
  151. data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/render_template/index.erb +1 -0
  152. data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/render_template_app_layout/index.erb +0 -0
  153. data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/render_template_custom_layout/index.erb +1 -0
  154. data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/render_template_multiple_roots/index.erb +1 -0
  155. data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/render_template_multiple_roots/show.erb +1 -0
  156. data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/render_two_throw_contents/index.erb +1 -0
  157. data/spec/public/abstract_controller/controllers/views/partial/another_directory/_partial.erb +1 -0
  158. data/spec/public/abstract_controller/controllers/views/partial/basic_partial/_partial.erb +1 -0
  159. data/spec/public/abstract_controller/controllers/views/partial/basic_partial/index.erb +1 -0
  160. data/spec/public/abstract_controller/controllers/views/partial/basic_partial_with_multiple_roots/index.erb +1 -0
  161. data/spec/public/abstract_controller/controllers/views/partial/nested_partial/_first.erb +1 -0
  162. data/spec/public/abstract_controller/controllers/views/partial/nested_partial/_second.erb +1 -0
  163. data/spec/public/abstract_controller/controllers/views/partial/nested_partial/index.erb +1 -0
  164. data/spec/public/abstract_controller/controllers/views/partial/partial_in_another_directory/index.erb +1 -0
  165. data/spec/public/abstract_controller/controllers/views/partial/partial_with_both/_collection.erb +1 -0
  166. data/spec/public/abstract_controller/controllers/views/partial/partial_with_both/index.erb +1 -0
  167. data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections/_collection.erb +1 -0
  168. data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections/index.erb +1 -0
  169. data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections_and_as/_collection.erb +1 -0
  170. data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections_and_as/index.erb +1 -0
  171. data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections_and_counter/_collection.erb +1 -0
  172. data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections_and_counter/index.erb +1 -0
  173. data/spec/public/abstract_controller/controllers/views/partial/partial_with_locals/_variables.erb +1 -0
  174. data/spec/public/abstract_controller/controllers/views/partial/partial_with_locals/index.erb +1 -0
  175. data/spec/public/abstract_controller/controllers/views/partial/partial_with_with_and_locals/_both.erb +1 -0
  176. data/spec/public/abstract_controller/controllers/views/partial/partial_with_with_and_locals/index.erb +1 -0
  177. data/spec/public/abstract_controller/controllers/views/partial/with_absolute_partial/_partial.erb +1 -0
  178. data/spec/public/abstract_controller/controllers/views/partial/with_absolute_partial/index.erb +1 -0
  179. data/spec/public/abstract_controller/controllers/views/partial/with_as_partial/_with_partial.erb +1 -0
  180. data/spec/public/abstract_controller/controllers/views/partial/with_as_partial/index.erb +1 -0
  181. data/spec/public/abstract_controller/controllers/views/partial/with_nil_partial/_with_partial.erb +1 -0
  182. data/spec/public/abstract_controller/controllers/views/partial/with_nil_partial/index.erb +1 -0
  183. data/spec/public/abstract_controller/controllers/views/partial/with_partial/_with_partial.erb +1 -0
  184. data/spec/public/abstract_controller/controllers/views/partial/with_partial/index.erb +1 -0
  185. data/spec/public/abstract_controller/controllers/views/test_display/foo.html.erb +1 -0
  186. data/spec/public/abstract_controller/controllers/views/test_render/foo.html.erb +0 -0
  187. data/spec/public/abstract_controller/controllers/views/wonderful/index.erb +1 -0
  188. data/spec/public/abstract_controller/display_spec.rb +33 -0
  189. data/spec/public/abstract_controller/filter_spec.rb +106 -0
  190. data/spec/public/abstract_controller/helper_spec.rb +21 -0
  191. data/spec/public/abstract_controller/partial_spec.rb +61 -0
  192. data/spec/public/abstract_controller/render_spec.rb +90 -0
  193. data/spec/public/abstract_controller/spec_helper.rb +31 -0
  194. data/spec/public/boot_loader/boot_loader_spec.rb +33 -0
  195. data/spec/public/boot_loader/spec_helper.rb +1 -0
  196. data/spec/public/controller/authentication_spec.rb +103 -0
  197. data/spec/public/controller/base_spec.rb +36 -0
  198. data/spec/public/controller/controllers/authentication.rb +45 -0
  199. data/spec/public/controller/controllers/base.rb +36 -0
  200. data/spec/public/controller/controllers/display.rb +118 -0
  201. data/spec/public/controller/controllers/redirect.rb +30 -0
  202. data/spec/public/controller/controllers/responder.rb +93 -0
  203. data/spec/public/controller/controllers/url.rb +7 -0
  204. data/spec/public/controller/controllers/views/layout/custom.html.erb +1 -0
  205. data/spec/public/controller/controllers/views/layout/custom_arg.html.erb +1 -0
  206. data/spec/public/controller/controllers/views/layout/custom_arg.json.erb +1 -0
  207. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/class_and_local_provides/index.html.erb +1 -0
  208. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/class_and_local_provides/index.xml.erb +1 -0
  209. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/class_provides/index.html.erb +1 -0
  210. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/class_provides/index.xml.erb +1 -0
  211. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/display_with_template/index.html.erb +1 -0
  212. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/display_with_template/no_layout.html.erb +1 -0
  213. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/display_with_template_argument/index.html.erb +1 -0
  214. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/html_default/index.html.erb +1 -0
  215. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/layout/custom.html.erb +1 -0
  216. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/local_provides/index.html.erb +1 -0
  217. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/local_provides/index.xml.erb +1 -0
  218. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/multi_provides/index.html.erb +1 -0
  219. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/multi_provides/index.js.erb +1 -0
  220. data/spec/public/controller/display_spec.rb +84 -0
  221. data/spec/public/controller/redirect_spec.rb +27 -0
  222. data/spec/public/controller/responder_spec.rb +163 -0
  223. data/spec/public/controller/spec_helper.rb +11 -0
  224. data/spec/public/controller/url_spec.rb +180 -0
  225. data/spec/public/core/merb_core_spec.rb +45 -0
  226. data/spec/public/core_ext/class_spec.rb +91 -0
  227. data/spec/public/core_ext/fixtures/core_ext_dependency.rb +2 -0
  228. data/spec/public/core_ext/kernel_spec.rb +9 -0
  229. data/spec/public/core_ext/spec_helper.rb +1 -0
  230. data/spec/public/directory_structure/directory/app/controllers/application.rb +3 -0
  231. data/spec/public/directory_structure/directory/app/controllers/base.rb +13 -0
  232. data/spec/public/directory_structure/directory/app/controllers/custom.rb +19 -0
  233. data/spec/public/directory_structure/directory/app/views/base/template.html.erb +1 -0
  234. data/spec/public/directory_structure/directory/app/views/wonderful/template.erb +1 -0
  235. data/spec/public/directory_structure/directory/config/router.rb +3 -0
  236. data/spec/public/directory_structure/directory/log/merb_test.log +562 -0
  237. data/spec/public/directory_structure/directory_spec.rb +44 -0
  238. data/spec/public/logger/logger_spec.rb +181 -0
  239. data/spec/public/logger/spec_helper.rb +1 -0
  240. data/spec/public/reloading/directory/app/controllers/application.rb +3 -0
  241. data/spec/public/reloading/directory/app/controllers/reload.rb +6 -0
  242. data/spec/public/reloading/directory/config/init.rb +2 -0
  243. data/spec/public/reloading/directory/log/merb_test.log +138 -0
  244. data/spec/public/reloading/reload_spec.rb +103 -0
  245. data/spec/public/request/multipart_spec.rb +41 -0
  246. data/spec/public/request/request_spec.rb +228 -0
  247. data/spec/public/router/default_spec.rb +21 -0
  248. data/spec/public/router/deferred_spec.rb +22 -0
  249. data/spec/public/router/fixation_spec.rb +27 -0
  250. data/spec/public/router/fixture/log/merb_test.log +1556 -0
  251. data/spec/public/router/namespace_spec.rb +113 -0
  252. data/spec/public/router/nested_matches_spec.rb +97 -0
  253. data/spec/public/router/nested_resources_spec.rb +41 -0
  254. data/spec/public/router/resource_spec.rb +37 -0
  255. data/spec/public/router/resources_spec.rb +82 -0
  256. data/spec/public/router/spec_helper.rb +90 -0
  257. data/spec/public/router/special_spec.rb +61 -0
  258. data/spec/public/router/string_spec.rb +61 -0
  259. data/spec/public/template/template_spec.rb +104 -0
  260. data/spec/public/template/templates/error.html.erb +2 -0
  261. data/spec/public/template/templates/template.html.erb +1 -0
  262. data/spec/public/template/templates/template.html.myt +1 -0
  263. data/spec/public/test/controller_matchers_spec.rb +402 -0
  264. data/spec/public/test/controllers/controller_assertion_mock.rb +7 -0
  265. data/spec/public/test/controllers/dispatch_controller.rb +11 -0
  266. data/spec/public/test/controllers/spec_helper_controller.rb +38 -0
  267. data/spec/public/test/multipart_request_helper_spec.rb +159 -0
  268. data/spec/public/test/multipart_upload_text_file.txt +1 -0
  269. data/spec/public/test/request_helper_spec.rb +221 -0
  270. data/spec/public/test/route_helper_spec.rb +71 -0
  271. data/spec/public/test/route_matchers_spec.rb +162 -0
  272. data/spec/public/test/view_helper_spec.rb +96 -0
  273. data/spec/public/test/view_matchers_spec.rb +183 -0
  274. data/spec/spec_helper.rb +68 -0
  275. metadata +542 -0
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2008 Engine Yard Inc.
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README ADDED
@@ -0,0 +1,21 @@
1
+ merb-core is a new branch of Merb (also referred to as merb-next or the 0.9 series) which aims to provide a stable, stripped down API for a future Merb 1.0 release.
2
+
3
+ This branch is based off the 0.5 release series but with significant rewrites.
4
+
5
+ Goals of this release:
6
+
7
+ * Stabilize the @public interface methods to provide for a more consistent application development experience.
8
+ * Remove features until nothing except a central application API is left
9
+ * Improve comments on methods using a standard documentation methodology as described in DOCUMENTATION_STANDARDS
10
+ * Separate the tests into two sections... "private" and "public"
11
+ * Public methods are methods tagged with @public that will be part of the standard, stable Merb API
12
+ * Private methods are implementation methods that might
13
+ * Implement a new render API
14
+ * Build more extensions to regain selected features when needed
15
+
16
+ To familiarize yourself with how a merb-core application might look,
17
+ use merb-gen (from merb-more) to generate a few apps:
18
+ $ merb-gen app myapp # a "normal" merb app
19
+ $ merb-gen app myapp --flat # a flattened app
20
+ $ merb-gen app myapp --very-flat # a single-file app
21
+
@@ -0,0 +1,352 @@
1
+ require "rake"
2
+ require "rake/clean"
3
+ require "rake/gempackagetask"
4
+ require "rake/rdoctask"
5
+ require "rake/testtask"
6
+ require "spec/rake/spectask"
7
+ require "fileutils"
8
+ require "extlib"
9
+
10
+ def __DIR__
11
+ File.dirname(__FILE__)
12
+ end
13
+
14
+ require __DIR__ + "/tools/rakehelp"
15
+ require __DIR__ + "/tools/annotation_extract"
16
+
17
+ include FileUtils
18
+
19
+ require "lib/merb-core/version"
20
+ require "lib/merb-core/test/run_specs"
21
+ require 'lib/merb-core/tasks/merb_rake_helper'
22
+
23
+ ##############################################################################
24
+ # Package && release
25
+ ##############################################################################
26
+ RUBY_FORGE_PROJECT = "thorero"
27
+ PROJECT_URL = "http://merbivore.com"
28
+ PROJECT_SUMMARY = "Merb. Pocket rocket web framework."
29
+ PROJECT_DESCRIPTION = PROJECT_SUMMARY
30
+
31
+ AUTHOR = "test"
32
+ EMAIL = "test@test.test"
33
+
34
+ GEM_NAME = "thorero-core"
35
+ PKG_BUILD = ENV['PKG_BUILD'] ? '.' + ENV['PKG_BUILD'] : ''
36
+ GEM_VERSION = Merb::VERSION + PKG_BUILD
37
+
38
+ RELEASE_NAME = "REL #{GEM_VERSION}"
39
+
40
+ require "extlib/tasks/release"
41
+
42
+ spec = Gem::Specification.new do |s|
43
+ s.name = GEM_NAME
44
+ s.version = GEM_VERSION
45
+ s.platform = Gem::Platform::RUBY
46
+ s.author = AUTHOR
47
+ s.email = EMAIL
48
+ s.homepage = PROJECT_URL
49
+ s.summary = PROJECT_SUMMARY
50
+ s.bindir = "bin"
51
+ s.description = PROJECT_DESCRIPTION
52
+ s.executables = %w( merb )
53
+ s.require_path = "lib"
54
+ s.files = %w( LICENSE README Rakefile TODO ) + Dir["{docs,bin,spec,lib,examples,app_generators,merb_generators,merb_default_generators,rspec_generators,test_unit_generators,script}/**/*"]
55
+
56
+ # rdoc
57
+ s.has_rdoc = true
58
+ s.extra_rdoc_files = %w( README LICENSE TODO )
59
+ #s.rdoc_options += RDOC_OPTS + ["--exclude", "^(app|uploads)"]
60
+
61
+ # Dependencies
62
+ s.add_dependency "extlib", ">=0.9.3"
63
+ s.add_dependency "erubis"
64
+ s.add_dependency "rake"
65
+ s.add_dependency "json_pure"
66
+ s.add_dependency "rspec"
67
+ s.add_dependency "rack"
68
+ s.add_dependency "mime-types"
69
+ # Requirements
70
+ s.requirements << "install the json gem to get faster json parsing"
71
+ s.required_ruby_version = ">= 1.8.4"
72
+ end
73
+
74
+ Rake::GemPackageTask.new(spec) do |package|
75
+ package.gem_spec = spec
76
+ end
77
+
78
+ desc "Run :package and install the resulting .gem"
79
+ task :install => :package do
80
+ sh %{#{sudo} gem install #{install_home} --local pkg/#{GEM_NAME}-#{GEM_VERSION}.gem --no-rdoc --no-ri}
81
+ end
82
+
83
+ desc "Run :package and install the resulting .gem with jruby"
84
+ task :jinstall => :package do
85
+ sh %{#{sudo} jruby -S gem install #{install_home} pkg/#{NAME}-#{Merb::VERSION}.gem --no-rdoc --no-ri}
86
+ end
87
+
88
+ desc "Run :clean and uninstall the .gem"
89
+ task :uninstall => :clean do
90
+ sh %{#{sudo} gem uninstall #{NAME}}
91
+ end
92
+
93
+ CLEAN.include ["**/.*.sw?", "pkg", "lib/*.bundle", "*.gem", "doc/rdoc", ".config", "coverage", "cache"]
94
+
95
+ desc "Run the specs."
96
+ task :default => :specs
97
+
98
+ task :merb => [:clean, :rdoc, :package]
99
+
100
+ ##############################################################################
101
+ # Github
102
+ ##############################################################################
103
+ namespace :github do
104
+ desc "Update Github Gemspec"
105
+ task :update_gemspec do
106
+ skip_fields = %w(new_platform original_platform)
107
+ integer_fields = %w(specification_version)
108
+
109
+ result = "Gem::Specification.new do |s|\n"
110
+ spec.instance_variables.each do |ivar|
111
+ value = spec.instance_variable_get(ivar)
112
+ name = ivar.split("@").last
113
+ next if skip_fields.include?(name) || value.nil? || value == "" || (value.respond_to?(:empty?) && value.empty?)
114
+ if name == "dependencies"
115
+ value.each do |d|
116
+ dep, *ver = d.to_s.split(" ")
117
+ result << " s.add_dependency #{dep.inspect}, #{ver.join(" ").inspect.gsub(/[()]/, "")}\n"
118
+ end
119
+ else
120
+ case value
121
+ when Array
122
+ value = name != "files" ? value.inspect : value.inspect.split(",").join(",\n")
123
+ when String
124
+ value = value.to_i if integer_fields.include?(name)
125
+ value = value.inspect
126
+ else
127
+ value = value.to_s.inspect
128
+ end
129
+ result << " s.#{name} = #{value}\n"
130
+ end
131
+ end
132
+ result << "end"
133
+ File.open(File.join(File.dirname(__FILE__), "#{spec.name}.gemspec"), "w"){|f| f << result}
134
+ end
135
+ end
136
+
137
+ ##############################################################################
138
+ # Documentation
139
+ ##############################################################################
140
+ task :doc => [:rdoc]
141
+ namespace :doc do
142
+
143
+ Rake::RDocTask.new do |rdoc|
144
+ files = ["README", "LICENSE", "CHANGELOG", "lib/**/*.rb"]
145
+ rdoc.rdoc_files.add(files)
146
+ rdoc.main = "README"
147
+ rdoc.title = "Merb Docs"
148
+ rdoc.template = __DIR__ + "/tools/allison-2.0.2/lib/allison.rb"
149
+ rdoc.rdoc_dir = "doc/rdoc"
150
+ rdoc.options << "--line-numbers" << "--inline-source"
151
+ end
152
+
153
+ desc "run webgen"
154
+ task :webgen do
155
+ sh %{cd doc/site; webgen}
156
+ end
157
+
158
+ desc "rdoc to rubyforge"
159
+ task :rubyforge do
160
+ # sh %{rake doc}
161
+ sh %{#{sudo} chmod -R 755 doc} unless windows?
162
+ sh %{/usr/bin/scp -r -p doc/rdoc/* ezmobius@rubyforge.org:/var/www/gforge-projects/merb}
163
+ end
164
+
165
+ end
166
+
167
+ ##############################################################################
168
+ # rSpec & rcov
169
+ ##############################################################################
170
+ desc "Run :specs, :rcov"
171
+ task :aok => [:specs, :rcov]
172
+
173
+ # desc "Run all specs"
174
+ # Spec::Rake::SpecTask.new("specs") do |t|
175
+ # t.spec_opts = ["--format", "specdoc", "--colour"]
176
+ # t.spec_files = Dir["spec/**/*_spec.rb"].sort
177
+ # end
178
+
179
+ def setup_specs(name, spec_cmd='spec', run_opts = "-c -f s")
180
+ desc "Run all specs (#{name})"
181
+ task "specs:#{name}" do
182
+ run_specs("spec/**/*_spec.rb", spec_cmd, ENV['RSPEC_OPTS'] || run_opts)
183
+ end
184
+
185
+ desc "Run private specs (#{name})"
186
+ task "specs:#{name}:private" do
187
+ run_specs("spec/private/**/*_spec.rb", spec_cmd, ENV['RSPEC_OPTS'] || run_opts)
188
+ end
189
+
190
+ desc "Run public specs (#{name})"
191
+ task "specs:#{name}:public" do
192
+ run_specs("spec/public/**/*_spec.rb", spec_cmd, ENV['RSPEC_OPTS'] || run_opts)
193
+ end
194
+
195
+ # With profiling formatter
196
+ desc "Run all specs (#{name}) with profiling formatter"
197
+ task "specs:#{name}_profiled" do
198
+ run_specs("spec/**/*_spec.rb", spec_cmd, "-c -f o")
199
+ end
200
+
201
+ desc "Run private specs (#{name}) with profiling formatter"
202
+ task "specs:#{name}_profiled:private" do
203
+ run_specs("spec/private/**/*_spec.rb", spec_cmd, "-c -f o")
204
+ end
205
+
206
+ desc "Run public specs (#{name}) with profiling formatter"
207
+ task "specs:#{name}_profiled:public" do
208
+ run_specs("spec/public/**/*_spec.rb", spec_cmd, "-c -f o")
209
+ end
210
+ end
211
+
212
+ setup_specs("mri", "spec")
213
+ setup_specs("jruby", "jruby -S spec")
214
+
215
+ task "specs" => ["specs:mri"]
216
+ task "specs:private" => ["specs:mri:private"]
217
+ task "specs:public" => ["specs:mri:public"]
218
+
219
+ desc "Run coverage suite"
220
+ task :rcov do
221
+ require 'fileutils'
222
+ FileUtils.rm_rf("coverage") if File.directory?("coverage")
223
+ FileUtils.mkdir("coverage")
224
+ path = File.expand_path(Dir.pwd)
225
+ files = Dir["spec/**/*_spec.rb"]
226
+ files.each do |spec|
227
+ puts "Getting coverage for #{File.expand_path(spec)}"
228
+ command = %{rcov #{File.expand_path(spec)} --aggregate #{path}/coverage/data.data --exclude ".*" --include-file "lib/merb-core(?!\/vendor)"}
229
+ command += " --no-html" unless spec == files.last
230
+ `#{command} 2>&1`
231
+ end
232
+ end
233
+
234
+ desc "Run a specific spec with TASK=xxxx"
235
+ Spec::Rake::SpecTask.new("spec") do |t|
236
+ t.spec_opts = ["--format", "specdoc", "--colour"]
237
+ t.libs = ["lib", "server/lib" ]
238
+ t.spec_files = (ENV["TASK"] || '').split(',').map do |task|
239
+ "spec/**/#{task}_spec.rb"
240
+ end
241
+ end
242
+
243
+ desc "Run all specs output html"
244
+ Spec::Rake::SpecTask.new("specs_html") do |t|
245
+ t.spec_opts = ["--format", "html"]
246
+ t.libs = ["lib", "server/lib" ]
247
+ t.spec_files = Dir["spec/**/*_spec.rb"].sort
248
+ end
249
+
250
+ # desc "RCov"
251
+ # Spec::Rake::SpecTask.new("rcov") do |t|
252
+ # t.rcov_opts = ["--exclude", "gems", "--exclude", "spec"]
253
+ # t.spec_opts = ["--format", "specdoc", "--colour"]
254
+ # t.spec_files = Dir["spec/**/*_spec.rb"].sort
255
+ # t.libs = ["lib", "server/lib"]
256
+ # t.rcov = true
257
+ # end
258
+
259
+ STATS_DIRECTORIES = [
260
+ ['Code', 'lib/'],
261
+ ['Unit tests', 'spec']
262
+ ].collect { |name, dir| [ name, "./#{dir}" ] }.
263
+ select { |name, dir| File.directory?(dir) }
264
+
265
+ desc "Report code statistics (KLOCs, etc) from the application"
266
+ task :stats do
267
+ require __DIR__ + "/tools/code_statistics"
268
+ # require "extra/stats"
269
+ verbose = true
270
+ CodeStatistics.new(*STATS_DIRECTORIES).to_s
271
+ end
272
+
273
+ ##############################################################################
274
+ # SYNTAX CHECKING
275
+ ##############################################################################
276
+
277
+ task :check_syntax do
278
+ `find . -name "*.rb" |xargs -n1 ruby -c |grep -v "Syntax OK"`
279
+ puts "* Done"
280
+ end
281
+
282
+ ##############################################################################
283
+ # SVN
284
+ ##############################################################################
285
+ namespace :repo do
286
+
287
+ desc "Add new files to repository"
288
+ task :add do
289
+ if File.directory?(".git")
290
+ system "git add *"
291
+ elsif File.directory?(".svn")
292
+ system "svn status | grep '^\?' | sed -e 's/? *//' | sed -e 's/ /\ /g' | xargs svn add"
293
+ end
294
+ end
295
+
296
+ desc "Fetch changes from master repository"
297
+ task :rebase do
298
+ if File.directory?(".git")
299
+ system "git stash ; git svn rebase ; git stash apply"
300
+ elsif File.directory?(".svn")
301
+ system "svn update"
302
+ end
303
+ end
304
+
305
+ desc "commit modified changes to the repository"
306
+ task :commit do
307
+ if File.directory?(".git")
308
+ system "git commit"
309
+ elsif File.directory?(".svn")
310
+ system "svn commit"
311
+ end
312
+ end
313
+
314
+ end
315
+
316
+ # Run specific tests or test files. Searches nested spec directories as well.
317
+ #
318
+ # Based on a technique popularized by Geoffrey Grosenbach
319
+ rule "" do |t|
320
+ spec_cmd = (RUBY_PLATFORM =~ /java/) ? "jruby -S spec" : "spec"
321
+ # spec:spec_file:spec_name
322
+ if /spec:(.*)$/.match(t.name)
323
+ arguments = t.name.split(':')
324
+
325
+ file_name = arguments[1]
326
+ spec_name = arguments[2..-1]
327
+
328
+ spec_filename = "#{file_name}_spec.rb"
329
+ specs = Dir["spec/**/#{spec_filename}"]
330
+
331
+ if path = specs.detect { |f| spec_filename == File.basename(f) }
332
+ run_file_name = path
333
+ else
334
+ puts "No specs found for #{t.name.inspect}"
335
+ exit
336
+ end
337
+
338
+ example = " -e '#{spec_name}'" unless spec_name.empty?
339
+
340
+ sh "#{spec_cmd} #{run_file_name} --format specdoc --colour #{example}"
341
+ end
342
+ end
343
+
344
+
345
+ namespace :tools do
346
+ namespace :tags do
347
+ desc "Generates Emacs tags using Exuberant Ctags."
348
+ task :emacs do
349
+ sh "ctags -e --Ruby-kinds=-f -o TAGS -R lib"
350
+ end
351
+ end
352
+ end
data/TODO ADDED
File without changes
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env ruby
2
+ require "merb-core"
3
+
4
+ if ARGV[0] && ARGV[0] =~ /^[^-]/
5
+ ARGV.push "-H"
6
+ end
7
+
8
+ unless %w[-a --adapter -i --irb-console -r --script-runner].any? { |o| ARGV.index(o) }
9
+ ARGV.push *%w[-a mongrel]
10
+ end
11
+
12
+ Merb.start
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.join(File.dirname(__FILE__),"..","lib","merb-core","test","run_specs")
4
+
5
+ run_specs ARGV
@@ -0,0 +1,58 @@
1
+ The Merb boot process starts when you run the Merb binary, which calls `Merb.start`. Merb.start performs the
2
+ following tasks:
3
+
4
+ list.
5
+ * Loads merb.yml from the root directory or config directory and puts them in the Merb::Config hash
6
+ * Parses config arguments from the command-line and adds them to the Merb::Config hash
7
+ * Runs the BootLoaders (see below)
8
+ * Starts the Merb Rack adapter
9
+
10
+ The BootLoader is a configurable process, which, by default, runs the following processes:
11
+
12
+ deflist.
13
+ Environment: Sets the Merb environment based on any -e flag passed the merb binary
14
+ BuildFramework: Set the framework paths, which can either be set in the Merb::Config[:framework]
15
+ variable or defaults to the paths described below.
16
+ Dependencies: Load dependencies.rb, which should include any plugins that will be loaded, as well
17
+ as an after_app_loaded hook.
18
+ Logger: Set up the logger in the `Merb.dir_for(:log)` directory. In test mode, it will be called
19
+ `test_logger`. In other modes, it will be set to `merb.#{pid}.log`. The log level will default
20
+ to `info` but can be specified via the Merb::Config[:log_level] option.
21
+ LoadRouter: The router is loaded from `Merb.dir_for(:config)/router.rb`.
22
+ LoadClasses: Files in all of the load paths are `require`d, and classes added during the load of
23
+ each files are tracked so they can be removed later during the reloading process.
24
+ Templates: All templates under the `_template_root` of any loaded controllers, as well as all
25
+ templates under `Merb.dir_for(:view)` are registered as inlined templates.
26
+ MimeTypes: Register all MimeTypes (see below for defaults).
27
+ AfterAppLoads: Call any `after_app_loads` hooks that were registered in dependencies.rb
28
+ MixinSessionContainer: Register the session types and set the app to use one if
29
+ `Merb::Config[:session_type]` is set.
30
+ ChooseAdapter: Set `Merb.adapter` to be the adapter chosen via Merb::Config[:adapter] (which
31
+ can be specified via the `-a foo` command-line parameter).
32
+ RackUpApplication: Set up a default rack application. Alternatively, allow for additional configuration
33
+ in `Merb.dir_for(:config)/rack.rb`, which will be evaluated in the context of a Rack::Builder.new
34
+ block.
35
+ ReloadClasses: If Merb::Config[:reload_classes] is set, begin the process of reloading classes
36
+ every time a class is modified.
37
+
38
+ deflist: Default Framework Paths.
39
+ application: Merb.root/app/controller/application.rb
40
+ config: Merb.root/config
41
+ lib: Merb.root/lib
42
+ log: Merb.root/log
43
+ view: Merb.root/app/views
44
+ model: Merb.root/app/models
45
+ controller: Merb.root/app/controllers
46
+ helper: Merb.root/app/helpers
47
+ mailer: Merb.root/app/mailers
48
+ part: Merb.root/app/parts
49
+
50
+ deflist: MimeTypes.
51
+ \:all: no transform, */*
52
+ \:yaml: to_yaml, application/x-yaml or text/yaml
53
+ \:text: to_text, text/plain
54
+ \:html: to_html, text/html or application/xhtml+xml or application/html
55
+ \:xml: to_xml, application/xml or text/xml or application/x-xml, adds "Encoding: UTF-8" response header
56
+ \:js: to_json, text/javascript ot application/javascript or application/x-javascript
57
+ \:json: to_json, application/json or text/x-json
58
+