rad_core 0.0.13 → 0.0.14

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 (330) hide show
  1. data/Rakefile +4 -3
  2. data/lib/components/config.rb +6 -0
  3. data/lib/components/controller.rb +5 -0
  4. data/lib/components/controller.yml +3 -0
  5. data/lib/components/conveyors.rb +7 -0
  6. data/lib/components/environment.rb +5 -0
  7. data/lib/components/environment.yml +3 -0
  8. data/lib/components/flash.rb +5 -0
  9. data/lib/components/html.rb +4 -0
  10. data/lib/components/html.yml +3 -0
  11. data/lib/components/http.rb +6 -0
  12. data/lib/components/http.yml +13 -0
  13. data/lib/components/logger.rb +5 -0
  14. data/lib/components/mailer.rb +9 -0
  15. data/lib/components/remote.rb +4 -0
  16. data/lib/components/router.rb +13 -0
  17. data/lib/components/router.yml +2 -0
  18. data/lib/components/template.rb +8 -0
  19. data/lib/components/template.yml +1 -0
  20. data/lib/components/web.rb +8 -0
  21. data/lib/components/workspace.rb +1 -0
  22. data/lib/rad/{support → _support}/active_support/locales/en/actionpack.yml +0 -0
  23. data/lib/rad/{support → _support}/active_support/locales/en/activesupport.yml +0 -0
  24. data/lib/rad/_support/active_support/locales/ru/actionview.yml +162 -0
  25. data/lib/rad/_support/active_support/locales/ru/activesupport.yml +16 -0
  26. data/lib/rad/_support/active_support/locales/ru/datetime.yml +49 -0
  27. data/lib/rad/{support → _support}/active_support/micelaneous.rb +0 -0
  28. data/lib/rad/{support → _support}/active_support/time.rb +0 -0
  29. data/lib/rad/{support → _support}/active_support.rb +14 -2
  30. data/lib/rad/{support → _support}/addressable.rb +0 -0
  31. data/lib/rad/_support/callbacks.rb +166 -0
  32. data/lib/rad/_support/class_loader.rb +9 -0
  33. data/lib/rad/_support/encoding.rb +3 -0
  34. data/lib/rad/_support/exception.rb +45 -0
  35. data/lib/rad/_support/extensions.rb +20 -0
  36. data/lib/rad/_support/filters.rb +32 -0
  37. data/lib/rad/{support → _support}/hacks_and_fixes.rb +0 -0
  38. data/lib/rad/{support → _support}/mime.rb +6 -0
  39. data/lib/rad/{support → _support}/module.rb +7 -9
  40. data/lib/rad/_support/require.rb +62 -0
  41. data/lib/rad/{support → _support}/rson.rb +0 -0
  42. data/lib/rad/{support → _support}/ruby_ext_with_active_support.rb +0 -0
  43. data/lib/rad/{support → _support}/string.rb +9 -1
  44. data/lib/rad/controller/_abstract/micelaneous.rb +27 -0
  45. data/lib/rad/controller/_abstract/render.rb +159 -0
  46. data/lib/rad/controller/_abstract/responder.rb +13 -0
  47. data/lib/rad/controller/_abstract.rb +37 -0
  48. data/lib/rad/controller/_context.rb +15 -0
  49. data/lib/rad/controller/_http.rb +50 -0
  50. data/lib/rad/controller/_require.rb +19 -0
  51. data/lib/rad/controller/abstract.rb +1 -0
  52. data/lib/rad/controller/context.rb +1 -0
  53. data/lib/rad/controller/http.rb +1 -0
  54. data/lib/rad/controller/processors/controller_caller.rb +22 -24
  55. data/lib/rad/controller/processors/controller_error_handling.rb +46 -48
  56. data/lib/rad/controller/processors/controller_logger.rb +7 -9
  57. data/lib/rad/controller.rb +1 -28
  58. data/lib/rad/conveyors/_conveyor.rb +73 -0
  59. data/lib/rad/conveyors/_conveyors.rb +19 -0
  60. data/lib/rad/conveyors/_params.rb +10 -0
  61. data/lib/rad/conveyors/_processor.rb +13 -0
  62. data/lib/rad/conveyors/_require.rb +10 -0
  63. data/lib/rad/conveyors/_workspace.rb +34 -0
  64. data/lib/rad/conveyors/params.rb +1 -0
  65. data/lib/rad/conveyors/processor.rb +1 -0
  66. data/lib/rad/conveyors/processors/conveyor_logger.rb +23 -0
  67. data/lib/rad/conveyors/workspace.rb +1 -0
  68. data/lib/rad/conveyors.rb +1 -0
  69. data/lib/rad/core_web/_controller_micelaneous_helper.rb +17 -0
  70. data/lib/rad/core_web/_require.rb +25 -0
  71. data/lib/rad/core_web/_router/abstract_routing_helper.rb +20 -0
  72. data/lib/rad/core_web/_router/controller_routing_helper.rb +56 -0
  73. data/lib/rad/core_web/_router/view_routing_helper.rb +57 -0
  74. data/lib/rad/environment/_config.rb +27 -0
  75. data/lib/rad/environment/_environment.rb +17 -0
  76. data/lib/rad/environment/_files_helper.rb +55 -0
  77. data/lib/rad/environment/_logger.rb +53 -0
  78. data/lib/rad/environment/_require.rb +24 -0
  79. data/lib/rad/environment/config.rb +1 -111
  80. data/lib/rad/environment.rb +1 -55
  81. data/lib/{rad_core → rad}/gems.rb +2 -3
  82. data/lib/rad/html/_flash.rb +40 -0
  83. data/lib/rad/html/_helpers/basic_html_helper.rb +72 -0
  84. data/lib/rad/html/_helpers/flash_helper.rb +3 -0
  85. data/lib/rad/html/_helpers/form_helper.rb +114 -0
  86. data/lib/rad/html/_helpers/html_helper.rb +3 -0
  87. data/lib/rad/html/_helpers/javascript_helper.rb +27 -0
  88. data/lib/rad/html/_helpers/model_helper.rb +143 -0
  89. data/lib/rad/html/_require.rb +15 -0
  90. data/lib/rad/html/processors/prepare_flash.rb +22 -23
  91. data/lib/rad/html/processors/scoped_params.rb +18 -21
  92. data/lib/rad/html.rb +1 -26
  93. data/lib/rad/http/_http.rb +11 -0
  94. data/lib/rad/http/_http_adapter.rb +44 -0
  95. data/lib/rad/http/_request.rb +50 -0
  96. data/lib/rad/http/_require.rb +33 -0
  97. data/lib/rad/http/_response.rb +84 -0
  98. data/lib/rad/http/{support → _support}/rack/fixes.rb +0 -0
  99. data/lib/rad/http/_support/rack/rack_adapter.rb +57 -0
  100. data/lib/rad/http/processors/evaluate_format.rb +16 -19
  101. data/lib/rad/http/processors/http_logger.rb +10 -12
  102. data/lib/rad/http/processors/http_writer.rb +24 -26
  103. data/lib/rad/http/processors/prepare_params.rb +19 -18
  104. data/lib/rad/http/request.rb +1 -0
  105. data/lib/rad/http/response.rb +1 -0
  106. data/lib/rad/http.rb +1 -48
  107. data/lib/rad/mailer/_letter.rb +28 -0
  108. data/lib/rad/mailer/_mailer.rb +13 -0
  109. data/lib/rad/mailer/_mailer_controller.rb +38 -0
  110. data/lib/rad/mailer/_require.rb +7 -0
  111. data/lib/rad/mailer/mailer_controller.rb +1 -0
  112. data/lib/rad/mailer/processors/letter_builder.rb +34 -0
  113. data/lib/rad/mailer.rb +1 -0
  114. data/lib/rad/profiles/mailer.rb +5 -0
  115. data/lib/rad/profiles/web.rb +29 -52
  116. data/lib/rad/remote/_remote_controller.rb +9 -0
  117. data/lib/rad/remote/_require.rb +6 -0
  118. data/lib/rad/remote/processors/remote_caller.rb +44 -46
  119. data/lib/rad/remote/processors/remote_logger.rb +8 -10
  120. data/lib/rad/remote/remote_controller.rb +1 -0
  121. data/lib/rad/remote.rb +1 -9
  122. data/lib/rad/router/_abstract_router.rb +50 -0
  123. data/lib/rad/router/_alias_router.rb +124 -0
  124. data/lib/rad/router/_basic_router.rb +72 -0
  125. data/lib/rad/router/_configurator.rb +19 -0
  126. data/lib/rad/router/_core_routing_helper.rb +39 -0
  127. data/lib/rad/router/_default_format_processor.rb +10 -0
  128. data/lib/rad/router/_object_router.rb +184 -0
  129. data/lib/rad/router/_require.rb +31 -0
  130. data/lib/rad/router/_restful_router.rb +124 -0
  131. data/lib/rad/router/_router.rb +294 -0
  132. data/lib/rad/router/_simple_router.rb +21 -0
  133. data/lib/rad/router/abstract_router.rb +1 -0
  134. data/lib/rad/router/alias_router.rb +1 -0
  135. data/lib/rad/router/configurator.rb +1 -0
  136. data/lib/rad/router/micelaneous_router.rb +1 -0
  137. data/lib/rad/router/object_router.rb +1 -0
  138. data/lib/rad/router/processors/router.rb +23 -0
  139. data/lib/rad/router/restful_router.rb +1 -0
  140. data/lib/rad/{html/include_into_controller.rb → router/simple_router.rb} +0 -0
  141. data/lib/rad/router.rb +1 -29
  142. data/lib/rad/spec/controller.rb +20 -11
  143. data/lib/rad/spec/environment.rb +22 -38
  144. data/lib/rad/spec/http.rb +13 -86
  145. data/lib/rad/spec/http_controller.rb +105 -0
  146. data/lib/rad/spec/mailer.rb +27 -0
  147. data/lib/rad/spec/remote.rb +2 -2
  148. data/lib/rad/spec/router.rb +9 -11
  149. data/lib/rad/spec/template.rb +8 -2
  150. data/lib/rad/spec/xhtml.rb +0 -2
  151. data/lib/rad/spec.rb +4 -2
  152. data/lib/rad/template/_context.rb +92 -0
  153. data/lib/rad/template/_relative_path_resolver.rb +8 -0
  154. data/lib/rad/template/_require.rb +15 -0
  155. data/lib/rad/template/{support → _support}/tilt.rb +0 -0
  156. data/lib/rad/template/{support → _support}/tilt_fixes.rb +0 -0
  157. data/lib/rad/template/_template.rb +175 -0
  158. data/lib/rad/template/template_context.rb +1 -62
  159. data/lib/rad/template.rb +1 -25
  160. data/lib/rad.rb +8 -0
  161. data/readme.md +40 -12
  162. data/spec/controller/{abstract_controller_spec → abstract_spec}/views/OperationsOrderSpec/action.erb +0 -0
  163. data/spec/controller/{abstract_controller_spec → abstract_spec}/views/ViewVariablesSpec/action.erb +0 -0
  164. data/spec/controller/abstract_spec.rb +126 -0
  165. data/spec/controller/{controller_context_spec/views/ItemSpec → context_spec/views/NamespaceSpec/ClassSpec}/show.erb +0 -0
  166. data/spec/controller/{controller_context_spec/views/ItemSpec → context_spec/views/item_spec}/actions.erb +0 -0
  167. data/spec/controller/{controller_context_spec/views/NamespaceSpec/ClassSpec → context_spec/views/item_spec}/show.erb +0 -0
  168. data/spec/controller/{controller_context_spec/views/ItemSpec → context_spec/views/item_spec}/update.erb +0 -0
  169. data/spec/controller/{controller_context_spec → context_spec}/views/namespace_spec/class_spec/update.erb +0 -0
  170. data/spec/controller/{controller_context_spec/views/PageSpec → context_spec/views/page_spec}/actions.erb +0 -0
  171. data/spec/controller/{controller_context_spec/views/PageSpec → context_spec/views/page_spec}/show.erb +0 -0
  172. data/spec/controller/context_spec.rb +123 -0
  173. data/spec/controller/error_handling_spec.rb +21 -27
  174. data/spec/controller/{controller_helper_spec → helper_spec}/views/HelperMethodSpec/action.erb +0 -0
  175. data/spec/controller/{controller_helper_spec → helper_spec}/views/HelperSpec/action.erb +0 -0
  176. data/spec/controller/{controller_helper_spec.rb → helper_spec.rb} +7 -13
  177. data/spec/controller/{http_controller_spec.rb → http_spec.rb} +17 -23
  178. data/spec/controller/{controller_render_spec/views/AlreadyRenderedSpec → render_spec/views/already_rendered_spec}/action.erb +0 -0
  179. data/spec/controller/{controller_render_spec/views/AlreadyRenderedSpec → render_spec/views/already_rendered_spec}/custom_template.erb +0 -0
  180. data/spec/controller/{controller_render_spec/views/AnotherActionSpec → render_spec/views/another_action_spec}/another_action.erb +0 -0
  181. data/spec/controller/{controller_render_spec/views/AnotherLayout → render_spec/views/another_layout}/action.erb +0 -0
  182. data/spec/controller/{controller_render_spec/views/ForbidPartialAsActionSpec → render_spec/views/forbid_partial_as_action_spec}/_action.erb +0 -0
  183. data/spec/controller/{controller_render_spec/views/FormatSpec → render_spec/views/format_spec}/action.html.erb +0 -0
  184. data/spec/controller/{controller_render_spec/views/FormatSpec → render_spec/views/format_spec}/action.js.erb +0 -0
  185. data/spec/controller/{controller_render_spec/views/LayoutFiltersSpec → render_spec/views/layout_filters_spec}/action_with_layout.erb +0 -0
  186. data/spec/controller/{controller_render_spec/views/LayoutFiltersSpec → render_spec/views/layout_filters_spec}/action_without_layout.erb +0 -0
  187. data/spec/controller/{controller_render_spec/views/LayoutSpec → render_spec/views/layout_spec}/action.erb +0 -0
  188. data/spec/controller/{controller_render_spec → render_spec}/views/layouts/admin.erb +0 -0
  189. data/spec/controller/{controller_render_spec → render_spec}/views/layouts/app.html.erb +0 -0
  190. data/spec/controller/{controller_render_spec → render_spec}/views/layouts/app.js.erb +0 -0
  191. data/spec/controller/{controller_render_spec/views/MultipleActions → render_spec/views/multiple_actions}/actions.haml +0 -0
  192. data/spec/controller/render_spec/views/relative_spec/a/form.erb +1 -0
  193. data/spec/controller/render_spec/views/relative_spec/a/show.erb +1 -0
  194. data/spec/controller/render_spec/views/relative_spec/b/form.erb +1 -0
  195. data/spec/controller/{controller_render_spec → render_spec}/views/some_template.erb +0 -0
  196. data/spec/controller/{controller_render_spec → render_spec}/views/standalone.html.erb +0 -0
  197. data/spec/controller/{controller_render_spec.rb → render_spec.rb} +37 -27
  198. data/spec/{conveyor/conveyor_spec.rb → conveyors/conveyors_spec.rb} +36 -14
  199. data/spec/environment/config_spec.rb +13 -21
  200. data/spec/environment/environment_spec.rb +14 -41
  201. data/spec/environment/logger_spec.rb +4 -13
  202. data/spec/environment/minimal_app_spec/app.rb +1 -1
  203. data/spec/environment/minimal_app_spec.rb +12 -14
  204. data/spec/environment/standard_app_spec/app/lib/app/init.rb +1 -1
  205. data/spec/environment/standard_app_spec/plugin_a/lib/plugin_a/init.rb +1 -1
  206. data/spec/environment/standard_app_spec.rb +17 -25
  207. data/spec/html/basic_html_helper_spec.rb +7 -4
  208. data/spec/html/form_helper_spec.rb +5 -5
  209. data/spec/html/javascript_helper_spec.rb +9 -5
  210. data/spec/html/model_helper_spec.rb +9 -6
  211. data/spec/html/scoped_params_spec.rb +2 -2
  212. data/spec/html/spec_helper.rb +16 -24
  213. data/spec/http/http_spec.rb +14 -35
  214. data/spec/http/micelaneous_spec.rb +3 -3
  215. data/spec/{mail → mailer}/mail_controller_spec/views/body_template_spec/signup.erb +0 -0
  216. data/spec/{mail → mailer}/mail_controller_spec.rb +36 -12
  217. data/spec/mailer/spec_helper.rb +5 -0
  218. data/spec/remote/remote_spec.rb +23 -8
  219. data/spec/router/alias_router_spec.rb +29 -30
  220. data/spec/router/basic_router_spec.rb +44 -0
  221. data/spec/router/configurator_spec.rb +9 -6
  222. data/spec/router/integration_spec.rb +10 -7
  223. data/spec/router/object_router_spec.rb +186 -0
  224. data/spec/router/persistent_params_spec.rb +4 -4
  225. data/spec/router/restful_router_spec.rb +61 -53
  226. data/spec/router/{basic_spec.rb → router_spec.rb} +26 -23
  227. data/spec/router/routing_helper_spec.rb +5 -6
  228. data/spec/spec_helper.rb +4 -0
  229. data/spec/support/callbacks_spec.rb +1 -1
  230. data/spec/support/filters_spec.rb +2 -2
  231. data/spec/support/spec_helper.rb +1 -1
  232. data/spec/template/template_spec/views/format_for_partials/dialog.js.erb +1 -1
  233. data/spec/template/template_spec/views/nested/format/a.erb +1 -1
  234. data/spec/template/template_spec/views/nested/format/b.js.erb +1 -0
  235. data/spec/template/template_spec/views/nesting_format/dialog.js.erb +1 -1
  236. data/spec/template/template_spec.rb +62 -48
  237. data/spec/template/tilt_spec/views/concat_and_capture.erb +1 -1
  238. data/spec/template/tilt_spec/views/concat_and_capture.haml +1 -1
  239. data/spec/template/tilt_spec.rb +17 -19
  240. data/spec/{integration → web}/basic_spec/views/smoke_test_spec/action.erb +0 -0
  241. data/spec/{integration → web}/basic_spec.rb +31 -12
  242. data/spec/{integration → web}/controller_routing_helper_spec.rb +13 -11
  243. data/spec/{integration → web}/flash_spec.rb +57 -42
  244. data/spec/{integration → web}/spec_helper_spec.rb +11 -10
  245. data/spec/{integration → web}/view_routing_helper_spec.rb +44 -36
  246. metadata +338 -318
  247. data/lib/rad/controller/abstract_controller/micelaneous.rb +0 -31
  248. data/lib/rad/controller/abstract_controller/render.rb +0 -160
  249. data/lib/rad/controller/abstract_controller/responder.rb +0 -17
  250. data/lib/rad/controller/abstract_controller.rb +0 -64
  251. data/lib/rad/controller/controller_context.rb +0 -15
  252. data/lib/rad/controller/http_controller.rb +0 -48
  253. data/lib/rad/conveyor/conveyor.rb +0 -74
  254. data/lib/rad/conveyor/conveyors.rb +0 -20
  255. data/lib/rad/conveyor/params.rb +0 -14
  256. data/lib/rad/conveyor/processor.rb +0 -68
  257. data/lib/rad/conveyor/processors/conveyor_logger.rb +0 -25
  258. data/lib/rad/conveyor/workspace.rb +0 -36
  259. data/lib/rad/conveyor.rb +0 -29
  260. data/lib/rad/environment/dependency_resolver.rb +0 -107
  261. data/lib/rad/environment/environment.rb +0 -29
  262. data/lib/rad/environment/files_helper.rb +0 -55
  263. data/lib/rad/environment/logger.rb +0 -21
  264. data/lib/rad/html/flash.rb +0 -42
  265. data/lib/rad/html/helpers/basic_html_helper.rb +0 -83
  266. data/lib/rad/html/helpers/flash_helper.rb +0 -5
  267. data/lib/rad/html/helpers/form_helper.rb +0 -115
  268. data/lib/rad/html/helpers/html_helper.rb +0 -5
  269. data/lib/rad/html/helpers/javascript_helper.rb +0 -18
  270. data/lib/rad/html/helpers/model_helper.rb +0 -135
  271. data/lib/rad/http/http.rb +0 -21
  272. data/lib/rad/http/http_adapter.rb +0 -36
  273. data/lib/rad/http/middleware/static_files.rb +0 -21
  274. data/lib/rad/http/support/rack/rack_adapter.rb +0 -67
  275. data/lib/rad/http/support/rack/request.rb +0 -42
  276. data/lib/rad/http/support/rack/response.rb +0 -86
  277. data/lib/rad/integration/controller_micelaneous_helper.rb +0 -19
  278. data/lib/rad/integration/router/abstract_routing_helper.rb +0 -22
  279. data/lib/rad/integration/router/controller_routing_helper.rb +0 -58
  280. data/lib/rad/integration/router/view_routing_helper.rb +0 -104
  281. data/lib/rad/integration.rb +0 -30
  282. data/lib/rad/mail/letter.rb +0 -30
  283. data/lib/rad/mail/mail_controller.rb +0 -31
  284. data/lib/rad/mail/mailer.rb +0 -23
  285. data/lib/rad/mail/processors/letter_builder.rb +0 -36
  286. data/lib/rad/mail.rb +0 -15
  287. data/lib/rad/profiles/mail.rb +0 -16
  288. data/lib/rad/profiles/web_require.rb +0 -5
  289. data/lib/rad/remote/remote.rb +0 -15
  290. data/lib/rad/router/core/configurator.rb +0 -25
  291. data/lib/rad/router/core/core_routing_helper.rb +0 -41
  292. data/lib/rad/router/core/default_format_processor.rb +0 -12
  293. data/lib/rad/router/core/processors/router.rb +0 -29
  294. data/lib/rad/router/core/router.rb +0 -271
  295. data/lib/rad/router/core/simple_router.rb +0 -23
  296. data/lib/rad/router/routers/abstract_router.rb +0 -62
  297. data/lib/rad/router/routers/alias_router.rb +0 -113
  298. data/lib/rad/router/routers/restful_router.rb +0 -113
  299. data/lib/rad/spec/mail.rb +0 -31
  300. data/lib/rad/spec/view.rb +0 -10
  301. data/lib/rad/support/buffered_logger.rb +0 -44
  302. data/lib/rad/support/callbacks.rb +0 -168
  303. data/lib/rad/support/exception.rb +0 -31
  304. data/lib/rad/support/filters.rb +0 -34
  305. data/lib/rad/support/format.rb +0 -17
  306. data/lib/rad/support/micon.rb +0 -13
  307. data/lib/rad/support.rb +0 -63
  308. data/lib/rad/template/template.rb +0 -250
  309. data/spec/controller/abstract_controller_spec.rb +0 -132
  310. data/spec/controller/controller_context_spec.rb +0 -123
  311. data/spec/controller/controller_render_spec/views/rem ExplicitRenderSpec/action.erb +0 -1
  312. data/spec/controller/controller_render_spec/views/rem ExplicitRenderSpec/another_action.erb +0 -1
  313. data/spec/controller/spec_helper.rb +0 -19
  314. data/spec/conveyor/spec_helper.rb +0 -3
  315. data/spec/environment/config_spec/config.default.yml +0 -3
  316. data/spec/environment/config_spec/config.development.yml +0 -3
  317. data/spec/environment/config_spec/config.yml +0 -5
  318. data/spec/environment/spec_helper.rb +0 -1
  319. data/spec/http/http_spec/app/lib/app/init.rb +0 -10
  320. data/spec/http/http_spec/app/runtime/public/emptygit +0 -0
  321. data/spec/http/http_spec/plugin_a/lib/plugin_a/init.rb +0 -0
  322. data/spec/http/http_spec/plugin_b/lib/plugin_b/init.rb +0 -5
  323. data/spec/http/http_spec/plugin_b/static/emptygit +0 -0
  324. data/spec/http/spec_helper.rb +0 -5
  325. data/spec/integration/spec_helper.rb +0 -5
  326. data/spec/mail/spec_helper.rb +0 -7
  327. data/spec/remote/spec_helper.rb +0 -17
  328. data/spec/router/spec_helper.rb +0 -20
  329. data/spec/template/spec_helper.rb +0 -6
  330. data/spec/template/template_spec/views/nested/format/b.erb +0 -1
