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
@@ -1,111 +1 @@
1
- module Rad
2
- class Config < SafeHash
3
- inherit ::OpenConstructor
4
-
5
- DEFAULTS = {}
6
- RUNTIME = {}
7
-
8
- def initialize
9
- super
10
-
11
- DEFAULTS.each{|k, v| self[k] = v}
12
- RUNTIME.each{|k, v| self[k] = v}
13
- end
14
-
15
- # trying to load both file_path and file_path.environment files if they are exists
16
- def merge_config! file_path
17
- # unless ::Micon.include? :config
18
- # raise("this method should be called only after config already initialized (use app.after :config do ... end)!")
19
- # end
20
- raise("config file must have .yml extension (#{file_path})!") unless file_path.end_with? '.yml'
21
- default_file_path = file_path.sub(/yml$/, "default.yml")
22
- file_path_for_current_environment = file_path.sub(/yml$/, "#{environment!}.yml")
23
- [
24
- default_file_path,
25
- file_path,
26
- file_path_for_current_environment
27
- ].each do |cfile|
28
- if ::File.exist? cfile
29
- data = ::YAML.load_file cfile
30
- if data
31
- data.must_be.a ::Hash
32
- self.deep_merge! data
33
- end
34
- end
35
- end
36
- end
37
-
38
- #
39
- # runtime_dir
40
- #
41
- def runtime_dir= runtime_dir
42
- if runtime_dir
43
- self[:runtime_dir] = ::File.expand_path(runtime_dir)
44
- else
45
- self.delete 'runtime_dir'
46
- end
47
- end
48
-
49
-
50
- #
51
- # public_dir
52
- #
53
- def public_dir
54
- runtime_dir? ? "#{runtime_dir}/public" : self[:public_dir]
55
- end
56
- def public_dir?; runtime_dir? end
57
- def public_dir!
58
- "#{runtime_dir!}/public"
59
- end
60
-
61
-
62
- #
63
- # environment
64
- #
65
- def environment= env
66
- env = env.to_s
67
- env.must_be.in %w{production development test}
68
- self['environment'] = env
69
- end
70
-
71
- def development?; environment == 'development' end
72
- def production?; environment == 'production' end
73
- def test?; environment == 'test' end
74
-
75
- def development &block; block.call if development? end
76
- def production &block; block.call if production? end
77
- def test &block; block.call if test? end
78
-
79
- #
80
- # log_path
81
- #
82
- attr_writer :log_path
83
- def log_path
84
- @log_path ||= runtime_dir? ? "#{runtime_dir}/log/#{environment}.log" : ""
85
- end
86
-
87
-
88
- #
89
- # log_level
90
- #
91
- attr_writer :log_level
92
- def log_level
93
- @log_level ||= production? ? :info : :debug
94
- end
95
-
96
-
97
- #
98
- # session
99
- #
100
- # key: 'rack.session', domain: 'foo.com', path: '/', expire_after: 2592000, secret: 'change_me'
101
- # attr_accessor :session
102
- # def session?; !!session end
103
-
104
-
105
- # class << self
106
- # attr_accessor :command_line_config
107
- #
108
- # def defered_configs; @defered_configs ||= [] end
109
- # end
110
- end
111
- end
1
+ rad.environment
@@ -1,55 +1 @@
1
- # Environment prepares and assembles your app ($LOAD_PATH, plugins and config files)
2
-
3
- #
4
- # Support
5
- #
6
- require 'rad/support'
7
-
8
- # config
9
- [
10
- 'config',
11
- ].each{|f| require "rad/environment/#{f}"}
12
-
13
- module Rad
14
- VERSION = '0.0.1'
15
- end
16
-
17
- # environment
18
- [
19
- 'logger',
20
- 'environment',
21
- 'files_helper'
22
- ].each{|f| require "rad/environment/#{f}"}
23
- Rad::Environment.inherit Rad::FilesHelper
24
-
25
-
26
- #
27
- # Runtime initialization
28
- #
29
- rad do
30
- register :config do
31
- Rad::Config.new
32
- end
33
-
34
- register :environment, depends_on: :config do
35
- environment = Rad::Environment.new
36
- logger.info " Rad #{Rad::VERSION} started in :#{config.environment!} mode (at #{Time.now.to_s})\n\n" unless config.test?
37
- environment
38
- end
39
- end
40
-
41
- #
42
- # Handy mehtods
43
- #
44
- module Rad
45
- class << self
46
- inject(
47
- config: :config,
48
- environment: :environment,
49
- logger: :logger,
50
- workspace: :workspace
51
- )
52
-
53
- # delegate :initialize_runtime, :initialize_plugin, to: Environment
54
- end
55
- end
1
+ rad.environment
@@ -5,7 +5,7 @@ gem 'polyglot', '0.3.1'
5
5
  gem 'mime-types', '1.16'
