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,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