data/lib/rad/router.rb CHANGED
@@ -1,29 +1 @@
1
- require 'rad/conveyor'
2
-
3
- %w(
4
- configurator
5
- simple_router
6
- router
7
- default_format_processor
8
-
9
- core_routing_helper
10
-
11
- processors/router
12
- ).each{|f| require "rad/router/core/#{f}"}
13
-
14
- # {AliasRouter: 'alias_router', RestfulRouter: 'restful_router'}.each do |klass, path|
15
- # Rad.autoload klass, "rad/router/routers/#{path}"
16
- # end
17
- %w(
18
- abstract_router
19
- alias_router
20
- restful_router
21
- ).each{|f| require "rad/router/routers/#{f}"}
22
-
23
- Rad::Config::DEFAULTS.merge!(
24
- default_path: '/'
25
- )
26
-
27
- Rad.metaclass do
28
- delegate :routes, to: Rad::Routes::Configurator
29
- end
1
+ rad.router
@@ -1,18 +1,16 @@
1
- require 'rad/spec/environment'
1
+ Rspec.configure do |config|
2
+ config.before :all do |context|
3
+ self.response, self.workspace = nil
4
+ end
5
+ end
2
6
 
3
7
  rspec do
4
8
  attr_accessor :response, :workspace
5
-
6
- def self.with_controller
7
- before :each do
8
- self.response = nil
9
- end
10
- end
11
9
 
