merb 0.5.3 → 0.9.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (294) hide show
  1. data/LICENSE +0 -20
  2. data/README +0 -277
  3. data/Rakefile +80 -199
  4. data/TODO +0 -3
  5. metadata +19 -438
  6. data/SVN_REVISION +0 -1
  7. data/app_generators/merb/USAGE +0 -5
  8. data/app_generators/merb/merb_generator.rb +0 -108
  9. data/app_generators/merb/templates/Rakefile +0 -124
  10. data/app_generators/merb/templates/app/controllers/application.rb +0 -3
  11. data/app_generators/merb/templates/app/controllers/exceptions.rb +0 -13
  12. data/app_generators/merb/templates/app/helpers/global_helper.rb +0 -5
  13. data/app_generators/merb/templates/app/mailers/views/layout/application.html.erb +0 -1
  14. data/app_generators/merb/templates/app/mailers/views/layout/application.text.erb +0 -1
  15. data/app_generators/merb/templates/app/parts/views/layout/application.html.erb +0 -1
  16. data/app_generators/merb/templates/app/views/exceptions/internal_server_error.html.erb +0 -216
  17. data/app_generators/merb/templates/app/views/exceptions/not_acceptable.html.erb +0 -38
  18. data/app_generators/merb/templates/app/views/exceptions/not_found.html.erb +0 -40
  19. data/app_generators/merb/templates/app/views/layout/application.html.erb +0 -11
  20. data/app_generators/merb/templates/config/boot.rb +0 -11
  21. data/app_generators/merb/templates/config/dependencies.rb +0 -41
  22. data/app_generators/merb/templates/config/environments/development.rb +0 -1
  23. data/app_generators/merb/templates/config/environments/production.rb +0 -1
  24. data/app_generators/merb/templates/config/environments/test.rb +0 -1
  25. data/app_generators/merb/templates/config/merb.yml +0 -82
  26. data/app_generators/merb/templates/config/merb_init.rb +0 -17
  27. data/app_generators/merb/templates/config/plugins.yml +0 -1
  28. data/app_generators/merb/templates/config/router.rb +0 -35
  29. data/app_generators/merb/templates/config/upload.conf +0 -0
  30. data/app_generators/merb/templates/public/images/merb.jpg +0 -0
  31. data/app_generators/merb/templates/public/merb.fcgi +0 -6
  32. data/app_generators/merb/templates/public/stylesheets/master.css +0 -119
  33. data/app_generators/merb/templates/script/destroy +0 -32
  34. data/app_generators/merb/templates/script/generate +0 -32
  35. data/app_generators/merb/templates/script/stop_merb +0 -13
  36. data/app_generators/merb/templates/script/win_script.cmd +0 -1
  37. data/app_generators/merb/templates/spec/spec.opts +0 -6
  38. data/app_generators/merb/templates/spec/spec_helper.rb +0 -15
  39. data/app_generators/merb/templates/test/test_helper.rb +0 -14
  40. data/app_generators/merb_plugin/USAGE +0 -5
  41. data/app_generators/merb_plugin/merb_plugin_generator.rb +0 -68
  42. data/app_generators/merb_plugin/templates/LICENSE +0 -20
  43. data/app_generators/merb_plugin/templates/README +0 -4
  44. data/app_generators/merb_plugin/templates/Rakefile +0 -35
  45. data/app_generators/merb_plugin/templates/TODO +0 -5
  46. data/app_generators/merb_plugin/templates/merbtasks.rb +0 -6
  47. data/app_generators/merb_plugin/templates/sampleplugin.rb +0 -10
  48. data/app_generators/merb_plugin/templates/sampleplugin_spec.rb +0 -7
  49. data/app_generators/merb_plugin/templates/spec_helper.rb +0 -2
  50. data/bin/merb +0 -4
  51. data/lib/autotest/discover.rb +0 -3
  52. data/lib/autotest/merb_rspec.rb +0 -80
  53. data/lib/merb.rb +0 -188
  54. data/lib/merb/abstract_controller.rb +0 -399
  55. data/lib/merb/assets.rb +0 -160
  56. data/lib/merb/assets.rb.orig +0 -119
  57. data/lib/merb/boot_loader.rb +0 -286
  58. data/lib/merb/boot_loader.rb.orig +0 -235
  59. data/lib/merb/caching.rb +0 -5
  60. data/lib/merb/caching/action_cache.rb +0 -92
  61. data/lib/merb/caching/fragment_cache.rb +0 -39
  62. data/lib/merb/caching/store/file_cache.rb +0 -90
  63. data/lib/merb/caching/store/memory_cache.rb +0 -85
  64. data/lib/merb/config.rb +0 -290
  65. data/lib/merb/constants.rb +0 -50
  66. data/lib/merb/controller.rb +0 -220
  67. data/lib/merb/cookies.rb +0 -95
  68. data/lib/merb/core_ext.rb +0 -15
  69. data/lib/merb/core_ext/array.rb +0 -0
  70. data/lib/merb/core_ext/class.rb +0 -180
  71. data/lib/merb/core_ext/enumerable.rb +0 -49
  72. data/lib/merb/core_ext/get_args.rb +0 -76
  73. data/lib/merb/core_ext/hash.rb +0 -306
  74. data/lib/merb/core_ext/inflections.rb +0 -112
  75. data/lib/merb/core_ext/inflector.rb +0 -275
  76. data/lib/merb/core_ext/kernel.rb +0 -242
  77. data/lib/merb/core_ext/mash.rb +0 -88
  78. data/lib/merb/core_ext/module.rb +0 -67
  79. data/lib/merb/core_ext/numeric.rb +0 -72
  80. data/lib/merb/core_ext/object.rb +0 -183
  81. data/lib/merb/core_ext/string.rb +0 -53
  82. data/lib/merb/core_ext/symbol.rb +0 -6
  83. data/lib/merb/dispatcher.rb +0 -109
  84. data/lib/merb/drb_server.rb +0 -19
  85. data/lib/merb/erubis_ext.rb +0 -10
  86. data/lib/merb/exceptions.rb +0 -192
  87. data/lib/merb/generators/merb_app/merb_app.rb +0 -22
  88. data/lib/merb/generators/merb_generator_helpers.rb +0 -318
  89. data/lib/merb/generators/merb_plugin.rb +0 -22
  90. data/lib/merb/logger.rb +0 -78
  91. data/lib/merb/mail_controller.rb +0 -268
  92. data/lib/merb/mailer.rb +0 -87
  93. data/lib/merb/mixins/basic_authentication.rb +0 -35
  94. data/lib/merb/mixins/controller.rb +0 -160
  95. data/lib/merb/mixins/erubis_capture.rb +0 -68
  96. data/lib/merb/mixins/general_controller.rb +0 -253
  97. data/lib/merb/mixins/inline_partial.rb +0 -32
  98. data/lib/merb/mixins/render.rb +0 -465
  99. data/lib/merb/mixins/responder.rb +0 -449
  100. data/lib/merb/mixins/view_context.rb +0 -558
  101. data/lib/merb/mixins/web_controller.rb +0 -36
  102. data/lib/merb/mongrel_handler.rb +0 -168
  103. data/lib/merb/part_controller.rb +0 -29
  104. data/lib/merb/plugins.rb +0 -16
  105. data/lib/merb/rack_adapter.rb +0 -37
  106. data/lib/merb/request.rb +0 -465
  107. data/lib/merb/router.rb +0 -646
  108. data/lib/merb/server.rb +0 -169
  109. data/lib/merb/session.rb +0 -23
  110. data/lib/merb/session/cookie_store.rb +0 -118
  111. data/lib/merb/session/mem_cache_session.rb +0 -131
  112. data/lib/merb/session/memory_session.rb +0 -176
  113. data/lib/merb/template.rb +0 -37
  114. data/lib/merb/template/erubis.rb +0 -68
  115. data/lib/merb/template/haml.rb +0 -87
  116. data/lib/merb/template/markaby.rb +0 -59
  117. data/lib/merb/template/xml_builder.rb +0 -50
  118. data/lib/merb/test/fake_request.rb +0 -74
  119. data/lib/merb/test/helper.rb +0 -260
  120. data/lib/merb/test/hpricot.rb +0 -136
  121. data/lib/merb/test/multipart.rb +0 -66
  122. data/lib/merb/test/rspec.rb +0 -18
  123. data/lib/merb/test/rspec_matchers/controller_matchers.rb +0 -117
  124. data/lib/merb/test/rspec_matchers/markup_matchers.rb +0 -98
  125. data/lib/merb/upload_handler.rb +0 -80
  126. data/lib/merb/upload_progress.rb +0 -48
  127. data/lib/merb/version.rb +0 -49
  128. data/lib/merb/view_context.rb +0 -79
  129. data/lib/tasks.rb +0 -7
  130. data/lib/tasks/merb.rake +0 -54
  131. data/merb_default_generators/model/USAGE +0 -0
  132. data/merb_default_generators/model/model_generator.rb +0 -16
  133. data/merb_default_generators/model/templates/new_model_template.erb +0 -5
  134. data/merb_default_generators/resource_controller/USAGE +0 -0
  135. data/merb_default_generators/resource_controller/resource_controller_generator.rb +0 -26
  136. data/merb_default_generators/resource_controller/templates/controller.rb +0 -30
  137. data/merb_default_generators/resource_controller/templates/edit.html.erb +0 -1
  138. data/merb_default_generators/resource_controller/templates/helper.rb +0 -5
  139. data/merb_default_generators/resource_controller/templates/index.html.erb +0 -1
  140. data/merb_default_generators/resource_controller/templates/new.html.erb +0 -1
  141. data/merb_default_generators/resource_controller/templates/show.html.erb +0 -1
  142. data/merb_generators/controller/USAGE +0 -5
  143. data/merb_generators/controller/controller_generator.rb +0 -16
  144. data/merb_generators/controller/templates/controller.rb +0 -8
  145. data/merb_generators/controller/templates/helper.rb +0 -5
  146. data/merb_generators/controller/templates/index.html.erb +0 -3
  147. data/merb_generators/part_controller/USAGE +0 -5
  148. data/merb_generators/part_controller/part_controller_generator.rb +0 -27
  149. data/merb_generators/part_controller/templates/controller.rb +0 -8
  150. data/merb_generators/part_controller/templates/helper.rb +0 -5
  151. data/merb_generators/part_controller/templates/index.html.erb +0 -3
  152. data/merb_generators/resource/USAGE +0 -0
  153. data/merb_generators/resource/resource_generator.rb +0 -67
  154. data/rspec_generators/merb_controller_test/merb_controller_test_generator.rb +0 -67
  155. data/rspec_generators/merb_controller_test/templates/controller_spec.rb +0 -8
  156. data/rspec_generators/merb_controller_test/templates/edit_spec.rb +0 -12
  157. data/rspec_generators/merb_controller_test/templates/helper_spec.rb +0 -5
  158. data/rspec_generators/merb_controller_test/templates/index_spec.rb +0 -12
  159. data/rspec_generators/merb_controller_test/templates/new_spec.rb +0 -12
  160. data/rspec_generators/merb_controller_test/templates/show_spec.rb +0 -5
  161. data/rspec_generators/merb_model_test/merb_model_test_generator.rb +0 -26
  162. data/rspec_generators/merb_model_test/templates/model_spec_template.erb +0 -7
  163. data/script/destroy +0 -14
  164. data/script/generate +0 -14
  165. data/spec/fixtures/config/environments/environment_config_test.yml +0 -1
  166. data/spec/fixtures/config/merb.yml +0 -18
  167. data/spec/fixtures/controllers/dispatch_spec_controllers.rb +0 -235
  168. data/spec/fixtures/controllers/render_spec_controllers.rb +0 -184
  169. data/spec/fixtures/foo.rb +0 -3
  170. data/spec/fixtures/mailers/views/layout/application.html.erb +0 -3
  171. data/spec/fixtures/mailers/views/layout/application.text.erb +0 -3
  172. data/spec/fixtures/mailers/views/test_mail_controller/eighth.html.erb +0 -1
  173. data/spec/fixtures/mailers/views/test_mail_controller/eighth.text.erb +0 -1
  174. data/spec/fixtures/mailers/views/test_mail_controller/first.html.erb +0 -1
  175. data/spec/fixtures/mailers/views/test_mail_controller/first.text.erb +0 -1
  176. data/spec/fixtures/mailers/views/test_mail_controller/ninth.html.erb +0 -1
  177. data/spec/fixtures/mailers/views/test_mail_controller/ninth.text.erb +0 -1
  178. data/spec/fixtures/mailers/views/test_mail_controller/second.text.erb +0 -1
  179. data/spec/fixtures/mailers/views/test_mail_controller/third.html.erb +0 -1
  180. data/spec/fixtures/models/router_spec_models.rb +0 -30
  181. data/spec/fixtures/parts/views/layout/todo_part.html.erb +0 -3
  182. data/spec/fixtures/parts/views/layout/todo_part.xml.erb +0 -3
  183. data/spec/fixtures/parts/views/todo_part/formatted_output.html.erb +0 -1
  184. data/spec/fixtures/parts/views/todo_part/formatted_output.js.erb +0 -1
  185. data/spec/fixtures/parts/views/todo_part/formatted_output.xml.erb +0 -1
  186. data/spec/fixtures/parts/views/todo_part/list.html.erb +0 -3
  187. data/spec/fixtures/sample.txt +0 -1
  188. data/spec/fixtures/views/erubis.html.erb +0 -1
  189. data/spec/fixtures/views/examples/_erubis.html.erb +0 -1
  190. data/spec/fixtures/views/examples/_haml.html.haml +0 -1
  191. data/spec/fixtures/views/examples/_markaby.html.mab +0 -1
  192. data/spec/fixtures/views/examples/_throw_content.html.erb +0 -6
  193. data/spec/fixtures/views/examples/hello.xml.builder +0 -1
  194. data/spec/fixtures/views/examples/js.js.erb +0 -1
  195. data/spec/fixtures/views/examples/template_catch_content.html.erb +0 -15
  196. data/spec/fixtures/views/examples/template_catch_content_from_partial.html.erb +0 -6
  197. data/spec/fixtures/views/examples/template_throw_content.html.erb +0 -10
  198. data/spec/fixtures/views/examples/template_throw_content_without_block.html.erb +0 -3
  199. data/spec/fixtures/views/exceptions/admin_access_required.html.erb +0 -1
  200. data/spec/fixtures/views/extension_template_controller/_nested_js.js.erb +0 -1
  201. data/spec/fixtures/views/extension_template_controller/_nested_xml.xml.erb +0 -1
  202. data/spec/fixtures/views/extension_template_controller/_render_partial_multiple_times.html.erb +0 -1
  203. data/spec/fixtures/views/extension_template_controller/erubis_templates.html.erb +0 -1
  204. data/spec/fixtures/views/extension_template_controller/erubis_templates.js.erb +0 -1
  205. data/spec/fixtures/views/extension_template_controller/erubis_templates.rhtml +0 -1
  206. data/spec/fixtures/views/extension_template_controller/erubis_templates.xml.erb +0 -1
  207. data/spec/fixtures/views/extension_template_controller/haml_index.html.haml +0 -0
  208. data/spec/fixtures/views/extension_template_controller/haml_templates.html.haml +0 -1
  209. data/spec/fixtures/views/extension_template_controller/haml_templates.js.haml +0 -1
  210. data/spec/fixtures/views/extension_template_controller/haml_templates.xml.haml +0 -1
  211. data/spec/fixtures/views/extension_template_controller/index.html.erb +0 -0
  212. data/spec/fixtures/views/extension_template_controller/markaby_index.html.mab +0 -0
  213. data/spec/fixtures/views/extension_template_controller/markaby_templates.html.mab +0 -1
  214. data/spec/fixtures/views/extension_template_controller/markaby_templates.js.mab +0 -1
  215. data/spec/fixtures/views/extension_template_controller/markaby_templates.xml.mab +0 -1
  216. data/spec/fixtures/views/extension_template_controller/render_multiple_partials.html.erb +0 -4
  217. data/spec/fixtures/views/extension_template_controller/render_nested_js.js.erb +0 -1
  218. data/spec/fixtures/views/extension_template_controller/render_nested_xml.xml.erb +0 -1
  219. data/spec/fixtures/views/haml.html.haml +0 -1
  220. data/spec/fixtures/views/haml.xml.haml +0 -2
  221. data/spec/fixtures/views/layout/application.html.erb +0 -1
  222. data/spec/fixtures/views/layout/application.xml.erb +0 -1
  223. data/spec/fixtures/views/layout/nested/example.html.erb +0 -1
  224. data/spec/fixtures/views/markaby.html.mab +0 -1
  225. data/spec/fixtures/views/nested/example/test.html.erb +0 -1
  226. data/spec/fixtures/views/partials/_erubis.html.erb +0 -1
  227. data/spec/fixtures/views/partials/_erubis_collection.html.erb +0 -1
  228. data/spec/fixtures/views/partials/_erubis_collection_with_locals.html.erb +0 -1
  229. data/spec/fixtures/views/partials/_erubis_new.html.erb +0 -1
  230. data/spec/fixtures/views/partials/_haml.html.haml +0 -1
  231. data/spec/fixtures/views/partials/_haml_collection.html.haml +0 -1
  232. data/spec/fixtures/views/partials/_haml_collection_with_locals.html.haml +0 -1
  233. data/spec/fixtures/views/partials/_haml_new.html.haml +0 -1
  234. data/spec/fixtures/views/partials/_markaby.html.mab +0 -1
  235. data/spec/fixtures/views/partials/_markaby_collection.html.mab +0 -1
  236. data/spec/fixtures/views/partials/_markaby_collection_with_locals.html.mab +0 -1
  237. data/spec/fixtures/views/partials/_markaby_new.html.mab +0 -1
  238. data/spec/fixtures/views/render_object_controller/render_object_with_template.html.erb +0 -1
  239. data/spec/fixtures/views/render_object_controller/render_object_with_template.js.erb +0 -1
  240. data/spec/fixtures/views/render_object_controller/render_object_with_template.xml.erb +0 -1
  241. data/spec/fixtures/views/template_views/interface__buffer_erubis.html.erb +0 -4
  242. data/spec/fixtures/views/template_views/interface__buffer_haml.html.haml +0 -7
  243. data/spec/fixtures/views/template_views/interface__buffer_markaby.html.mab +0 -7
  244. data/spec/fixtures/views/template_views/interface_capture_erubis.html.erb +0 -15
  245. data/spec/fixtures/views/template_views/interface_capture_haml.html.haml +0 -15
  246. data/spec/fixtures/views/template_views/interface_capture_markaby.html.mab +0 -4
  247. data/spec/fixtures/views/template_views/interface_concat_erubis.html.erb +0 -12
  248. data/spec/fixtures/views/template_views/interface_concat_haml.html.haml +0 -11
  249. data/spec/fixtures/views/template_views/interface_concat_markaby.html.mab +0 -14
  250. data/spec/fixtures/views/test.dir/the_template.html.erb +0 -1
  251. data/spec/merb/abstract_controller_spec.rb +0 -38
  252. data/spec/merb/assets_spec.rb +0 -207
  253. data/spec/merb/caching_spec.rb +0 -102
  254. data/spec/merb/config_spec.rb +0 -29
  255. data/spec/merb/controller_filters_spec.rb +0 -253
  256. data/spec/merb/controller_spec.rb +0 -126
  257. data/spec/merb/cookie_store_spec.rb +0 -72
  258. data/spec/merb/cookies_spec.rb +0 -96
  259. data/spec/merb/core_ext/class_spec.rb +0 -97
  260. data/spec/merb/core_ext/enumerable_spec.rb +0 -27
  261. data/spec/merb/core_ext/hash_spec.rb +0 -251
  262. data/spec/merb/core_ext/inflector_spec.rb +0 -34
  263. data/spec/merb/core_ext/kernel_spec.rb +0 -25
  264. data/spec/merb/core_ext/numeric_spec.rb +0 -26
  265. data/spec/merb/core_ext/object_spec.rb +0 -47
  266. data/spec/merb/core_ext/string_spec.rb +0 -22
  267. data/spec/merb/core_ext/symbol_spec.rb +0 -7
  268. data/spec/merb/dependency_spec.rb +0 -22
  269. data/spec/merb/dispatch_spec.rb +0 -528
  270. data/spec/merb/fake_request_spec.rb +0 -80
  271. data/spec/merb/generator_spec.rb +0 -248
  272. data/spec/merb/handler_spec.rb +0 -169
  273. data/spec/merb/mail_controller_spec.rb +0 -177
  274. data/spec/merb/mailer_spec.rb +0 -87
  275. data/spec/merb/multipart_spec.rb +0 -50
  276. data/spec/merb/part_controller_spec.rb +0 -124
  277. data/spec/merb/plugins_spec.rb +0 -80
  278. data/spec/merb/render_spec.rb +0 -469
  279. data/spec/merb/request_spec.rb +0 -287
  280. data/spec/merb/responder_spec.rb +0 -562
  281. data/spec/merb/router_spec.rb +0 -900
  282. data/spec/merb/server_spec.rb +0 -19
  283. data/spec/merb/template_spec.rb +0 -41
  284. data/spec/merb/upload_handler_spec.rb +0 -108
  285. data/spec/merb/version_spec.rb +0 -33
  286. data/spec/merb/view_context_spec.rb +0 -366
  287. data/spec/spec_generator_helper.rb +0 -34
  288. data/spec/spec_helper.rb +0 -101
  289. data/spec/spec_helpers/url_shared_behaviour.rb +0 -112
  290. data/test_unit_generators/merb_controller_test/merb_controller_test_generator.rb +0 -53
  291. data/test_unit_generators/merb_controller_test/templates/functional_test.rb +0 -17
  292. data/test_unit_generators/merb_controller_test/templates/helper_test.rb +0 -9
  293. data/test_unit_generators/merb_model_test/merb_model_test_generator.rb +0 -29
  294. data/test_unit_generators/merb_model_test/templates/model_test_unit_template.erb +0 -9
