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,21 +0,0 @@
1
- module Rad
2
- class StaticFiles
3
-
4
- def initialize(app, dir, filter = nil)
5
- @app = app
6
- @dir = File.expand_path(dir)
7
- @file_server = Rack::File.new(@dir)
8
- @filter = filter
9
- end
10
-
11
- def call(env)
12
- path = env["PATH_INFO"]
13
-
14
- if (!@filter or (@filter and @filter =~ path)) and File.exist?("#{@dir}#{path}")
15
- @file_server.call(env)
16
- else
17
- @app.call(env)
18
- end
19
- end
20
- end
21
- end
@@ -1,67 +0,0 @@
1
- module Rad
2
- class RackAdapter
3
- SERVERS = %w{thin mongrel webrick}
4
-
5
- # class Callback
6
- # def initialize app; end
7
- # def self.call env; Rad::Adapter.call env end
8
- # end
9
-
10
- class << self
11
- inject(
12
- logger: :logger,
13
- config: :config
14
- )
15
-
16
- def initialize_rack builder = nil, &block
17
- @rack_configurations ||= []
18
- if block
19
- raise "provide configuration block!" unless block
20
- @rack_configurations << block
21
- else
22
- if @rack_configurations.empty?
23
- raise "Common App not defined! Use profiles (like rad/profiles/web), define it by yourself or use your own configuration!"
24
- end
25
- @rack_configurations.each{|conf| conf.call builder}
26
- end
27
- end
28
-
29
- def parse_config
30
- app, options = Rack::Builder.parse_file 'config.ru'
31
- app
32
- end
33
-
34
- def run app, host, port
35
- handler = detect_rack_handler
36
- handler_name = handler.name.gsub(/.*::/, '')
37
- logger.info " HTTP server started on #{host}:#{port}" unless config.test?
38
- # unless handler_name =~/cgi/i
39
- handler.run app, Host: host, Port: port do |server|
40
- [:INT, :TERM].each {|sig| trap(sig){quit!(server, handler_name)}}
41
- end
42
- rescue Errno::EADDRINUSE => e
43
- logger.error "Port #{port} taken!"
44
- end
45
-
46
- def quit!(server, handler_name)
47
- ## Use thins' hard #stop! if available, otherwise just #stop
48
- server.respond_to?(:stop!) ? server.stop! : server.stop
49
- puts "\nRad stopped" unless handler_name =~/cgi/i
50
- end
51
-
52
- protected
53
- def detect_rack_handler
54
- return Rack::Handler.get('thin')
55
- SERVERS.each do |server_name|
56
- begin
57
- return Rack::Handler.get(server_name.downcase)
58
- rescue LoadError
59
- rescue NameError
60
- end
61
- end
62
- fail " Server handler (#{SERVERS.join(', ')}) not found."
63
- end
64
-
65
- end
66
- end
67
- end
@@ -1,42 +0,0 @@
1
- module Rad
2
- class Request < Rack::Request
3
- # Returns an array of acceptable media types for the response
4
- # def accept
5
- # @env['HTTP_ACCEPT'].to_s.split(',').map { |a| a.split(';')[0].strip }
6
- # end
7
- #
8
- # def secure?
9
- # (@env['HTTP_X_FORWARDED_PROTO'] || @env['rack.url_scheme']) == 'https'
10
- # end
11
-
12
-
13
- # Returns all the \subdomains as an array, so <tt>["dev", "www"]</tt> would be
14
- # returned for "dev.www.rubyonrails.org". You can specify a different <tt>tld_length</tt>,
15
- # such as 2 to catch <tt>["www"]</tt> instead of <tt>["www", "rubyonrails"]</tt>
16
- # in "www.rubyonrails.co.uk".
17
- def subdomains(tld_length = 1)
18
- return [] unless named_host?(host)
19
- parts = host.split('.')
20
- parts[0..-(tld_length+2)]
21
- end
22
-
23
-
24
- # Returns the \domain part of a \host, such as "rubyonrails.org" in "www.rubyonrails.org". You can specify
25
- # a different <tt>tld_length</tt>, such as 2 to catch rubyonrails.co.uk in "www.rubyonrails.co.uk".
26
- def domain(tld_length = 1)
27
- return nil unless named_host?(host)
28
-
29
- host.split('.').last(1 + tld_length).join('.')
30
- end
31
-
32
- def cookies_with_memory
33
- @cookies_with_memory ||= cookies_without_memory
34
- end
35
- alias_method_chain :cookies, :memory
36
-
37
- protected
38
- def named_host?(host)
39
- !(host.nil? || /\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.match(host))
40
- end
41
- end
42
- end
@@ -1,86 +0,0 @@
1
- module Rad
2
- class Response < Rack::Response
3
- include ::OpenConstructor
4
-
5
- STATUS_MESSAGES = {
6
- ok: 200,
7
- not_found: 404,
8
- failed: 500,
9
- error: 500,
10
- redirect: 301
11
- }
12
-
13
- def initialize *args
14
- super
15
- clear
16
- end
17
-
18
- def content_type= type; self["Content-Type"] = type end
19
- def content_type; self["Content-Type"] end
20
- def content_type?; !!content_type end
21
-
22
- def location; self['Location'] end
23
- def location= location; self['Location'] = location end
24
-
25
- # def to_a
26
- # [status, headers, body]
27
- # end
28
-
29
- def body_as_string
30
- if @body.is_a? String
31
- @body
32
- else
33
- @body ? @body.join : ""
34
- end
35
- end
36
-
37
- def inspect
38
- to_a2.inspect
39
- end
40
-
41
- def == other
42
- to_a2 == other
43
- end
44
-
45
- def cookies
46
- self['Set-Cookie']
47
- end
48
-
49
- def clear
50
- @status = 200
51
- @header = Rack::Utils::HeaderHash.new("Content-Type" => nil)
52
- @length = 0
53
- @body = []
54
- end
55
-
56
- def status= code_or_message
57
- @status = if code_or_message.is_a? Numeric
58
- code_or_message
59
- else
60
- self.class.decode_status_message(code_or_message) || raise("unknown http status message '#{code_or_message}'!")
61
- end
62
- end
63
-
64
- def self.decode_status_message message
65
- STATUS_MESSAGES[message]
66
- end
67
-
68
-
69
- #
70
- # Status helpers
71
- #
72
- STATUS_MESSAGES.each do |message, status_code|
73
- define_method("#{message}?"){self.status == status_code}
74
- end
75
- alias_method :success?, :ok?
76
-
77
- def redirect?
78
- super or (body and body.include?('window.location'))
79
- end
80
-
81
- protected
82
- def to_a2
83
- [status, header, body_as_string]
84
- end
85
- end
86
- end
@@ -1,19 +0,0 @@
1
- module Rad
2
- module ControllerMicelaneousHelper
3
- def reload_page
4
- params = workspace.params
5
- params.format.must_be.in 'html', 'js'
6
-
7
- keep_flash!
8
- if params.format == 'js'
9
- workspace.response.set!(
10
- status: :ok,
11
- content_type: Mime[params.format]
12
- )
13
- throw :halt_render, "window.location.reload();"
14
- else
15
- redirect_to workspace.request.env["HTTP_REFERER"]
16
- end
17
- end
18
- end
19
- end
@@ -1,22 +0,0 @@
1
- module Rad
2
- module AbstractRoutingHelper
3
- protected
4
- def special_url key
5
- return nil unless (key.is_a?(Symbol) or key.is_a?(String))
6
-
7
- if key == :back
8
- workspace.request.env["HTTP_REFERER"] || 'javascript:history.back()'
9
- elsif key == '#'
10
- '#'
11
- elsif key !~ /^[\/0-9_a-z]+$/i
12
- key
13
- else
14
- nil
15
- end
16
- end
17
-
18
- def keep_flash!
19
- rad[:flash].keep! if rad.include? :flash
20
- end
21
- end
22
- end
@@ -1,58 +0,0 @@
1
- module Rad
2
- module ControllerRoutingHelper
3
- inherit AbstractRoutingHelper
4
-
5
- module ClassMethods
6
-
7
- #
8
- # persist_params controller filters
9
- #
10
- def persist_params *args
11
- if args.empty?
12
- before :persist_params
13
- elsif args.first.is_a? Hash
14
- before :persist_params, args.first
15
- else
16
- before :persist_params, only: args.first
17
- end
18
- end
19
- end
20
-
21
- #
22
- # redirect_to
23
- #
24
- def redirect_to *args
25
- params, response = workspace.params, workspace.response
26
- params.format.must_be.in 'html', 'js'
27
-
28
- if url = special_url(args.first)
29
- args.size.must_be <= 1
30
- else
31
- url = url_for(*args)
32
- end
33
- content_type = Mime[params.format]
34
-
35
- content = if params.format == 'js'
36
- response.set!(
37
- status: :ok,
38
- content_type: content_type
39
- )
40
-
41
- "window.location = '#{url}';"
42
- else
43
- response.set!(
44
- status: :redirect,
45
- content_type: content_type
46
- )
47
- response.headers['Location'] = url
48
-
49
- %(<html><body>You are being <a href="#{url.html_escape if url}">redirected</a>.</body></html>)
50
- end
51
-
52
- # Flash need to know if we using redirect
53
- keep_flash!
54
-
55
- throw :halt_render, content
56
- end
57
- end
58
- end
@@ -1,104 +0,0 @@
1
- module Rad
2
- module ViewRoutingHelper
3
- inherit AbstractRoutingHelper
4
-
5
- #
6
- # links
7
- #
8
- # def link_to *args, &block
9
- # # parse args
10
- # content = if block
11
- # capture(&block)
12
- # else
13
- # args.shift
14
- # end
15
- #
16
- # special = nil
17
- # html_options = if args.last.is_a?(Hash)
18
- # if args[-2].is_a?(Hash)
19
- # args.pop
20
- # else
21
- # {}
22
- # end
23
- # else
24
- # args << {}
25
- # {}
26
- # end
27
- #
28
- # # build url
29
- # url = special_url(*args) || url_for(*args)
30
- #
31
- # # add javascript
32
- # add_js_link_options! url, html_options
33
- #
34
- # tag :a, content, html_options.merge(href: url)
35
- # end
36
-
37
- def link_to *args, &block
38
- # content
39
- content = if block
40
- capture(&block)
41
- else
42
- args.shift
43
- end
44
-
45
- # url, html_options
46
- if args.first.is_a? String
47
- args.size.must_be.in 1..2
48
- url, html_options = args
49
- html_options ||= {}
50
- else
51
- if url = special_url(args.first)
52
- args.size.must_be <= 2
53
- html_options = args[1] || {}
54
- else
55
- html_options = if args[-1].is_a?(Hash) and args[-1].is_a?(Hash)
56
- args.pop
57
- else
58
- {}
59
- end
60
-
61
- args << {} unless args[-1].is_a?(Hash)
62
- url = url_for(*args)
63
- end
64
- end
65
-
66
- # add javascript
67
- add_js_link_options! url, html_options
68
-
69
- tag :a, content, html_options.merge(href: url)
70
- end
71
-
72
- protected
73
- # TODO3 refactor to use data-remote, data-method, data-confirm
74
- def add_js_link_options! url, html_options
75
- confirm, remote, method = html_options.delete(:confirm), html_options.delete(:remote),
76
- html_options.delete(:method)
77
-
78
- remote ||= config.remote_link_formats!.include? url.marks.format
79
-
80
- onclick = if remote
81
- method ||= :get
82
- %{$(this).link_to({method: '#{method}', ajax: true}); return false;}
83
- elsif method
84
- %{$(this).link_to({method: '#{method}'}); return false;}
85
- else
86
- nil
87
- end
88
-
89
- # if onclick and ActionController::Base.defer_static_scripts?
90
- # html_options['class'] ||= ""
91
- # end
92
-
93
- if confirm
94
- onclick = if onclick
95
- %(if(confirm('#{confirm.js_escape}')){#{onclick}}; return false;)
96
- else
97
- %(return confirm('#{confirm.js_escape}');)
98
- end
99
- end
100
-
101
- html_options[:onclick] = onclick if onclick
102
- end
103
- end
104
- end
@@ -1,30 +0,0 @@
1
- require 'rad/html'
2
- require 'rad/router'
3
-
4
- %w(
5
- controller_micelaneous_helper
6
-
7
- router/abstract_routing_helper
8
- router/view_routing_helper
9
- router/controller_routing_helper
10
- ).each{|f| require "rad/integration/#{f}"}
11
-
12
-
13
- module Rad
14
- # View helpers
15
- [
16
- HtmlHelper,
17
- CoreRoutingHelper, ViewRoutingHelper
18
- ].each do |helper|
19
- ControllerContext.inherit helper
20
- end
21
-
22
- # Controller helpers
23
- [
24
- FlashHelper,
25
- CoreRoutingHelper, ControllerRoutingHelper,
26
- ControllerMicelaneousHelper
27
- ].each do |helper|
28
- AbstractController.inherit helper
29
- end
30
- end
@@ -1,30 +0,0 @@
1
- module Rad
2
- class Letter
3
- inject mailer: :mailer
4
-
5
- attr_accessor :from, :to, :subject, :body
6
-
7
- def initialize properties
8
- properties.each do |k, v|
9
- send "#{k}=", v
10
- end
11
- end
12
-
13
- def validate!
14
- from || raise("letter :from not specified!")
15
- to || raise("letter :to not specified!")
16
- subject || raise("letter :subject not specified!")
17
- body || raise("letter :body not specified!")
18
- end
19
-
20
- def deliver
21
- validate!
22
- mailer.deliver self
23
- end
24
-
25
- def to_hash
26
- {from: from, to: to, subject: subject, body: body}
27
- end
28
- alias_method :to_h, :to_hash
29
- end
30
- end
@@ -1,31 +0,0 @@
1
- module Rad
2
- module MailController
3
- inherit AbstractController
4
-
5
- attr_accessor :from, :to, :subject, :body
6
-
7
- module ClassMethods
8
- protected
9
- inject conveyors: :conveyors
10
-
11
- def method_missing m, *args, &block
12
- mail_controller = self.new
13
- if mail_controller.respond_to? m
14
- build_letter mail_controller, m, *args
15
- else
16
- super
17
- end
18
- end
19
-
20
- def build_letter mail_controller, m, *args
21
- conveyors.mail.must_be.present
22
- workspace = conveyors.mail.call(
23
- controller: mail_controller,
24
- method_name: m,
25
- arguments: args
26
- )
27
- workspace.letter.must_be.present
28
- end
29
- end
30
- end
31
- end
@@ -1,23 +0,0 @@
1
- module Rad
2
- class Mailer
3
- inject logger: :logger, config: :config
4
-
5
- def deliver letter
6
- mail = Mail.new letter.to_h
7
- if config.development?
8
- logger.info " Delivering mail #{letter.to_h.inspect}"
9
- else
10
- logger.info " Delivering mail '#{letter.subject}'"
11
- end
12
- mail.deliver!
13
- end
14
- end
15
- end
16
-
17
- rad.after :environment do
18
- if rad.config.development?
19
- Mail.defaults do
20
- delivery_method :test
21
- end
22
- end
23
- end
@@ -1,36 +0,0 @@
1
- module Rad
2
- module Processors
3
- class LetterBuilder < Processor
4
- def call
5
- # prepare
6
- controller = workspace.controller.must_be.present
7
- raise "The controller #{controller} must be a Rad::MailController!" unless controller.is_a? Rad::MailController
8
- action = workspace.action = workspace.method_name
9
-
10
- # call
11
- content = catch :halt_render do
12
- controller.run_callbacks :action, method: action do
13
- # call controller
14
- controller.send action, *workspace.arguments
15
- # render view
16
- controller.render action: action
17
- end
18
- end
19
-
20
- controller.body = content unless content.blank?
21
-
22
- # letter
23
- workspace.letter = ::Rad::Letter.new(
24
- from: controller.from,
25
- to: controller.to,
26
- subject: controller.subject,
27
- body: controller.body
28
- )
29
- workspace.letter.validate!
30
-
31
- next_processor.call if next_processor
32
- end
33
-
34
- end
35
- end
36
- end
data/lib/rad/mail.rb DELETED
@@ -1,15 +0,0 @@
1
- require 'mail'
2
-
3
- require 'rad/controller'
4
- require 'rad/template'
5
-
6
- %w(
7
- mailer
8
- letter
9
- mail_controller
10
- processors/letter_builder
11
- ).each{|f| require "rad/mail/#{f}"}
12
-
13
- rad.register :mailer, depends_on: :environment do
14
- Rad::Mailer.new
15
- end
@@ -1,16 +0,0 @@
1
- require 'rad/router'
2
- require 'rad/mail'
3
-
4
- #
5
- # Conveyors
6
- #
7
- module Rad::Processors
8
- rad.after :environment do
9
- rad.conveyors.mail do |mail|
10
- # mail
11
- mail.use LetterBuilder
12
-
13
- mail.build!
14
- end
15
- end
16
- end
@@ -1,5 +0,0 @@
1
- require 'rad/router'
2
- require 'rad/http'
3
- require 'rad/controller'
4
- require 'rad/html'
5
- require 'rad/integration'
@@ -1,15 +0,0 @@
1
- module Rad
2
- module Remote
3
- inherit Filters
4
-
5
- inject(
6
- workspace: :workspace,
7
- logger: :logger,
8
- config: :config
9
- )
10
-
11
- def params
12
- workspace.params
13
- end
14
- end
15
- end
@@ -1,25 +0,0 @@
1
- module Rad
2
- module Routes
3
- class Configurator
4
- inject router: :router
5
-
6
- def initialize router
7
- @router = router
8
- end
9
-
10
- def persistent_params *args
11
- args.each{|v| router.persistent_params << v}
12
- end
13
-
14
- delegate :skip, to: :router
15
-
16
- class << self
17
- inject router: :router
18
-
19
- def routes &block
20
- block.call Configurator.new(router)
21
- end
22
- end
23
- end
24
- end
25
- end