12
10
  def ccall klass, method, params = {}, workspace_variables = {}, &block
13
- self.response = Rad::Response.new
11
+ self.response = Rad::Http::Response.new
14
12
  workspace_variables = {
15
- class: klass, method_name: method, params: Rad::Params.new(params), response: response
13
+ class: klass, method_name: method, params: Rad::Conveyors::Params.new(params), response: response
16
14
  }.merge(workspace_variables)
17
15
 
18
16
  if block
@@ -25,16 +23,27 @@ rspec do
25
23
  self.workspace = rad.conveyors.web.call workspace_variables
26
24
  end
27
25
 
28
- if Rad.const_defined?(:HttpController) and klass and klass.is?(::Rad::HttpController)
26
+ if klass and klass.name =~ /Http/
29
27
  response.content_type.must_be.present
30
28
  response.status.must_be.present
31
29
  end
32
30
 
33
31
  workspace.content
34
32
  end
33
+
34
+ def self.with_abstract_controller
35
+ before do
36
+ rad.controller
37
+
38
+ rad.conveyors.web do |web|
39
+ web.use Rad::Controller::Processors::ControllerCaller
40
+ end
41
+ end
42
+ after{rad.reset :conveyors}
43
+ end
35
44
  end
36
45
 
37
- Rad::AbstractController.class_eval do
46
+ Rad::Controller::Abstract.class_eval do
38
47
  def render_ok