6
6
 
7
7
  # core gems
8
- gem 'activesupport', '3.0.3'
8
+ gem 'activesupport', '3.0.7'
9
9
  gem 'builder', '2.1.2'
10
10
 
11
11
  gem 'haml', '3.0.25'
@@ -14,11 +14,10 @@ gem 'tilt', '1.2.1'
14
14
  gem 'json', '1.4.6'
15
15
  gem 'addressable', '2.2.2'
16
16
  gem 'nokogiri', '1.4.4'
17
- gem 'rack', '1.2.1'
18
17
 
19
18
  gem 'dictionary', '1.0.0'
20
19
 
21
- gem 'rack', '1.2.1'
20
+ gem 'rack', '1.3.0'
22
21
  gem 'thin', '1.2.7'
23
22
 
24
23
  gem 'mail', '2.2.14'
@@ -0,0 +1,40 @@
1
+ class Rad::Html::Flash < OpenObject
2
+ attr_accessor :previous_messages, :current_messages
3
+
4
+ def initialize format, previous_messages = {}
5
+ self.current_messages, self.previous_messages = {}, previous_messages
6
+ @keep = false
7
+ end
8
+
9
+ def [] key
10
+ key = key.to_s
11
+
12
+ if keep?
13
+ previous_messages[key]
14
+ else
15
+ current_messages[key] || previous_messages[key]
16
+ end
17
+ end
18
+
19
+ def []= key, value
20
+ current_messages[key.to_s] = value.to_s
21
+ end
22
+
23
+ def keep!
24
+ @keep = true
25
+ self
26
+ end
27
+
28
+ def keep?
29
+ !!@keep
30
+ end
31
+
32
+ def messages_for_next_request
33
+ if keep?
34
+ current_messages
35
+ else
36
+ {}
37
+ end
38
+ end
39
+
40
+ end
@@ -0,0 +1,72 @@
1
+ module Rad::Html::BasicHtmlHelper
2
+ BOOLEAN_ATTRIBUTES = %w(disabled readonly multiple checked autobuffer
3
+ autoplay controls loop selected hidden scoped async
4
+ defer reversed ismap seemless muted required
5
+ autofocus novalidate formnovalidate open).to_set
6
+ BOOLEAN_ATTRIBUTES.merge(BOOLEAN_ATTRIBUTES.map {|attr| attr.to_sym })
7
+
8
+
9
+ #
10
+ # JavaScript & StyleSheets
11
+ #
12
+ def stylesheet_link_tag *stylesheets
13
+ stylesheets.collect{|ssheet|
14
+ tag :link, '', href: "#{ssheet}", media: "screen", rel: "stylesheet", type: "text/css"
15
+ }.join("\n")
16
+ end
17
+
18
+
19
+ #
20
+ # Assets
21
+ #
22
+ def image_tag src, opt = {}
23
+ opt[:src] = src
24
+ tag :img, '', opt
25
+ end
26
+
27
+
28
+ #
29
+ # Common HTML tags
30
+ #
31
+ def label_tag name, text, options = {}
32
+ tag :label, text, options.merge(for: name)
33
+ end
34
+
35
+
36
+ #
37
+ # Special
38
+ #
39
+ def tag name, content_or_options_with_block = nil, options = nil, escape = true, &block
40
+ if block_given?
41
+ options = content_or_options_with_block if content_or_options_with_block.is_a?(Hash)
42
+ content = capture(&block)
43
+ concat "<#{name}#{tag_options(options)}>#{content}</#{name}>"
44
+ else
45
+ content = content_or_options_with_block
46
+ "<#{name}#{tag_options(options)}>#{content}</#{name}>"
47
+ end
48
+ end
49
+
50
+ # Escape
51
+ def h obj; obj.to_s.html_escape end
52
+
53
+ protected
54
+
55
+ def tag_options options
56
+ return "" unless options
57
+ options.must_be.a Hash
58
+ unless options.blank?
59
+ attrs = []
60
+ options.each_pair do |key, value|
61
+ next if key == :content # used in common_interface don't delete it
62
+ if BOOLEAN_ATTRIBUTES.include?(key)
63
+ attrs << %(#{key}="#{key}") if value
64
+ elsif !value.nil?
65
+ final_value = value.is_a?(Array) ? value.join(" ") : value
66
+ attrs << %(#{key}="#{final_value}")
67
+ end
68
+ end
69
+ " #{attrs.sort * ' '}" unless attrs.empty?
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,3 @@
1
+ module Rad::Html::FlashHelper
2
+ inject flash: :flash
3
+ end
@@ -0,0 +1,114 @@
1
+ module Rad::Html::FormHelper
2
+ #
3
+ # Form
4
+ #
5
+ def form_for *args, &block
6
+ model_helper, options = build_form_model_helper_and_form_options *args
7
+
8
+ form_tag options do
9
+ block.call model_helper if block
10
+ end
11
+ end
12
+
13
+ def build_form_model_helper_and_form_options model_name, model, options = {}
14
+ model_name.must_be.a String, Symbol
15
+ return Rad::Html::ModelHelper.new(self, self, model_name, model, options), options
16
+ end
17
+
18
+ def form_tag options = {}, &block
19
+ options['method'] ||= options[:method] || 'post'
20
+ tag :form, options, &block
21
+ end
22
+
23
+
24
+ #
25
+ # Errors
26
+ #
27
+ # delegate :error_messages, :field_with_errors, to: :form_builder
28
+ def error_messages *errors
29
+ errors = errors.first if errors.size == 1 and errors.first.is_a? Array
30
+ html = errors.join("<br/>")
31
+ tag :div, html, class: :error_messages
32
+ end
33
+
34
+ def field_with_errors name, errors, options, field_html
35
+ html = tag :div, errors.join("<br/>"), class: :field_error_messages
36
+ html << tag(:span, field_html, class: :field_with_errors)
37
+ html
38
+ end
39
+
40
+
41
+ #
42
+ # Form fields
43
+ #
44
+ def check_box_tag name, checked = false, options = {}
45
+ options = {type: "checkbox", name: name, value: '1'}.update(options)
46
+ options[:checked] = "checked" if checked
47
+ tag_with_style :input, '', options
48
+ end
49
+
50
+ def field_set_tag legend = nil, options = {}, &block
51
+ content = ""
52
+ content << tag(:legend, legend) unless legend.blank?
53
+ content << capture(&block)
54
+ tag_with_style :fieldset, content, options
55
+ end
56
+
57
+ def file_field_tag name, options = {}
58
+ text_field_tag name, nil, options.update(type: "file")
59
+ end
60
+
61
+ def hidden_field_tag name, value = '', options = {}
62
+ text_field_tag(name, value, options.update(type: "hidden"))
63
+ end
64
+
65
+ def password_field_tag name, value = nil, options = {}
66
+ text_field_tag(name, value, options.update(type: "password"))
67
+ end
68
+
69
+ def radio_button_tag name, value = '1', options = {}
70
+ options = {type: "radio", name: name, value: value, checked: false}.update(options)
71
+ checked = options.delete :checked
72
+ options["checked"] = "checked" if checked
73
+ tag_with_style :input, '', options
74
+ end
75
+
76
+ def select_tag name, selected, values, options = {}
77
+ buff = "\n"
78
+ values.each do |n, v|
79
+ o = {}
80
+ o[:value] = v if v
81
+ o[:selected] = 'selected' if (v || n) == selected
82
+ buff << tag(:option, n, o)
83
+ buff << "\n"
84
+ end
85
+
86
+ tag_with_style :select, buff, {name: name}.update(options)
87
+ end
88
+
89
+ def text_field_tag name, value = '', options = {}
90
+ tag_with_style :input, '', {type: "text", name: name, value: value}.update(options)
91
+ end
92
+
93
+ def text_area_tag name, value = '', options = {}
94
+ tag_with_style :textarea, value, {name: name}.update(options)
95
+ end
96
+
97
+
98
+ #
99
+ # Other
100
+ #
101
+ def submit_tag value, options = {}
102
+ tag_with_style :input, '', {type: "submit", value: value}.update(options)
103
+ end
104
+
105
+ protected
106
+ def tag_with_style name, value, options, &block
107
+ # add special class to fix with CSS some problems with fields display
108
+ klass = options.delete(:class) || options.delete('class') || ""
109
+ klass << " #{options[:type] || options['type'] || name}_input"
110
+ options['class'] = klass
111
+
112
+ tag name, value, options, &block
113
+ end
114
+ end
@@ -0,0 +1,3 @@
1
+ module Rad::Html::HtmlHelper
2
+ inherit Rad::Html::BasicHtmlHelper, Rad::Html::FormHelper, Rad::Html::JavascriptHelper, Rad::Html::FlashHelper
3
+ end
@@ -0,0 +1,27 @@
1
+ module Rad::Html::JavascriptHelper
2
+ def javascript_include_tag *scripts
3
+ scripts.collect{|script|
4
+ tag :script, '', src: "#{script}", type: "text/javascript"
5
+ }.join("\n")
6
+ end
7
+
8
+ def javascript_tag script = nil, options = {}, &block
9
+ script = capture &block if block
10
+ if options[:defer] or (!options.include?(:defer) and Rad::Html::JavascriptHelper.defer)
11
+ script = "rad.defer(function(){#{script}});"
12
+ end
13
+ html = tag :script, script, {type: "text/javascript"}
14
+ block ? concat(html) : html
15
+ end
16
+
17
+ def call_deferred_js
18
+ javascript_tag 'rad.callDeferred();', defer: false
19
+ end
20
+
21
+ # Escape
22
+ def js obj; obj.to_s.js_escape end
23
+
24
+
25
+ def self.defer; @defer ||= true end
26
+ def self.defer= value; @defer = value end
27
+ end
@@ -0,0 +1,143 @@
1
+ class Rad::Html::ModelHelper
2
+ attr_accessor :template, :model_name, :model, :options, :form_helper
3
+
4
+ def initialize template, form_helper, model_name, model, options
5
+ self.template, self.form_helper, self.model_name, self.model, self.options = template, form_helper, model_name, model, options
6
+ end
7
+
8
+
9
+ #
10
+ # Helpers
11
+ #
12
+ def check_box name, options = {}
13
+ render_attribute name, options do |fname, value, o|
14
+ html = form_helper.hidden_field_tag(fname, '0') + "\n"
15
+ html += form_helper.check_box_tag fname, !!value, o
16
+ html
17
+ end
18
+ end
19
+
20
+ def file_field name, options = {}
21
+ render_attribute name, options do |fname, value, o|
22
+ form_helper.file_field_tag fname, o
23
+ end
24
+ end
25
+
26
+ def hidden_field name, options = {}
27
+ render_attribute name, options do |fname, value, o|
28
+ form_helper.hidden_field_tag fname, value, o
29
+ end
30
+ end
31
+
32
+ def password_field name, options = {}
33
+ render_attribute name, options do |fname, value, o|
34
+ form_helper.password_field_tag fname, nil, o
35
+ end
36
+ end
37
+
38
+ def radio_button name, value = 1, options = {}
39
+ render_attribute name, options do |fname, v, o|
40
+ o[:checked] = value == v
41
+ form_helper.radio_button_tag fname, value, o
42
+ end
43
+ end
44
+
45
+ def submit value, options = {}
46
+ form_helper.submit_tag value, options
47
+ end
48
+
49
+ def text_field name, options = {}
50
+ render_attribute name, options do |fname, value, o|
51
+ form_helper.text_field_tag fname, value, o
52
+ end
53
+ end
54
+
55
+ def text_area name, options = {}
56
+ render_attribute name, options do |fname, value, o|
57
+ form_helper.text_area_tag fname, value, o
58
+ end
59
+ end
60
+
61
+ def select name, values, options = {}
62
+ render_attribute name, options do |fname, value, o|
63
+ form_helper.select_tag fname, value, values, o
64
+ end
65
+ end
66
+
67
+ def error_messages
68
+ merrors = errors[:base]
69
+ form_helper.error_messages merrors.to_a unless merrors.blank?
70
+ end
71
+
72
+
73
+ protected
74
+ def method_missing m, *args, &b
75
+ form_helper.send m, *args, &b
76
+ end
77
+
78
+ def render_attribute name, options, &block
79
+ name.must_be.a Symbol
80
+ ferrors = errors_for(name)
81
+
82
+ options = insert_human_readable_label name, options
83
+
84
+ value = value_of name
85
+ field_name = field_name_for name, value
86
+
87
+ if form_helper.respond_to? :field_with_errors
88
+ field_html = block.call field_name, value, options
89
+ unless ferrors.blank?
90
+ form_helper.field_with_errors name, ferrors, options, field_html
91
+ else
92
+ field_html
93
+ end
94
+ else
95
+ options[:errors] = ferrors
96
+ block.call field_name, value, options
97
+ end
98
+ end
99
+
100
+ def errors
101
+ unless @errors
102
+ @errors = {}
103
+ (
104
+ (model.respond_to?(:errors) && model.errors) ||
105
+ (model.respond_to?(:[]) && (model['errors'] || model[:errors])) ||
106
+ {}
107
+ ).each do |k, v|
108
+ @errors[k.to_sym] = Array.wrap(v)
109
+ end
110
+ end
111
+ @errors
112
+ end
113
+
114
+ def errors_for name
115
+ name.must_be.a Symbol
116
+ errors[name]
117
+ end
118
+
119
+ def field_name_for name, value
120
+ if value.is_a? Array
121
+ "#{model_name}[#{name}][]"
122
+ else
123
+ "#{model_name}[#{name}]"
124
+ end
125
+ end
126
+
127
+ def value_of name
128
+ if model.respond_to? name
129
+ model.send name
130
+ elsif model.respond_to? :[]
131
+ model[name.to_sym] || model[name.to_s]
132
+ else
133
+ raise "Model not respond to :#{name} nor to :[]!"
134
+ end
135
+ end
136
+
137
+ def insert_human_readable_label name, options
138
+ unless options.include?(:label)
139
+ options[:label] = model.t(name) if model.respond_to? :t
140
+ end
141
+ options
142
+ end
143
+ end
@@ -0,0 +1,15 @@
1
+ class Rad::Html
2
+ attr_accessor :remote_link_formats
3
+ require_attr :remote_link_formats
4
+ end
5
+
6
+ %w(
7
+ _flash
8
+
9
+ _helpers/basic_html_helper
10
+ _helpers/form_helper
11
+ _helpers/model_helper
12
+ _helpers/javascript_helper
13
+ _helpers/flash_helper
14
+ _helpers/html_helper
15
+ ).each{|f| require "rad/html/#{f}"}
@@ -1,26 +1,25 @@
1
- module Rad
2
- module Processors
3
- class PrepareFlash < Processor
1
+ rad.html
4
2
 
5
- def call
6
- workspace.request.must_be.present
7
- workspace.params.must_be.defined
8
-
9
- previous_messages = workspace.request.session.delete 'flash'
10
- if previous_messages.present?
11
- previous_messages = JSON.load previous_messages
12
- rad[:flash] = Rad::Flash.new workspace.params.format, previous_messages
13
- end
14
-
15
- next_processor.call
16
-
17
- if rad.include? :flash
18
- flash = rad[:flash]
19
- messages = flash.messages_for_next_request
20
- workspace.request.must_be.present
21
- workspace.request.session['flash'] = messages.to_json unless messages.empty?
22
- end
23
- end
3
+
4
+ class PrepareFlash < Rad::Conveyors::Processor
5
+
6
+ def call
7
+ workspace.request.must_be.present
8
+ workspace.params.must_be.defined
9
+
10
+ previous_messages = workspace.request.session.delete 'flash'
11
+ if previous_messages.present?
12
+ previous_messages = JSON.load previous_messages
13
+ rad[:flash] = Rad::Html::Flash.new workspace.params.format, previous_messages
14
+ end
15
+
16
+ next_processor.call
17
+
18
+ if rad.include? :flash
19
+ flash = rad[:flash]
20
+ messages = flash.messages_for_next_request
21
+ workspace.request.must_be.present
22
+ workspace.request.session['flash'] = messages.to_json unless messages.empty?
24
23
  end
25
24
  end
26
- end
25
+ end