rad_core 0.0.13 → 0.0.14

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -1,12 +1,10 @@
1
- module Rad
2
- module Processors
3
- class ControllerLogger < Processor
4
- def call
5
- if (klass = workspace.class) and (method = workspace.method_name)
6
- logger.info " Processing #{klass.name}.#{method} with #{workspace.params.inspect}"
7
- end
8
- next_processor.call
9
- end
1
+ rad.controller
2
+
3
+ class ControllerLogger < Rad::Conveyors::Processor
4
+ def call
5
+ if (klass = workspace.class) and (method = workspace.method_name)
6
+ logger.info "RAD processing #{klass.name}.#{method} with #{workspace.params.inspect}"
10
7
  end
8
+ next_processor.call
11
9
  end
12
10
  end
@@ -1,28 +1 @@
1
- require 'rad/conveyor'
2
- require 'rad/template'
3
-
4
- %w(
5
- abstract_controller/render
6
- abstract_controller/responder
7
- abstract_controller/micelaneous
8
- abstract_controller
9
- controller_context
10
-
11
- processors/controller_logger
12
- processors/controller_caller
13
- processors/controller_error_handling
14
- ).each{|f| require "rad/controller/#{f}"}
15
-
16
- module Rad
17
- autoload :HttpController, 'rad/controller/http_controller'
18
- end
19
-
20
- #
21
- # Initialization
22
- #
23
- Rad::Config::DEFAULTS.merge!(
24
- development_error_template: "/rad_default_templates/development/error",
25
- production_error_template: nil,
26
- test_error_template: "/rad_default_templates/development/error",
27
- )
28
- Rad::Config::DEFAULTS[:default_method] ||= 'call'
1
+ rad.controller
@@ -0,0 +1,73 @@
1
+ class Rad::Conveyors::Conveyor
2
+ inject workspace: :workspace
3
+
4
+ def definitions
5
+ @definitions ||= []
6
+ end
7
+
8
+ def use processor_class, *initialization_arguments
9
+ definitions << [processor_class, initialization_arguments]
10
+ end
11
+
12
+ def build!
13
+ @chain = lambda{}
14
+ definitions.reverse.collect do |klass, args|
15
+ klass.must_be.a Class
16
+ @chain = klass.new @chain, *args
17
+ end
18
+ end
19
+
20
+ def call workspace_content = {}, &block
21
+ build! unless @chain
22
+
23
+ scope = (rad.custom_scopes[:cycle] || {}).clone
24
+ rad.activate :cycle, scope do
25
+ self.workspace = ::Rad::Conveyors::Workspace.new unless self.workspace?
26
+ workspace.merge! workspace_content
27
+
28
+ if block
29
+ block.call(@chain)
30
+ else
31
+ @chain.call
32
+ end
33
+
34
+ workspace
35
+ end
36
+ end
37
+
38
+ def inspect
39
+ definitions.inspect
40
+ end
41
+
42
+ # def trace name, &block
43
+ # start_time = Time.now
44
+ # block.call
45
+ # (workspace.trace ||= []) << [name, Time.now - start_time]
46
+ # end
47
+
48
+ protected
49
+ # def build_chain
50
+ # next_processor_call = nil
51
+ # chain = reverse.collect do |processor|
52
+ # next_processor_call = if next_processor_call
53
+ # lambda{processor.call next_processor}
54
+ # else
55
+ # lambda{processor.call lambda{}}
56
+ # end
57
+ # end
58
+ # next_processor_call
59
+ # end
60
+
61
+
62
+ # def add_before key, *processors
63
+ # index = index{|processor| processor.name == key or processor.class == key}
64
+ # raise "Can't find Processor '#{name}'!" unless index
65
+ # insert index, *Array(processors)
66
+ # end
67
+ #
68
+ # def add_after key, *processors
69
+ # index = rindex{|processor| processor.name == key or processor.class == key}
70
+ # raise "Can't find Processor '#{name}'!" unless index
71
+ # insert index + 1, *Array(processors)
72
+ # end
73
+ end
@@ -0,0 +1,19 @@
1
+ class Rad::Conveyors
2
+ def initialize
3
+ @hash = {}
4
+ end
5
+
6
+ def [] conveyor_name
7
+ @hash[conveyor_name.to_s] ||= Conveyor.new
8
+ end
9
+
10
+ def size; @hash.size end
11
+
12
+ def method_missing m, &block
13
+ if block
14
+ block.call self[m]
15
+ else
16
+ self[m]
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,10 @@
1
+ class Rad::Conveyors::Params < OpenObject
2
+ def initialize h = nil
3
+ update h if h
4
+ end
5
+
6
+ def inspect
7
+ h = to_h
8
+ h.inspect
9
+ end
10
+ end
@@ -0,0 +1,13 @@
1
+ class Rad::Conveyors::Processor
2
+ inject workspace: :workspace, logger: :logger
3
+
4
+ attr_accessor :next_processor
5
+
6
+ def initialize next_processor
7
+ @next_processor = next_processor
8
+ end
9
+
10
+ def self.inspect
11
+ self.name.split('::').last
12
+ end
13
+ end
@@ -0,0 +1,10 @@
1
+ class Rad::Conveyors
2
+ end
3
+
4
+ %w(
5
+ _params
6
+ _workspace
7
+ _processor
8
+ _conveyor
9
+ _conveyors
10
+ ).each{|f| require "rad/conveyors/#{f}"}
@@ -0,0 +1,34 @@
1
+ class Rad::Conveyors::Workspace < OpenObject
2
+ def params
3
+ self[:params] || ::Rad::Conveyors::Params.new
4
+ end
5
+
6
+ def params?
7
+ !!params
8
+ end
9
+
10
+ alias_method :set_without_params, :[]=
11
+ def []= k, v
12
+ if k.to_s == 'params'
13
+ self.params = v
14
+ else
15
+ set_without_params k, v
16
+ end
17
+ end
18
+
19
+ def params= v
20
+ if v.is_a? ::Rad::Conveyors::Params
21
+ set_without_params :params, v
22
+ else
23
+ set_without_params :params, ::Rad::Conveyors::Params.new(v)
24
+ end
25
+ end
26
+
27
+ def inspect
28
+ h = {}
29
+ each{|k, v| h[k] = v}
30
+ h['env'] = "..." if h.include? 'env'
31
+ h['request'] = "..." if h.include? 'request'
32
+ h.inspect
33
+ end
34
+ end
@@ -0,0 +1 @@
1
+ rad.conveyors
@@ -0,0 +1 @@
1
+ rad.conveyors
@@ -0,0 +1,23 @@
1
+ rad.conveyors
2
+
3
+ class ConveyorLogger < Rad::Conveyors::Processor
4
+ def call
5
+ begin
6
+ start_time = Time.now
7
+ next_processor.call
8
+
9
+ # if workspace.trace?
10
+ # total_time = workspace.trace.inject(0){|memo, pair| memo += pair.last}
11
+ # max_pair = workspace.trace.max_by{|pair| pair.last}
12
+ # logger.info "Completed in #{(total_time * 1000).round} ms (#{(max_pair.last * 1000).round} ms taken by #{max_pair.first})\n\n"
13
+ # else
14
+ logger.info "RAD completed in #{((Time.now - start_time) * 1000).round} ms\n"
15
+ # end
16
+ rescue StandardError => e
17
+ raise e if rad.test?
18
+
19
+ logger.error e
20
+ logger.info "\n"
21
+ end
22
+ end
23
+ end
@@ -0,0 +1 @@
1
+ rad.conveyors
@@ -0,0 +1 @@
1
+ rad.conveyors
@@ -0,0 +1,17 @@
1
+ module Rad::ControllerMicelaneousHelper
2
+ def reload_page
3
+ params = workspace.params
4
+ params.format.must_be.in 'html', 'js'
5
+
6
+ keep_flash!
7
+ if params.format == 'js'
8
+ workspace.response.set!(
9
+ status: :ok,
10
+ content_type: Mime[params.format]
11
+ )
12
+ throw :halt, "window.location.reload();"
13
+ else
14
+ redirect_to workspace.request.env["HTTP_REFERER"]
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,25 @@
1
+ %w(
2
+ _controller_micelaneous_helper
3
+
4
+ _router/abstract_routing_helper
5
+ _router/view_routing_helper
6
+ _router/controller_routing_helper
7
+ ).each{|f| require "rad/core_web/#{f}"}
8
+
9
+
10
+ # View helpers
11
+ [
12
+ Rad::Html::HtmlHelper,
13
+ Rad::Router::CoreRoutingHelper, Rad::ViewRoutingHelper
14
+ ].each do |helper|
15
+ Rad::Template::Context.inherit helper
16
+ end
17
+
18
+ # Controller helpers
19
+ [
20
+ Rad::Html::FlashHelper,
21
+ Rad::Router::CoreRoutingHelper, Rad::ControllerRoutingHelper,
22
+ Rad::ControllerMicelaneousHelper
23
+ ].each do |helper|
24
+ Rad::Controller::Abstract.inherit helper
25
+ end
@@ -0,0 +1,20 @@
1
+ module Rad::AbstractRoutingHelper
2
+ protected
3
+ def special_url key
4
+ return nil unless (key.is_a?(Symbol) or key.is_a?(String))
5
+
6
+ if key == :back
7
+ workspace.request.env["HTTP_REFERER"] || 'javascript:history.back()'
8
+ elsif key == '#'
9
+ '#'
10
+ # elsif key =~ /^http:\/\// # /^[\/0-9_a-z]+$/i
11
+ # key
12
+ else
13
+ nil
14
+ end
15
+ end
16
+
17
+ def keep_flash!
18
+ rad[:flash].keep! if rad.include? :flash
19
+ end
20
+ end
@@ -0,0 +1,56 @@
1
+ module Rad::ControllerRoutingHelper
2
+ inherit Rad::AbstractRoutingHelper
3
+
4
+ module ClassMethods
5
+
6
+ #
7
+ # persist_params controller filters
8
+ #
9
+ def persist_params *args
10
+ if args.empty?
11
+ before :persist_params
12
+ elsif args.first.is_a? Hash
13
+ before :persist_params, args.first
14
+ else
15
+ before :persist_params, only: args.first
16
+ end
17
+ end
18
+ end
19
+
20
+ #
21
+ # redirect_to
22
+ #
23
+ def redirect_to *args
24
+ params, response = workspace.params, workspace.response
25
+ params.format.must_be.in 'html', 'js'
26
+
27
+ if url = special_url(args.first)
28
+ args.size.must_be <= 1
29
+ else
30
+ url = url_for(*args)
31
+ end
32
+ content_type = Mime[params.format]
33
+
34
+ content = if params.format == 'js'
35
+ response.set!(
36
+ status: :ok,
37
+ content_type: content_type
38
+ )
39
+
40
+ "window.location = '#{url}';"
41
+ else
42
+ response.set!(
43
+ status: :redirect,
44
+ content_type: content_type
45
+ )
46
+ response.headers['Location'] = url
47
+
48
+ %(<html><body>You are being <a href="#{url.html_escape if url}">redirected</a>.</body></html>)
49
+ end
50
+
51
+ # Flash need to know if we using redirect
52
+ keep_flash!
53
+
54
+ throw :halt, content
55
+ end
56
+ end
@@ -0,0 +1,57 @@
1
+ module Rad::ViewRoutingHelper
2
+ inherit Rad::AbstractRoutingHelper
3
+
4
+ def link_to *args, &block
5
+ # content
6
+ content = if block
7
+ capture(&block)
8
+ else
9
+ args.shift
10
+ end
11
+
12
+ # url, html_options
13
+ if args.first.is_a? String
14
+ args.size.must_be.in 1..2
15
+ url, html_options = args
16
+ html_options ||= {}
17
+ else
18
+ if url = special_url(args.first)
19
+ args.size.must_be <= 2
20
+ html_options = args[1] || {}
21
+ else
22
+ html_options = if args[-1].is_a?(Hash) and args[-2].is_a?(Hash)
23
+ args.pop
24
+ else
25
+ {}
26
+ end
27
+
28
+ args << {} unless args[-1].is_a?(Hash)
29
+ url = url_for(*args)
30
+ end
31
+ end
32
+
33
+ # add javascript
34
+ html_options[:href] = url
35
+ add_js_link_options! url, html_options
36
+ tag :a, content, html_options
37
+ end
38
+
39
+ protected
40
+ def add_js_link_options! url, html_options
41
+ remote = html_options.delete(:remote) || rad.html.remote_link_formats.include?(url.marks.format)
42
+ method = html_options.delete(:method)
43
+
44
+ if remote or method
45
+ action = html_options.delete(:href).must_be.defined
46
+ html_options[:href] = '#'
47
+
48
+ html_options['data-action'] = action
49
+ html_options['data-remote'] = 'true' if remote
50
+ html_options['data-method'] = method || 'post'
51
+ end
52
+
53
+ if confirm = html_options.delete(:confirm)
54
+ html_options['data-confirm'] = confirm
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,27 @@
1
+ class Rad::Config
2
+ def subset; raise "you probably mistuped, it's config, not hash" end
3
+
4
+ def initialize hash = {}
5
+ hash.each do |k, v|
6
+ instance_variable_set :"@#{k}", v
7
+ end
8
+ end
9
+
10
+ def deep_clone
11
+ clone = Rad::Config.new
12
+ instance_variable_names.each do |k|
13
+ clone.instance_variable_set k, instance_variable_get(k).deep_clone
14
+ end
15
+ clone
16
+ end
17
+ alias_method :clone, :deep_clone
18
+
19
+ protected
20
+ def method_missing m, *args
21
+ if m =~ /=$/
22
+ instance_variable_set :"@#{m[0..-2]}", args.first
23
+ else
24
+ instance_variable_get :"@#{m}"
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,17 @@
1
+ #
2
+ # Environment
3
+ #
4
+ class Rad::Environment
5
+ inherit Rad::Environment::FilesHelper
6
+
7
+ inject logger: :logger
8
+
9
+ attr_writer :available_languages
10
+ def available_languages; @available_languages ||= [] end
11
+
12
+ attr_accessor :language
13
+
14
+ class << self
15
+ inject logger: :logger
16
+ end
17
+ end
@@ -0,0 +1,55 @@
1
+ module Rad::Environment::FilesHelper
2
+ def directories
3
+ $LOAD_PATH
4
+ end
5
+
6
+ def file_exist? path, directories = nil
7
+ find_files(path, directories).size > 0
8
+ end
9
+
10
+ def find_files fname, directories = nil
11
+ directories ||= self.directories
12
+ Rad::Environment::FilesHelper.find_files fname, directories
13
+ end
14
+
15
+ def find_files_without_cache fname, directories = nil
16
+ # directories ||= self.directories
17
+ Rad::Environment::FilesHelper.find_files_without_cache fname, directories
18
+ end
19
+
20
+ def find_file fname, directories = nil
21
+ files = find_files(fname, directories)
22
+ raise "Found multiple files for '#{fname}'" if files.size > 1
23
+ files.first
24
+ end
25
+
26
+ def find_file! fname, directories = nil
27
+ find_file(fname, directories) || raise("File '#{fname}' not found!")
28
+ end
29
+
30
+ def find_files_by_pattern_without_cache pattern, directories = nil
31
+ directories ||= self.directories
32
+ patterns = directories.to_a.collect{|d| "#{d}#{pattern}"}
33
+ Dir.glob patterns
34
+ end
35
+ alias_method :find_files_by_pattern, :find_files_by_pattern_without_cache
36
+
37
+ def find_file_by_pattern pattern
38
+ files = find_files_by_pattern(pattern)
39
+ raise "File '#{pattern}' not found!" if files.size == 0
40
+ raise "Found multiple files for '#{pattern}'" if files.size > 1
41
+ files.first
42
+ end
43
+
44
+ class << self
45
+ # don't move this class method to module, because there will be then
46
+ # multiple cache for every object that includes it.
47
+ def find_files fname, directories
48
+ fname.must =~ /\//
49
+ directories.must_be.present # || raise('directories ')= self.directories
50
+ files = directories.collect{|dir| "#{dir}#{fname}"}
51
+ files.select{|f| File.exist? f}
52
+ end
53
+ cache_method_with_params_in_production :find_files
54
+ end
55
+ end
@@ -0,0 +1,53 @@
1
+ class Rad::Logger
2
+ def initialize stream
3
+ @stream = stream
4
+ end
5
+
6
+ def silence &b
7
+ begin
8
+ @silence = true
9
+ b.call
10
+ ensure
11
+ @silence = false
12
+ end
13
+ end
14
+
15
+ def info obj
16
+ !@silence && stream && stream.write(indent(obj_to_string(obj)) + "\n")
17
+ end
18
+
19
+ def warn obj
20
+ !@silence && stream && stream.write(indent("WARN: " + obj_to_string(obj)) + "\n")
21
+ end
22
+
23
+ def error obj
24
+ !@silence && stream && stream.write(indent("ERROR: " + obj_to_string(obj)) + "\n")
25
+ end
26
+
27
+ def debug obj
28
+ if !@silence && stream
29
+ # cutting annoying BSON::ObjectId('4dec6a8d360501476d000004') stuff
30
+ stream.write(indent(obj_to_string(obj).gsub(/BSON::ObjectId\(([a-z0-9'"]+)\)/, "\\1")) + "\n")
31
+ end
32
+ end
33
+
34
+ protected
35
+ IDENTATION = " "
36
+ attr_reader :stream
37
+
38
+ def indent string
39
+ IDENTATION + string.gsub("\n", "\n" + IDENTATION)
40
+ end
41
+
42
+ def obj_to_string obj
43
+ if obj.is_a? Exception
44
+ backtrace = (obj.backtrace && obj.backtrace.sfilter(Exception.filters)) || []
45
+ %{\
46
+ #{obj.message}
47
+ #{backtrace.join("\n ")}
48
+ }
49
+ else
50
+ obj.to_s
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,24 @@
1
+ class Rad::Environment
2
+ end
3
+
4
+ %w(
5
+ _config
6
+ _logger
7
+ _files_helper
8
+ _environment
9
+ ).each{|f| require "rad/environment/#{f}"}
10
+
11
+
12
+ #
13
+ # Handy mehtods
14
+ #
15
+ class Micon::Core
16
+
17
+ def development?; mode == :development end
18
+ def production?; mode == :production end
19
+ def test?; mode == :test end
20
+
21
+ def development &block; block.call if development? end
22
+ def production &block; block.call if production? end
23
+ def test &block; block.call if test? end
24
+ end