39
48
  render inline: 'ok'
40
49
  end
@@ -1,51 +1,35 @@
1
1
  require 'rspec_ext'
2
+ require 'micon/spec'
3
+
4
+ rad.mode = :test
5
+ rad.logger = Logger.new nil
6
+ rad.runtime_path = 'tmp', true
2
7
 
3
8
  rspec do
4
- def self.swap_metadata scope = :all
5
- old_metadata = nil
6
-
7
- before scope do
8
- old_metadata = Micon.metadata
9
- Micon.swap_metadata old_metadata.deep_clone
10
- end
9
+ def self.isolate *args
10
+ options = args.extract_options!
11
+ scope = options[:before] || :each
12
+ components = args.first.is_a?(Array) ? args.first : args
11
13
 
12
- after scope do
13
- Micon.swap_metadata old_metadata
14
+ old = {}
15
+ before :all do
16
+ components.each do |name|
17
+ old[name] = rad[name]
18
+ end
14
19
  end
15
- end
16
-
17
- def self.with_environment options = {}, &block
18
- options = options.to_openobject
19
- runtime_dir = options.delete(:runtime_dir) || './tmp'
20
- scope = options.delete(:before) || :each
21
- environment = options.delete(:environment) || :test
22
- raise "Invalid options :#{options.to_hash.keys.join(', :')}!" unless options.empty?
23
-
24
- swap_metadata
25
20
 