data/lib/merb/caching.rb DELETED
@@ -1,5 +0,0 @@
1
- corelib = Merb.framework_root + '/merb/caching'
2
-
3
- %w[ action_cache
4
- fragment_cache
5
- ].each {|fn| require File.join(corelib, fn)}
@@ -1,92 +0,0 @@
1
- module Merb
2
- module Caching
3
-
4
-
5
- # Action caching provides the ability to cache the output of individual actions. This output will be stored using fragment caching
6
- # (Merb::Caching::Fragment). The output is stored based on a multipart key, which is comprised of the following pieces, in this order:
7
- # * controller
8
- # * action
9
- # * parameters (represented as a list of parameter name/value pairs, sorted by name)
10
- #
11
- #
12
- # === Examples
13
- #
14
- # class UserController < Merb::Controller
15
- # cache_action(:show, :index)
16
- #
17
- # def show
18
- # ... do some work to show a user ...
19
- # end
20
- #
21
- # def index
22
- # ... get the list of users ...
23
- # end
24
- # end
25
- #
26
- # In this case, we would expect show to take an :id parameter, and index to take no parameters, so the fragment stored for this action
27
- # will be represented thus:
28
- # get :show, :id => 25 => [:user_controller, :show, :id, 25]
29
- # get :index => [:user_controller, :index]
30
- #
31
- # Action caches are expired based on the action alone (TODO: We need to modify expire action to allow expiration for specific parameter values).
32
- # expire_action(:show) => This will expire all cached show actions (i.e. All users, in this case)
33
-
34
- module Actions
35
-
36
- def self.included(base) # :nodoc:
37
-
38
- base.extend(ClassMethods)
39
- end
40
-
41
- module ClassMethods
42
-
43
- # Cache the specific actions. If those actions take parameters, then those parameters will be considered part of the key.
44
- #
45
- def cache_action(*actions)
46
- before :_get_action_fragment, :only => actions
47
- after :_store_action_fragment, :only => actions
48
- end
49
-
50
- end
51
-
52
-
53
- # Expire all cached content for the specific action, or array of actions.
54
- def expire_action(*actions)
55
- return unless _caching_enabled?
56
- for action in [actions].flatten
57
- ::Merb::Caching::Fragment.expire_fragment(params_key(:action => action))
58
- end
59
- end
60
-
61
-
62
- private
63
-
64
- def _caching_enabled?
65
- ::Merb::Config[:cache_templates]
66
- end
67
-
68
- def _get_action_fragment
69
- return unless _caching_enabled?
70
- if fragment = ::Merb::Caching::Fragment.get(params_key)
71
- throw :halt, fragment
72
- end
73
- end
74
-
75
- def _store_action_fragment
76
- return unless _caching_enabled?
77
- ::Merb::Caching::Fragment.put(params_key, body)
78
- end
79
-
80
-
81
- def params_key(overrides = {})
82
- key = []
83
- additional_parameters = params.clone.merge(overrides)
84
- key << additional_parameters.delete(:controller).to_s.snake_case
85
- key << additional_parameters.delete(:action).to_s.snake_case
86
- key << additional_parameters.keys.sort{|a,b| a.to_s <=> b.to_s}.collect{|k| [k.to_s, additional_parameters[k].to_s]}.flatten
87
- key.flatten
88
- end
89
-
90
- end
91
- end
92
- end
@@ -1,39 +0,0 @@
1
- module Merb
2
- module Caching
3
- module Fragment
4
- class << self
5
- def cache
6
- @cache ||= determine_cache_store
7
- end
8
-
9
- def clear
10
- cache.clear
11
- @cache = nil
12
- end
13
-
14
- def get(name)
15
- cache.get(name)
16
- end
17
-
18
- def put(name, content = nil)
19
- cache.put(name, content)
20
- content
21
- end
22
-
23
- def expire_fragment(name)
24
- cache.delete(name)
25
- end
26
-
27
- def determine_cache_store
28
- if ::Merb::Config[:cache_store].to_s == "file"
29
- require 'merb/caching/store/file_cache'
30
- ::Merb::Caching::Store::FileCache.new
31
- else
32
- require 'merb/caching/store/memory_cache'
33
- ::Merb::Caching::Store::MemoryCache.new
34
- end
35
- end
36
- end
37
- end
38
- end
39
- end
@@ -1,90 +0,0 @@
1
- require 'uri'
2
- require 'fileutils'
3
- require 'tmpdir'
4
-
5
- module Merb
6
- module Caching
7
- module Store
8
-
9
- class FileCache
10
-
11
- def initialize(name = "cache", keepalive = nil)
12
- @path = File.join(Merb.root, name)
13
- @keepalive = keepalive
14
- end
15
-
16
- def []=(key,val)
17
- key = escape_filenames([key].flatten)
18
- FileUtils.mkdir_p(File.join(@path, *key[0..-2]), :mode => 0700)
19
- fn = File.join(@path, *key )
20
- encode_file(fn, val)
21
- end
22
- alias :put :[]=
23
- alias :write :[]=
24
-
25
- def [](key)
26
- key = escape_filenames([key].flatten)
27
- fn = File.join(@path, *key )
28
- return nil unless File.exists?(fn)
29
- decode_file(fn)
30
- end
31
- alias :get :[]
32
- alias_method :read, :[]
33
-
34
- def delete(key)
35
- key = escape_filenames([key].flatten)
36
- f = File.join(@path, *key)
37
- FileUtils.rm_rf(f)
38
- end
39
-
40
- def gc!
41
- return unless @keepalive
42
-
43
- now = Time.now
44
- all.each do |fn|
45
- expire_time = File.stat(fn).atime + @keepalive
46
- File.delete(fn) if now > expire_time
47
- end
48
- end
49
-
50
- def clear
51
- all.each{|file| delete(File.basename(file)) }
52
- end
53
-
54
- private
55
-
56
- def decode_file(fn)
57
- val = nil
58
- File.open(fn,"r+b") do |f|
59
- f.flock(File::LOCK_EX)
60
- val = Marshal.load( f.read )
61
- f.flock(File::LOCK_UN)
62
- end
63
- return val
64
- end
65
-
66
- def encode_file(fn, value)
67
- File.open(fn, "wb") do |f|
68
- f.flock(File::LOCK_EX)
69
- f.chmod(0600)
70
- f.write(Marshal.dump(value))
71
- f.flock(File::LOCK_UN)
72
- end
73
- end
74
-
75
- def all
76
- Dir.glob( File.join(@path, '*' ) )
77
- end
78
- # need this for fat filesystems
79
- def escape_filenames(fns)
80
- fns.collect do |fn|
81
- URI.escape(fn.to_s, /["\/:;|=,\[\]]/)
82
- end
83
- end
84
-
85
- end
86
-
87
- end
88
- end
89
- end
90
-
@@ -1,85 +0,0 @@
1
- module Merb
2
- module Caching
3
- module Store
4
-
5
- class MemoryCache
6
-
7
- def initialize(opts={})
8
- @opts = opts
9
- @cache = Hash.new
10
- @timestamps = Hash.new
11
- @mutex = Mutex.new
12
- @cache_ttl = @opts.fetch(:session_ttl, 30*60) # default 30 minutes
13
- end
14
-
15
- def [](key)
16
- key = [key].flatten.collect{|k| k.to_s}
17
- @mutex.synchronize {
18
- @timestamps[key] = Time.now
19
- sub_cache = @cache
20
- key[0..-2].each do |subkey|
21
- sub_cache = (sub_cache[subkey] ||= {})
22
- end
23
- sub_cache[key[-1]]
24
- }
25
- end
26
- alias_method :get, :[]
27
- alias_method :read, :[]
28
-
29
- def []=(key, val)
30
- key = [key].flatten.collect{|k| k.to_s}
31
- @mutex.synchronize {
32
- sub_cache = @cache
33
- key[0..-2].each do |subkey|
34
- sub_cache = (sub_cache[subkey] ||= {})
35
- end
36
- sub_cache[key[-1]] = val
37
- @timestamps[key] = Time.now
38
- }
39
- end
40
- alias_method :put, :[]=
41
- alias_method :write, :[]=
42
-
43
- def delete(key)
44
- key = [key].flatten.collect{|k| k.to_s}
45
- @mutex.synchronize {
46
- sub_cache = @cache
47
- key[0..-2].each do |subkey|
48
- sub_cache = (sub_cache[subkey] ||= {})
49
- end
50
- sub_cache.delete(key[-1])
51
- }
52
- end
53
- alias_method :remove, :delete
54
-
55
- def delete_if(&block)
56
- @hash.delete_if(&block)
57
- end
58
-
59
- def reap_old_caches
60
- @timestamps.each do |key,stamp|
61
- if stamp + @cache_ttl < Time.now
62
- delete(key)
63
- end
64
- end
65
- GC.start
66
- end
67
-
68
- def cache
69
- @cache
70
- end
71
-
72
- def keys
73
- @cache.keys
74
- end
75
-
76
- def clear
77
- @cache = Hash.new
78
- @timestamps = Hash.new
79
- @mutex = Mutex.new
80
- end
81
-
82
- end
83
- end
84
- end
85
- end
data/lib/merb/config.rb DELETED
@@ -1,290 +0,0 @@
1
- require File.join(File.dirname(__FILE__), 'erubis_ext')
2
- require File.join(File.dirname(__FILE__), 'version')
3
- require File.join(File.dirname(__FILE__), 'boot_loader')
4
- module Merb
5
- class Config
6
- class << self
7
-
8
- def defaults
9
- @defaults ||= {
10
- :host => "0.0.0.0",
11
- :port => "4000",
12
- :reloader => true,
13
- :cache_templates => false,
14
- :merb_root => Dir.pwd,
15
- :use_mutex => true,
16
- :session_id_cookie_only => true,
17
- :query_string_whitelist => [],
18
- :mongrel_x_sendfile => true
19
- }
20
- end
21
-
22
- def [](key)
23
- (@configuration||={})[key]
24
- end
25
-
26
- def []=(key,val)
27
- @configuration[key] = val
28
- end
29
- def delete(key)
30
- @configuration.delete key
31
- end
32
-
33
- def fetch(key, default)
34
- @configuration.fetch key, default
35
- end
36
-
37
- def to_yaml
38
- @configuration.to_yaml
39
- end
40
-
41
- def setup(global_merb_yml = nil)
42
- @configuration ||= {}
43
- if FileTest.exist? "#{defaults[:merb_root]}/framework"
44
- $LOAD_PATH.unshift( "#{defaults[:merb_root]}/framework" )
45
- end
46
- global_merb_yml ||= "#{defaults[:merb_root]}/config/merb.yml"
47
- apply_configuration_from_file defaults, global_merb_yml
48
- end
49
-
50
- def apply_configuration_from_file(configuration, file)
51
- if File.exists?(file)
52
- configuration.merge(Erubis.load_yaml_file(file))
53
- else
54
- configuration
55
- end
56
- end
57
-
58
- def parse_args(argv = ARGV)
59
- @configuration ||= {}
60
- # Our primary configuration hash for the length of this method
61
- options = {}
62
-
63
- # Environment variables always win
64
- options[:environment] = ENV['MERB_ENV'] if ENV['MERB_ENV']
65
-
66
- # Build a parser for the command line arguments
67
- opts = OptionParser.new do |opts|
68
- opts.version = Merb::VERSION
69
- opts.release = Merb::RELEASE
70
-
71
- opts.banner = "Usage: merb [fdcepghmisluMG] [argument]"
72
- opts.define_head "Merb Mongrel+ Erb. Lightweight replacement for ActionPack."
73
- opts.separator '*'*80
74
- opts.separator 'If no flags are given, Merb starts in the foreground on port 4000.'
75
- opts.separator '*'*80
76
-
77
- opts.on("-u", "--user USER", "This flag is for having merb run as a user other than the one currently logged in. Note: if you set this you must also provide a --group option for it to take effect.") do |config|
78
- options[:user] = config
79
- end
80
-
81
- opts.on("-G", "--group GROUP", "This flag is for having merb run as a group other than the one currently logged in. Note: if you set this you must also provide a --user option for it to take effect.") do |config|
82
- options[:group] = config
83
- end
84
-
85
- opts.on("-f", "--config-file FILENAME", "This flag is for adding extra config files for things like the upload progress module.") do |config|
86
- options[:config] = config
87
- end
88
-
89
- opts.on("-d", "--daemonize", "This will run a single merb in the background.") do |config|
90
- options[:daemonize] = true
91
- end
92
-
93
- opts.on("-c", "--cluster-nodes NUM_MERBS", "Number of merb daemons to run.") do |nodes|
94
- options[:cluster] = nodes
95
- end
96
-
97
- opts.on("-p", "--port PORTNUM", "Port to run merb on, defaults to 4000.") do |port|
98
- options[:port] = port
99
- end
100
-
101
- opts.on("-h", "--host HOSTNAME", "Host to bind to (default is all IP's).") do |host|
102
- options[:host] = host
103
- end
104
-
105
- opts.on("-m", "--merb-root Merb.root", "The path to the Merb.root for the app you want to run (default is current working dir).") do |Merb.root|
106
- options[:merb_root] = File.expand_path(Merb.root)
107
- end
108
-
109
- opts.on("-i", "--irb-console", "This flag will start merb in irb console mode. All your models and other classes will be available for you in an irb session.") do |console|
110
- ::Merb::BootLoader.initialize_merb
111
- _merb = Class.new do
112
- class << self
113
- include Merb::GeneralControllerMixin
114
- def params() {} end
115
- end
116
- def self.show_routes(all_opts = false)
117
- seen = []
118
- unless Merb::Router.named_routes.empty?
119
- puts "Named Routes"
120
- Merb::Router.named_routes.each do |name,route|
121
- puts " #{name}: #{route}"
122
- seen << route
123
- end
124
- end
125
- puts "Anonymous Routes"
126
- (Merb::Router.routes - seen).each do |route|
127
- puts " #{route}"
128
- end
129
- nil
130
- end
131
- end
132
-
133
- Object.send(:define_method, :merb) {
134
- _merb
135
- }
136
- ARGV.clear # Avoid passing args to IRB
137
- require 'irb'
138
- require 'irb/completion'
139
- def exit
140
- exit!
141
- end
142
- if File.exists? ".irbrc"
143
- ENV['IRBRC'] = ".irbrc"
144
- end
145
- IRB.start
146
- exit!
147
- end
148
-
149
- opts.on("-s", "--start-drb PORTNUM", "This is the port number to run the drb daemon on for sessions and upload progress monitoring.") do |drb_port|
150
- puts "Starting merb drb server on port: #{Merb::Config[:drb_server_port]}"
151
- Merb::Server.start(drb_port, :drbserver_start)
152
- exit if Merb::Config[:only_drb]
153
- end
154
-
155
- opts.on("-l", "--log-level LEVEL", "Log levels can be set to any of these options: DEBUG < INFO < WARN < ERROR < FATAL < UNKNOWN") do |loglevel|
156
- options[:log_level] = loglevel
157
- end
158
-
159
- opts.on("-e", "--environment STRING", "Run merb in the correct mode(development, production, testing)") do |env|
160
- options[:environment] ||= env
161
- end
162
-
163
- opts.on("-r", "--script-runner ['RUBY CODE'| FULL_SCRIPT_PATH]",
164
- "Command-line option to run scripts and/or code in the merb app.") do |code_or_file|
165
- ::Merb::BootLoader.initialize_merb
166
- if File.exists?(code_or_file)
167
- eval(File.read(code_or_file))
168
- else
169
- eval(code_or_file)
170
- end
171
- exit!
172
- end
173
-
174
- opts.on("-P","--generate-plugin PATH", "Generate a fresh merb plugin at PATH.") do |path|
175
- require 'merb/generators/merb_plugin'
176
- ::Merb::PluginGenerator.run path || Dir.pwd
177
- exit
178
- end
179
-
180
- opts.on("-K", "--graceful PORT or all", "Gracefully kill one merb proceses by port number. Use merb -K all to gracefully kill all merbs.") do |ports|
181
- @configuration = defaults.merge(options)
182
- Merb::Server.kill(ports, 1)
183
- end
184
-
185
- opts.on("-k", "--kill PORT or all", "Kill one merb proceses by port number. Use merb -k all to kill all merbs.") do |ports|
186
- @configuration = defaults.merge(options)
187
- Merb::Server.kill(ports, 9)
188
- end
189
-
190
- opts.on("-M", "--merb-config FILENAME", "This flag is for explicitly declaring the merb app's config file.") do |config|
191
- options[:merb_config] = config
192
- end
193
-
194
- opts.on("-w", "--webrick", "Run merb using Webrick Rack Adapter instead of mongrel.") do |webport|
195
- puts "Starting merb webrick server on port: #{Merb::Config[:port]}"
196
- trap('TERM') { exit }
197
- Merb::Server.webrick_start(Merb::Config[:port])
198
- end
199
-
200
- opts.on("-F", "--fastcgi", "Run merb using FastCGI Rack Adapter instead of mongrel.") do
201
- trap('TERM') { exit }
202
- Merb::Server.fastcgi_start
203
- end
204
-
205
- opts.on("-X", "--mutex on/off", "This flag is for turning the mutex lock on and off.") do |mutex|
206
- if mutex == 'off'
207
- options[:use_mutex] = false
208
- else
209
- options[:use_mutex] = true
210
- end
211
- end
212
-
213
- opts.on("-D", "--debugger", "Run merb using rDebug.") do
214
- begin
215
- require 'ruby-debug'
216
- Debugger.start
217
- Debugger.settings[:autoeval] = true if Debugger.respond_to?(:settings)
218
- puts "Debugger enabled"
219
- rescue LoadError
220
- puts "You need to install ruby-debug to run the server in debugging mode. With gems, use 'gem install ruby-debug'"
221
- exit
222
- end
223
- end
224
-
225
- opts.on("-?", "-H", "--help", "Show this help message") do
226
- puts opts
227
- exit
228
- end
229
- end
230
-
231
- # If we run merb with no arguments and we are not inside a merb root
232
- # show the help message
233
- if !defined?(Merb.framework_root) && (argv.size == 0) && !File.exists?("#{options[:merb_root] || Merb::Config.defaults[:merb_root]}/config/merb_init.rb")
234
- puts "You are not in the root of a merb application...\n"
235
- puts opts
236
- exit
237
- end
238
-
239
- # Parse what we have on the command line
240
- opts.parse!(argv)
241
-
242
- # merb <argument> is same as merb -g <argument>
243
- if argv.size == 1
244
- require 'merb/generators/merb_app/merb_app'
245
- ::Merb::AppGenerator.run File.expand_path(argv.last)
246
- exit!
247
- end
248
-
249
- # Load up the configuration from file, but keep the command line
250
- # options that may have been chosen. Also, pass-through if we have
251
- # a new merb_config path.
252
- options = Merb::Config.setup(options[:merb_config]).merge(options)
253
-
254
- # Finally, if all else fails... set the environment to 'development'
255
- options[:environment] ||= 'development'
256
-
257
- environment_merb_yml = "#{options[:merb_root]}/config/environments/#{options[:environment]}.yml"
258
-
259
- @configuration = Merb::Config.apply_configuration_from_file options, environment_merb_yml
260
-
261
- case Merb::Config[:environment].to_s
262
- when 'production'
263
- Merb::Config[:reloader] = Merb::Config.fetch(:reloader, false)
264
- Merb::Config[:exception_details] = Merb::Config.fetch(:exception_details, false)
265
- Merb::Config[:cache_templates] = true
266
- else
267
- Merb::Config[:reloader] = Merb::Config.fetch(:reloader, true)
268
- Merb::Config[:exception_details] = Merb::Config.fetch(:exception_details, true)
269
- end
270
-
271
- Merb::Config[:reloader_time] ||= 0.5 if Merb::Config[:reloader] == true
272
-
273
-
274
- if Merb::Config[:reloader]
275
- Thread.abort_on_exception = true
276
- Thread.new do
277
- loop do
278
- sleep( Merb::Config[:reloader_time] )
279
- ::Merb::BootLoader.reload if ::Merb::BootLoader.app_loaded?
280
- end
281
- Thread.exit
282
- end
283
- end
284
- @configuration
285
- end
286
-
287
- end # class << self
288
- end # Config
289
-
290
- end