26
21
  before scope do
27
- rad.clear
28
- Micon.after :config do |config|
29
- config.set! environment: environment, runtime_dir: runtime_dir
22
+ components.each do |name|
23
+ rad[name] = old[name].deep_clone
30
24
  end
31
-
32
- block.call if block
33
-
34
- silence_logger!
35
- # Rad.initialize_plugin runtime_dir, environment
36
25
  end
37
-
26
+
38
27
  after scope do
39
- rad.clear
40
- end
28
+ components.each do |name|
29
+ rad[name] = old[name].deep_clone
30
+ end
31
+ end
41
32
  end
42
33
 
43
- inject(
44
- config: :config,
45
- logger: :logger
46
- )
47
-
48
- def silence_logger!
49
- self.logger = Logger.new nil
50
- end
34
+ inject environment: :environment, logger: :logger
51
35
  end
data/lib/rad/spec/http.rb CHANGED
@@ -1,93 +1,20 @@
1
- require 'rad/spec/controller'
2
-
3
1
  rspec do
4
- def request
5
- rad.workspace.request
6
- end
7
-
8
- def self.with_http
9
- with_controller
10
-
11
- before :all do
12
- rad.before_scope :cycle do
13
- if defined?(Rad::Processors) and defined?(Rad::Processors::PrepareParams)
14
- rad.conveyors.web do |web|
15
- web.definitions.delete_if{|pdef, args| pdef == Rad::Processors::PrepareParams}
16
- web.build!
17
- end
18
- end
19
- end
2
+ def self.with_prepare_params
3
+ before do
4
+ $with_prepare_params = true
20
5
  end
21
- end
22
-
23
- WCALL_OPTIONS = [:controller]
24
- attr_writer :wcall_options
25
- def wcall_options; @wcall_options ||= {} end
26
-
27
- def set_wcall options
28
- invalid_options = options.keys - WCALL_OPTIONS
29
- raise "Unsupported options #{invalid_options}!" unless invalid_options.empty?
30
6
 
31
- self.wcall_options = options
32
- end
33
-
34
- def set_controller controller_class
35
- set_wcall controller: controller_class
36
- end
37
-
38
- def self.set_controller &block
39
- block.must_be.defined
40
- before(:each){set_controller block.call}
41
- end
42
-
43
- def wcall *args, &block
44
- workspace_variables, params = parse_wcall_arguments *args
45
- ccall nil, nil, params, workspace_variables, &block
46
- end
47
-
48
- def post_wcall *args, &block
49
- params = args.extract_options!
50
- raise "_method variable already set!" if params.include?(:_method) or params.include?('_method')
51
- wcall(*(args << params.merge(_method: 'post')), &block)
7
+ after do
8
+ $with_prepare_params = false
9
+ end
52
10
  end
53
-
54
- protected
55
- def parse_wcall_arguments *args
56
- # parsing params
57
- params = args.extract_options!
58
- first = args.first
11
+ end
59
12
 
60
- workspace_variables = {}
61
- if args.size == 1 and first.is_a?(String) and first =~ /^\//
62
- workspace_variables[:path] = first
63
- elsif (first.is_a?(String) or first.is_a?(Symbol)) and args.size <= 2
64
- workspace_variables[:path] = '/'
65
- workspace_variables[:class] = wcall_options[:controller] || raise("not defined wcall controller (use set_wcall controller: SomeController)!")
66
- workspace_variables[:method_name] = first
67
- workspace_variables.merge! args[1] if args.size > 1
68
- elsif first.is_a?(Class) and args.size <= 3
69
- workspace_variables[:path] = '/'
70
- workspace_variables[:class] = args[0]
71
- workspace_variables[:method_name] = args[1]
72
- workspace_variables.merge! args[2] if args.size > 2
73
- else
74
- raise "Invalid input!"
75
- end
76
-
77
- # preparing environment
78
- workspace_variables[:env] ||= {}
79
- workspace_variables[:env].reverse_merge! Rad::HTTPAdapter.mock_environment
80
-
81
- # setting request method
82
- if request_method = params.delete(:_method) || params.delete('_method')
83
- request_method = request_method.to_s.upcase
84
- raise "invalid request method :#{request}" unless %w(GET POST PUT DELETE).include? request_method.
85
- raise "REQUEST_METHOD variable already set!" if workspace_variables[:env].include? 'REQUEST_METHOD'
86
- workspace_variables[:env]['REQUEST_METHOD'] = request_method
87
- end
88
-
89
- workspace_variables[:request] = Rad::Request.new(workspace_variables[:env])
90
-
91
- return workspace_variables, params
13
+ rad.before_scope :cycle do
14
+ unless $with_prepare_params
15
+ rad.conveyors.web do |web|
16
+ web.definitions.delete_if{|pdef, args| pdef.name =~ /PrepareParams/}
17
+ web.build!
92
18
  end
19
+ end
93
20
  end
@@ -0,0 +1,105 @@
1
+ require 'rad/spec/controller'
2
+
3
+ Rspec.configure do |config|
4
+ config.after :all do |context|
5
+ context.wcall_options = {}
6
+ end
7
+ end
8
+
9
+ rspec do
10
+ def request
11
+ rad.workspace.request
12
+ end
13
+
14
+ # def self.with_http_controller options = {}
15
+ # scope = options[:before] || :all
16
+ # prepare_params = options[:prepare_params]
17
+ #
18
+ # with_controller options
19
+ #
20
+ # unless prepare_params
21
+ # before scope do
22
+ #
23
+ # end
24
+ # end
25
+ # end
26
+
27
+ WCALL_OPTIONS = [:controller]
28
+ attr_writer :wcall_options
29
+ def wcall_options; @wcall_options ||= {} end
30
+
31
+ def set_wcall options
32
+ invalid_options = options.keys - WCALL_OPTIONS
33
+ raise "Unsupported options #{invalid_options}!" unless invalid_options.empty?
34
+
35
+ self.wcall_options = options
36
+ end
37
+
38
+ def set_controller controller_class
39
+ @controller_class = controller_class
40
+ set_wcall controller: controller_class
41
+ end
42
+
43
+ def self.set_controller controller_class
44
+ before{set_controller controller_class}
45
+ end
46
+
47
+ def wcall *args, &block
48
+ workspace_variables, params = parse_wcall_arguments *args
49
+ ccall nil, nil, params, workspace_variables, &block
50
+ end
51
+
52
+ def post_wcall *args, &block
53
+ params = args.extract_options!
54
+ raise "_method variable already set!" if params.include?(:_method) or params.include?('_method')
55
+ wcall(*(args << params.merge(_method: 'post')), &block)
56
+ end
57
+
58
+ protected
59
+ def parse_wcall_arguments *args
60
+
61
+ # parsing params
62
+ params = args.extract_options!
63
+ first = args.first
64
+
65
+ workspace_variables = {}
66
+ if args.size == 1 and first.is_a?(String) and first =~ /^\/|^http:/
67
+ if first =~ /^\//
68
+ workspace_variables[:path] = first
69
+ else
70
+ uri = Uri.parse first
71
+ workspace_variables[:path] = uri.path
72
+ workspace_variables[:params] = uri.query_values
73
+ workspace_variables[:env] = rad.http.mock_environment(first)
74
+ end
75
+ elsif (first.is_a?(String) or first.is_a?(Symbol)) and args.size <= 2
76
+ workspace_variables[:path] = '/'
77
+ workspace_variables[:class] = wcall_options[:controller] || raise("not defined wcall controller (use set_wcall controller: SomeController)!")
78
+ workspace_variables[:method_name] = first
79
+ workspace_variables.merge! args[1] if args.size > 1
80
+ elsif first.is_a?(Class) and args.size <= 3
81
+ workspace_variables[:path] = '/'
82
+ workspace_variables[:class] = args[0]
83
+ workspace_variables[:method_name] = args[1]
84
+ workspace_variables.merge! args[2] if args.size > 2
85
+ else
86
+ raise "Invalid input!"
87
+ end
88
+
89
+ # preparing environment
90
+ workspace_variables[:env] ||= {}
91
+ workspace_variables[:env].reverse_merge! rad.http.mock_environment
92
+
93
+ # setting request method
94
+ if request_method = params.delete(:_method) || params.delete('_method')
95
+ request_method = request_method.to_s.upcase
96
+ raise "invalid request method :#{request}" unless %w(GET POST PUT DELETE).include? request_method.
97
+ raise "REQUEST_METHOD variable already set!" if workspace_variables[:env].include? 'REQUEST_METHOD'
98
+ workspace_variables[:env]['REQUEST_METHOD'] = request_method
99
+ end
100
+
101
+ workspace_variables[:request] = Rad::Http::Request.new(workspace_variables[:env])
102
+
103
+ return workspace_variables, params
104
+ end
105
+ end
@@ -0,0 +1,27 @@
1
+ module Rad::MailerSpecHelper
2
+ def sent_letters
3
+ Rad::MailerSpecHelper.sent_letters
4
+ end
5
+
6
+ class << self
7
+ attr_accessor :sent_letters
8
+ end
9
+ end
10
+
11
+ rspec.include Rad::MailerSpecHelper
12
+
13
+ Rspec.configure do |config|
14
+ config.before do
15
+ Rad::MailerSpecHelper.sent_letters = []
16
+ end
17
+ end
18
+
19
+ Rad::Mailer.class_eval do
20
+ def deliver letter
21
+ Rad::MailerSpecHelper.sent_letters << letter
22
+ end
23
+ end
24
+
25
+ Mail.defaults do
26
+ delivery_method :test
27
+ end
@@ -1,9 +1,9 @@
1
- require 'rad/spec/environment'
1
+ require 'rad'
2
2
 
3
3
  rspec do
4
4
  def rcall klass, method, params = {}
5
5
  rad.conveyors.services.call(
6
- class: klass, method_name: method, params: Rad::Params.new(params)
6
+ class: klass, method_name: method, params: Rad::Conveyors::Params.new(params)
7
7
  )
8
8
  end
9
9
  end
@@ -1,15 +1,13 @@
1
- require 'rad/router'
1
+ rspec.include Rad::Router::CoreRoutingHelper
2
2
 
3
- rspec do
4
- def self.with_router
5
- include Rad::CoreRoutingHelper
6
- end
7
- end
8
-
9
- # Rad::Response.class_eval do
10
- # def success?
11
- # headers['Location'].blank?
12
- # end
3
+ # rspec do
4
+ # def self.with_router options = {}
5
+ # scope = options[:before] || :all
6
+ #
7
+ # before scope do
8
+ #
9
+ # end
10
+ # end
13
11
  # end
14
12
 
15
13
  rspec.define_matcher :redirect_to do |actual, expected|
@@ -6,7 +6,13 @@ rspec do
6
6
  args
7
7
  end
8
8
 
9
- before(:all){list.each{|path| Rad::Template.paths << path}}
10
- after(:all){list.each{|path| Rad::Template.paths.delete path}}
9
+ before do
10
+ rad.template
11
+ list.each{|path| rad.template.paths << path}
12
+ end
13
+
14
+ after do
15
+ list.each{|path| rad.template.paths.delete path}
16
+ end
11
17
  end
12
18
  end
@@ -28,6 +28,4 @@ require 'nokogiri'
28
28
 
29
29
  node_attributes.should == attributes
30
30
  end
31
-
32
-
33
31
  end
data/lib/rad/spec.rb CHANGED
@@ -1,11 +1,13 @@
1
1
  require 'rspec_ext'
2
+ require 'rad'
2
3
 
3
4
  %w(
4
- controller
5
5
  environment
6
6
  template
7
7
  http
8
- mail
8
+ controller
9
+ http_controller
9
10
  remote
11
+ mailer
10
12
  router
11
13
  ).each{|f| require "rad/spec/#{f}"}
@@ -0,0 +1,92 @@
1
+ class Rad::Template::Context
2
+ include Tilt::CompileSite, Tilt::ContextExt
3
+
4
+ #
5
+ # System
6
+ #
7
+ attr_accessor :_tilt_template
8
+
9
+ def initialize instance_variables = nil
10
+ set_instance_variables! instance_variables if instance_variables
11
+ end
12
+
13
+ # for saving :format, :current_dir and others
14
+ attr_accessor :scope_variables
15
+
16
+
17
+ #
18
+ # Helpers
19
+ #
20
+ inject(
21
+ workspace: :workspace,
22
+ router: :router,
23
+ template: :template,
24
+ logger: :logger
25
+ )
26
+
27
+ delegate :render, to: :template
28
+ delegate :url_for, to: :router
29
+
30
+
31
+ def j obj
32
+ obj.to_s.json_escape
33
+ end
34
+
35
+ def blank? obj
36
+ obj.is_a?(String) ? !!(obj =~ /\A\s*\z/) : obj.blank?
37
+ end
38
+ def present? obj
39
+ !blank?(obj)
40
+ end
41
+
42
+
43
+ #
44
+ # Content Variables
45
+ #
46
+ attr_accessor :content_block
47
+ def content_variables; @content_variables ||= {}.to_openobject end
48
+ def content_for name, content = nil, &block
49
+ content ||= capture(&block)
50
+ (content_variables[name.to_s] ||= "") << content
51
+ nil
52
+ end
53
+ def prepend_to name, content = nil, &block
54
+ content ||= capture(&block)
55
+ (content_variables[name.to_s] ||= "").insert 0, content
56
+ nil
57
+ end
58
+ def wrap_content_for name, &block
59
+ block.must_be.defined
60
+ content = capture((content_variables[name.to_s] || ""), &block)
61
+ content_variables[name.to_s] ||= content
62
+ nil
63
+ end
64
+ def has_content_for? name
65
+ content_variables.include? name.to_s
66
+ end
67
+
68
+ def params
69
+ workspace.params
70
+ end
71
+
72
+ def find_relative_template *args
73
+ self.class.find_relative_template *args
74
+ end
75
+
76
+ protected
77
+ def set_instance_variables! instance_variables
78
+ instance_variables = [instance_variables] unless instance_variables.is_a? Array
79
+ instance_variables.each do |container|
80
+ if container.is_a? Hash
81
+ container.each do |name, value|
82
+ instance_variable_set("@#{name}", value)
83
+ end
84
+ else
85
+ container.instance_variables.each do |ivname|
86
+ iv = container.instance_variable_get(ivname)
87
+ instance_variable_set(ivname, iv)
88
+ end
89
+ end
90
+ end
91
+ end
92
+ end
@@ -0,0 +1,8 @@
1
+ class Rad::Template::RelativePathResolver
2
+ def find_relative_template tname, prefixes, format, exact_format, current_dir
3
+ raise "You can't use relative template path '#{tname}' without :current_dir!" unless current_dir
4
+ prefixes = prefixes || rad.template.prefixes
5
+ rad.template.find_file("/#{tname}", prefixes, format, exact_format, [current_dir])
6
+ end
7
+ cache_method_with_params_in_production :find_relative_template
8
+ end
@@ -0,0 +1,15 @@
1
+ require 'erb'
2
+ require 'haml'
3
+ require 'tilt'
4
+
5
+ class Rad::Template
6
+ end
7
+
8
+ %w(
9
+ _support/tilt
10
+ _support/tilt_fixes
11
+
12
+ _relative_path_resolver
13
+ _template
14
+ _context
15
+ ).each{|f| require "rad/template/#{f}"}
File without changes