merb-core 0.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (246) hide show
  1. data/LICENSE +20 -0
  2. data/README +21 -0
  3. data/Rakefile +285 -0
  4. data/TODO +0 -0
  5. data/bin/merb +8 -0
  6. data/bin/merb-specs +5 -0
  7. data/docs/bootloading.dox +57 -0
  8. data/docs/documentation_standards +40 -0
  9. data/docs/new_render_api +51 -0
  10. data/lib/merb-core.rb +304 -0
  11. data/lib/merb-core/autoload.rb +29 -0
  12. data/lib/merb-core/bootloader.rb +601 -0
  13. data/lib/merb-core/config.rb +284 -0
  14. data/lib/merb-core/constants.rb +43 -0
  15. data/lib/merb-core/controller/abstract_controller.rb +531 -0
  16. data/lib/merb-core/controller/exceptions.rb +257 -0
  17. data/lib/merb-core/controller/merb_controller.rb +214 -0
  18. data/lib/merb-core/controller/mime.rb +88 -0
  19. data/lib/merb-core/controller/mixins/controller.rb +262 -0
  20. data/lib/merb-core/controller/mixins/render.rb +324 -0
  21. data/lib/merb-core/controller/mixins/responder.rb +464 -0
  22. data/lib/merb-core/controller/template.rb +205 -0
  23. data/lib/merb-core/core_ext.rb +12 -0
  24. data/lib/merb-core/core_ext/class.rb +192 -0
  25. data/lib/merb-core/core_ext/hash.rb +422 -0
  26. data/lib/merb-core/core_ext/kernel.rb +304 -0
  27. data/lib/merb-core/core_ext/mash.rb +154 -0
  28. data/lib/merb-core/core_ext/object.rb +136 -0
  29. data/lib/merb-core/core_ext/object_space.rb +14 -0
  30. data/lib/merb-core/core_ext/rubygems.rb +28 -0
  31. data/lib/merb-core/core_ext/set.rb +41 -0
  32. data/lib/merb-core/core_ext/string.rb +69 -0
  33. data/lib/merb-core/dispatch/cookies.rb +92 -0
  34. data/lib/merb-core/dispatch/dispatcher.rb +233 -0
  35. data/lib/merb-core/dispatch/exceptions.html.erb +297 -0
  36. data/lib/merb-core/dispatch/request.rb +560 -0
  37. data/lib/merb-core/dispatch/router.rb +141 -0
  38. data/lib/merb-core/dispatch/router/behavior.rb +777 -0
  39. data/lib/merb-core/dispatch/router/cached_proc.rb +52 -0
  40. data/lib/merb-core/dispatch/router/route.rb +212 -0
  41. data/lib/merb-core/dispatch/session.rb +28 -0
  42. data/lib/merb-core/dispatch/session/cookie.rb +166 -0
  43. data/lib/merb-core/dispatch/session/memcached.rb +161 -0
  44. data/lib/merb-core/dispatch/session/memory.rb +234 -0
  45. data/lib/merb-core/gem_ext/erubis.rb +19 -0
  46. data/lib/merb-core/logger.rb +230 -0
  47. data/lib/merb-core/plugins.rb +25 -0
  48. data/lib/merb-core/rack.rb +15 -0
  49. data/lib/merb-core/rack/adapter.rb +42 -0
  50. data/lib/merb-core/rack/adapter/ebb.rb +22 -0
  51. data/lib/merb-core/rack/adapter/evented_mongrel.rb +24 -0
  52. data/lib/merb-core/rack/adapter/fcgi.rb +16 -0
  53. data/lib/merb-core/rack/adapter/irb.rb +108 -0
  54. data/lib/merb-core/rack/adapter/mongrel.rb +25 -0
  55. data/lib/merb-core/rack/adapter/runner.rb +27 -0
  56. data/lib/merb-core/rack/adapter/thin.rb +27 -0
  57. data/lib/merb-core/rack/adapter/webrick.rb +35 -0
  58. data/lib/merb-core/rack/application.rb +77 -0
  59. data/lib/merb-core/rack/handler/mongrel.rb +97 -0
  60. data/lib/merb-core/server.rb +184 -0
  61. data/lib/merb-core/test.rb +10 -0
  62. data/lib/merb-core/test/helpers.rb +9 -0
  63. data/lib/merb-core/test/helpers/controller_helper.rb +8 -0
  64. data/lib/merb-core/test/helpers/multipart_request_helper.rb +175 -0
  65. data/lib/merb-core/test/helpers/request_helper.rb +257 -0
  66. data/lib/merb-core/test/helpers/route_helper.rb +33 -0
  67. data/lib/merb-core/test/helpers/view_helper.rb +121 -0
  68. data/lib/merb-core/test/matchers.rb +9 -0
  69. data/lib/merb-core/test/matchers/controller_matchers.rb +269 -0
  70. data/lib/merb-core/test/matchers/route_matchers.rb +136 -0
  71. data/lib/merb-core/test/matchers/view_matchers.rb +293 -0
  72. data/lib/merb-core/test/run_specs.rb +38 -0
  73. data/lib/merb-core/test/tasks/spectasks.rb +39 -0
  74. data/lib/merb-core/test/test_ext/hpricot.rb +32 -0
  75. data/lib/merb-core/test/test_ext/object.rb +14 -0
  76. data/lib/merb-core/vendor/facets.rb +2 -0
  77. data/lib/merb-core/vendor/facets/dictionary.rb +433 -0
  78. data/lib/merb-core/vendor/facets/inflect.rb +211 -0
  79. data/lib/merb-core/version.rb +11 -0
  80. data/spec/private/config/adapter_spec.rb +32 -0
  81. data/spec/private/config/config_spec.rb +139 -0
  82. data/spec/private/config/environment_spec.rb +13 -0
  83. data/spec/private/config/spec_helper.rb +1 -0
  84. data/spec/private/core_ext/hash_spec.rb +506 -0
  85. data/spec/private/core_ext/kernel_spec.rb +46 -0
  86. data/spec/private/core_ext/object_spec.rb +39 -0
  87. data/spec/private/core_ext/set_spec.rb +26 -0
  88. data/spec/private/core_ext/string_spec.rb +9 -0
  89. data/spec/private/dispatch/cookies_spec.rb +107 -0
  90. data/spec/private/dispatch/dispatch_spec.rb +26 -0
  91. data/spec/private/dispatch/fixture/app/controllers/application.rb +4 -0
  92. data/spec/private/dispatch/fixture/app/controllers/exceptions.rb +27 -0
  93. data/spec/private/dispatch/fixture/app/controllers/foo.rb +21 -0
  94. data/spec/private/dispatch/fixture/app/helpers/global_helpers.rb +8 -0
  95. data/spec/private/dispatch/fixture/app/views/exeptions/client_error.html.erb +37 -0
  96. data/spec/private/dispatch/fixture/app/views/exeptions/internal_server_error.html.erb +216 -0
  97. data/spec/private/dispatch/fixture/app/views/exeptions/not_acceptable.html.erb +38 -0
  98. data/spec/private/dispatch/fixture/app/views/exeptions/not_found.html.erb +40 -0
  99. data/spec/private/dispatch/fixture/app/views/foo/bar.html.erb +0 -0
  100. data/spec/private/dispatch/fixture/app/views/layout/application.html.erb +11 -0
  101. data/spec/private/dispatch/fixture/config/environments/development.rb +6 -0
  102. data/spec/private/dispatch/fixture/config/environments/production.rb +5 -0
  103. data/spec/private/dispatch/fixture/config/environments/test.rb +6 -0
  104. data/spec/private/dispatch/fixture/config/init.rb +45 -0
  105. data/spec/private/dispatch/fixture/config/rack.rb +1 -0
  106. data/spec/private/dispatch/fixture/config/router.rb +35 -0
  107. data/spec/private/dispatch/fixture/log/development.log +1 -0
  108. data/spec/private/dispatch/fixture/log/merb.4000.pid +1 -0
  109. data/spec/private/dispatch/fixture/log/merb_test.log +2040 -0
  110. data/spec/private/dispatch/fixture/log/production.log +1 -0
  111. data/spec/private/dispatch/fixture/merb.4000.pid +1 -0
  112. data/spec/private/dispatch/fixture/public/images/merb.jpg +0 -0
  113. data/spec/private/dispatch/fixture/public/merb.fcgi +4 -0
  114. data/spec/private/dispatch/fixture/public/stylesheets/master.css +119 -0
  115. data/spec/private/dispatch/route_params_spec.rb +24 -0
  116. data/spec/private/dispatch/spec_helper.rb +1 -0
  117. data/spec/private/plugins/plugin_spec.rb +81 -0
  118. data/spec/private/rack/application_spec.rb +43 -0
  119. data/spec/public/DEFINITIONS +11 -0
  120. data/spec/public/abstract_controller/controllers/alt_views/layout/application.erb +1 -0
  121. data/spec/public/abstract_controller/controllers/alt_views/layout/merb/test/fixtures/abstract/render_string_controller_layout.erb +1 -0
  122. data/spec/public/abstract_controller/controllers/alt_views/layout/merb/test/fixtures/abstract/render_template_controller_layout.erb +1 -0
  123. data/spec/public/abstract_controller/controllers/alt_views/merb/test/fixtures/abstract/display_object_with_multiple_roots/index.erb +1 -0
  124. data/spec/public/abstract_controller/controllers/alt_views/merb/test/fixtures/abstract/display_object_with_multiple_roots/show.erb +1 -0
  125. data/spec/public/abstract_controller/controllers/alt_views/merb/test/fixtures/abstract/render_template_multiple_roots/index.erb +1 -0
  126. data/spec/public/abstract_controller/controllers/alt_views/partial/basic_partial_with_multiple_roots/_partial.erb +1 -0
  127. data/spec/public/abstract_controller/controllers/alt_views/render_template_multiple_roots_and_custom_location/index.erb +1 -0
  128. data/spec/public/abstract_controller/controllers/alt_views/render_template_multiple_roots_inherited/index.erb +1 -0
  129. data/spec/public/abstract_controller/controllers/display.rb +54 -0
  130. data/spec/public/abstract_controller/controllers/filters.rb +167 -0
  131. data/spec/public/abstract_controller/controllers/helpers.rb +31 -0
  132. data/spec/public/abstract_controller/controllers/partial.rb +106 -0
  133. data/spec/public/abstract_controller/controllers/render.rb +86 -0
  134. data/spec/public/abstract_controller/controllers/views/helpers/capture/index.erb +1 -0
  135. data/spec/public/abstract_controller/controllers/views/helpers/concat/index.erb +1 -0
  136. data/spec/public/abstract_controller/controllers/views/layout/alt.erb +1 -0
  137. data/spec/public/abstract_controller/controllers/views/layout/custom.erb +1 -0
  138. data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/display_object/index.erb +1 -0
  139. data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/display_object_with_action/new.erb +1 -0
  140. data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/render_template/index.erb +1 -0
  141. data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/render_template_app_layout/index.erb +0 -0
  142. data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/render_template_custom_layout/index.erb +1 -0
  143. data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/render_template_multiple_roots/index.erb +1 -0
  144. data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/render_template_multiple_roots/show.erb +1 -0
  145. data/spec/public/abstract_controller/controllers/views/partial/another_directory/_partial.erb +1 -0
  146. data/spec/public/abstract_controller/controllers/views/partial/basic_partial/_partial.erb +1 -0
  147. data/spec/public/abstract_controller/controllers/views/partial/basic_partial/index.erb +1 -0
  148. data/spec/public/abstract_controller/controllers/views/partial/basic_partial_with_multiple_roots/index.erb +1 -0
  149. data/spec/public/abstract_controller/controllers/views/partial/nested_partial/_first.erb +1 -0
  150. data/spec/public/abstract_controller/controllers/views/partial/nested_partial/_second.erb +1 -0
  151. data/spec/public/abstract_controller/controllers/views/partial/nested_partial/index.erb +1 -0
  152. data/spec/public/abstract_controller/controllers/views/partial/partial_in_another_directory/index.erb +1 -0
  153. data/spec/public/abstract_controller/controllers/views/partial/partial_with_both/_collection.erb +1 -0
  154. data/spec/public/abstract_controller/controllers/views/partial/partial_with_both/index.erb +1 -0
  155. data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections/_collection.erb +1 -0
  156. data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections/index.erb +1 -0
  157. data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections_and_as/_collection.erb +1 -0
  158. data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections_and_as/index.erb +1 -0
  159. data/spec/public/abstract_controller/controllers/views/partial/partial_with_locals/_variables.erb +1 -0
  160. data/spec/public/abstract_controller/controllers/views/partial/partial_with_locals/index.erb +1 -0
  161. data/spec/public/abstract_controller/controllers/views/partial/partial_with_with_and_locals/_both.erb +1 -0
  162. data/spec/public/abstract_controller/controllers/views/partial/partial_with_with_and_locals/index.erb +1 -0
  163. data/spec/public/abstract_controller/controllers/views/partial/with_as_partial/_with_partial.erb +1 -0
  164. data/spec/public/abstract_controller/controllers/views/partial/with_as_partial/index.erb +1 -0
  165. data/spec/public/abstract_controller/controllers/views/partial/with_nil_partial/_with_partial.erb +1 -0
  166. data/spec/public/abstract_controller/controllers/views/partial/with_nil_partial/index.erb +1 -0
  167. data/spec/public/abstract_controller/controllers/views/partial/with_partial/_with_partial.erb +1 -0
  168. data/spec/public/abstract_controller/controllers/views/partial/with_partial/index.erb +1 -0
  169. data/spec/public/abstract_controller/controllers/views/test_display/foo.html.erb +1 -0
  170. data/spec/public/abstract_controller/controllers/views/test_render/foo.html.erb +0 -0
  171. data/spec/public/abstract_controller/controllers/views/wonderful/index.erb +1 -0
  172. data/spec/public/abstract_controller/display_spec.rb +33 -0
  173. data/spec/public/abstract_controller/filter_spec.rb +80 -0
  174. data/spec/public/abstract_controller/helper_spec.rb +13 -0
  175. data/spec/public/abstract_controller/partial_spec.rb +53 -0
  176. data/spec/public/abstract_controller/render_spec.rb +70 -0
  177. data/spec/public/abstract_controller/spec_helper.rb +27 -0
  178. data/spec/public/boot_loader/boot_loader_spec.rb +33 -0
  179. data/spec/public/boot_loader/spec_helper.rb +1 -0
  180. data/spec/public/controller/base_spec.rb +31 -0
  181. data/spec/public/controller/controllers/base.rb +41 -0
  182. data/spec/public/controller/controllers/display.rb +40 -0
  183. data/spec/public/controller/controllers/responder.rb +67 -0
  184. data/spec/public/controller/controllers/url.rb +7 -0
  185. data/spec/public/controller/controllers/views/layout/custom.html.erb +1 -0
  186. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/class_provides/index.html.erb +1 -0
  187. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/class_provides/index.xml.erb +1 -0
  188. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/display_with_template/index.html.erb +1 -0
  189. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/html_default/index.html.erb +1 -0
  190. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/layout/custom.html.erb +1 -0
  191. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/local_provides/index.html.erb +1 -0
  192. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/local_provides/index.xml.erb +1 -0
  193. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/multi_provides/index.html.erb +1 -0
  194. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/multi_provides/index.js.erb +1 -0
  195. data/spec/public/controller/display_spec.rb +34 -0
  196. data/spec/public/controller/log/merb.4000.pid +1 -0
  197. data/spec/public/controller/responder_spec.rb +95 -0
  198. data/spec/public/controller/spec_helper.rb +9 -0
  199. data/spec/public/controller/url_spec.rb +152 -0
  200. data/spec/public/directory_structure/directory/app/controllers/application.rb +3 -0
  201. data/spec/public/directory_structure/directory/app/controllers/base.rb +13 -0
  202. data/spec/public/directory_structure/directory/app/controllers/custom.rb +19 -0
  203. data/spec/public/directory_structure/directory/app/views/base/template.html.erb +1 -0
  204. data/spec/public/directory_structure/directory/app/views/wonderful/template.erb +1 -0
  205. data/spec/public/directory_structure/directory/config/router.rb +3 -0
  206. data/spec/public/directory_structure/directory/log/merb.4000.pid +1 -0
  207. data/spec/public/directory_structure/directory/log/merb_test.log +265 -0
  208. data/spec/public/directory_structure/directory/merb.4000.pid +1 -0
  209. data/spec/public/directory_structure/directory_spec.rb +44 -0
  210. data/spec/public/logger/logger_spec.rb +175 -0
  211. data/spec/public/logger/spec_helper.rb +1 -0
  212. data/spec/public/reloading/directory/app/controllers/application.rb +3 -0
  213. data/spec/public/reloading/directory/app/controllers/reload.rb +6 -0
  214. data/spec/public/reloading/directory/config/init.rb +2 -0
  215. data/spec/public/reloading/directory/log/merb.4000.pid +1 -0
  216. data/spec/public/reloading/directory/log/merb_test.log +59 -0
  217. data/spec/public/reloading/directory/merb.4000.pid +1 -0
  218. data/spec/public/reloading/reload_spec.rb +80 -0
  219. data/spec/public/request/multipart_spec.rb +15 -0
  220. data/spec/public/request/request_spec.rb +207 -0
  221. data/spec/public/router/default_spec.rb +21 -0
  222. data/spec/public/router/deferred_spec.rb +22 -0
  223. data/spec/public/router/namespace_spec.rb +113 -0
  224. data/spec/public/router/nested_resources_spec.rb +34 -0
  225. data/spec/public/router/resource_spec.rb +45 -0
  226. data/spec/public/router/resources_spec.rb +57 -0
  227. data/spec/public/router/spec_helper.rb +72 -0
  228. data/spec/public/router/special_spec.rb +44 -0
  229. data/spec/public/router/string_spec.rb +61 -0
  230. data/spec/public/template/template_spec.rb +92 -0
  231. data/spec/public/template/templates/error.html.erb +2 -0
  232. data/spec/public/template/templates/template.html.erb +1 -0
  233. data/spec/public/template/templates/template.html.myt +1 -0
  234. data/spec/public/test/controller_matchers_spec.rb +378 -0
  235. data/spec/public/test/controllers/controller_assertion_mock.rb +7 -0
  236. data/spec/public/test/controllers/dispatch_controller.rb +11 -0
  237. data/spec/public/test/controllers/spec_helper_controller.rb +30 -0
  238. data/spec/public/test/multipart_request_helper_spec.rb +159 -0
  239. data/spec/public/test/multipart_upload_text_file.txt +1 -0
  240. data/spec/public/test/request_helper_spec.rb +153 -0
  241. data/spec/public/test/route_helper_spec.rb +54 -0
  242. data/spec/public/test/route_matchers_spec.rb +133 -0
  243. data/spec/public/test/view_helper_spec.rb +96 -0
  244. data/spec/public/test/view_matchers_spec.rb +107 -0
  245. data/spec/spec_helper.rb +71 -0
  246. metadata +488 -0
@@ -0,0 +1,95 @@
1
+ require File.join(File.dirname(__FILE__), "spec_helper")
2
+
3
+ describe Merb::Controller, " responds" do
4
+
5
+ before do
6
+ Merb.push_path(:layout, File.dirname(__FILE__) / "controllers" / "views" / "layouts")
7
+ Merb::Router.prepare do |r|
8
+ r.default_routes
9
+ end
10
+ end
11
+
12
+ it "should default the mime-type to HTML" do
13
+ dispatch_to(Merb::Test::Fixtures::Controllers::HtmlDefault, :index).body.should == "HTML: Default"
14
+ end
15
+
16
+ it "should use other mime-types if they are provided on the class level" do
17
+ controller = dispatch_to(Merb::Test::Fixtures::Controllers::ClassProvides, :index, {}, :http_accept => "application/xml")
18
+ controller.body.should == "<XML:Class provides='true' />"
19
+ end
20
+
21
+ it "should fail if none of the acceptable mime-types are available" do
22
+ calling { dispatch_to(Merb::Test::Fixtures::Controllers::ClassProvides, :index, {}, :http_accept => "application/json") }.
23
+ should raise_error(Merb::ControllerExceptions::NotAcceptable)
24
+ end
25
+
26
+ it "should use mime-types that are provided at the local level" do
27
+ controller = dispatch_to(Merb::Test::Fixtures::Controllers::LocalProvides, :index, {}, :http_accept => "application/xml")
28
+ controller.body.should == "<XML:Local provides='true' />"
29
+ end
30
+
31
+ it "should use the first mime-type when accepting anything */*" do
32
+ controller = dispatch_to(Merb::Test::Fixtures::Controllers::MultiProvides, :index, {}, :http_accept => "*/*")
33
+ controller.body.should == "HTML: Multi"
34
+ end
35
+
36
+ it "should use the first mime-type when accepting anything */*, even if something unprovidable comes first" do
37
+ controller = dispatch_to(Merb::Test::Fixtures::Controllers::HtmlDefault, :index, {}, :http_accept => "application/json, */*")
38
+ controller.body.should == "HTML: Default"
39
+ end
40
+
41
+ it "should use the pick the first mime-type from the list not the */*" do
42
+ controller = dispatch_to(Merb::Test::Fixtures::Controllers::MultiProvides, :index, {}, :http_accept => "text/javascript, */*")
43
+ controller.body.should == "JS: Multi"
44
+ end
45
+
46
+ it "should pick the first mime-type if no specific supported content-type matches are *available*" do
47
+ controller = dispatch_to(Merb::Test::Fixtures::Controllers::MultiProvides, :index, {}, :http_accept => "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*")
48
+ controller.body.should == "HTML: Multi"
49
+ end
50
+
51
+ it "should pick the first mime-type if no specific supported content-type matches are actually *provided*" do
52
+ controller = dispatch_to(Merb::Test::Fixtures::Controllers::MultiProvides, :index, {}, :http_accept => "application/json, */*")
53
+ controller.body.should == "HTML: Multi"
54
+ end
55
+
56
+ it "should select the format based on params supplied to it with class provides" do
57
+ controller = dispatch_to(Merb::Test::Fixtures::Controllers::ClassProvides, :index, :format => "xml")
58
+ controller.content_type.should == :xml
59
+ end
60
+
61
+ it "should select the format based on params supplied to it with instance provides" do
62
+ controller = dispatch_to(Merb::Test::Fixtures::Controllers::LocalProvides, :index, :format => "xml")
63
+ controller.content_type.should == :xml
64
+ end
65
+
66
+ it "should properly add formats when only_provides is called in action" do
67
+ controller = dispatch_to(Merb::Test::Fixtures::Controllers::OnlyProvides, :index, {}, :http_accept => "application/xml")
68
+ controller.content_type.should == :xml
69
+ end
70
+
71
+ it "should properly remove formats when only_provides is called in action" do
72
+ controller = dispatch_to(Merb::Test::Fixtures::Controllers::OnlyProvides, :index, {}, :http_accept => "application/html")
73
+ lambda { controller.content_type }.should raise_error(Merb::ControllerExceptions::NotAcceptable)
74
+ end
75
+
76
+ it "should properly add formats when only_provides is called in controller" do
77
+ controller = dispatch_to(Merb::Test::Fixtures::Controllers::ClassOnlyProvides, :index, {}, :http_accept => "application/xml")
78
+ controller.content_type.should == :xml
79
+ end
80
+
81
+ it "should properly remove formats when only_provides is called in controller" do
82
+ controller = dispatch_to(Merb::Test::Fixtures::Controllers::ClassOnlyProvides, :index, {}, :http_accept => "application/html")
83
+ lambda { controller.content_type }.should raise_error(Merb::ControllerExceptions::NotAcceptable)
84
+ end
85
+
86
+ it "should properly remove formats when does_not_provide is called in action" do
87
+ controller = dispatch_to(Merb::Test::Fixtures::Controllers::OnlyProvides, :index, {}, :http_accept => "application/html")
88
+ lambda { controller.content_type }.should raise_error(Merb::ControllerExceptions::NotAcceptable)
89
+ end
90
+
91
+ it "should properly remove formats when does_not_provide is called in controller" do
92
+ controller = dispatch_to(Merb::Test::Fixtures::Controllers::ClassOnlyProvides, :index, {}, :http_accept => "application/html")
93
+ lambda { controller.content_type }.should raise_error(Merb::ControllerExceptions::NotAcceptable)
94
+ end
95
+ end
@@ -0,0 +1,9 @@
1
+ __DIR__ = File.dirname(__FILE__)
2
+
3
+ require File.join(__DIR__, "..", "..", "spec_helper")
4
+
5
+ require File.join(__DIR__, "controllers", "base")
6
+ require File.join(__DIR__, "controllers", "responder")
7
+ require File.join(__DIR__, "controllers", "display")
8
+
9
+ Merb.start :environment => 'test'
@@ -0,0 +1,152 @@
1
+ require File.join(File.dirname(__FILE__), "spec_helper")
2
+ require File.join(File.dirname(__FILE__), "controllers", "url")
3
+
4
+ class Monkey ; def to_param ; 45 ; end ; end
5
+ class Donkey ; def to_param ; 19 ; end ; end
6
+ class Blue
7
+ def to_param ; 13 ; end
8
+ def monkey_id ; Monkey.new ; end
9
+ def donkey_id ; Donkey.new ; end
10
+ end
11
+ class Pink
12
+ def to_param ; 22 ; end
13
+ def blue_id ; Blue.new ; end
14
+ def monkey_id ; blue_id.monkey_id ; end
15
+ end
16
+
17
+ Merb::Router.prepare do |r|
18
+ r.default_routes
19
+ r.resources :monkeys do |m|
20
+ m.resources :blues do |b|
21
+ b.resources :pinks
22
+ end
23
+ end
24
+ r.resources :donkeys do |d|
25
+ d.resources :blues
26
+ end
27
+ r.resource :red do |red|
28
+ red.resources :blues
29
+ end
30
+ r.match(%r{/foo/(\d+)/}).to(:controller => 'asdf').name(:regexp)
31
+ r.match('/people/:name').
32
+ to(:controller => 'people', :action => 'show').name(:person)
33
+ r.match('/argstrs').to(:controller => "args").name(:args)
34
+ end
35
+
36
+ describe Merb::Controller, " url" do
37
+
38
+ before do
39
+ @controller = dispatch_to(Merb::Test::Fixtures::Controllers::Url, :index)
40
+ end
41
+
42
+ it "should match the :controller to the default route" do
43
+ @controller.url(:controller => "monkeys").should eql("/monkeys")
44
+ end
45
+
46
+ it "should match the :controller,:action to the default route" do
47
+ @controller.url(:controller => "monkeys", :action => "list").
48
+ should eql("/monkeys/list")
49
+ end
50
+
51
+ it "should match the :controller,:action,:id to the default route" do
52
+ @controller.url(:controller => "monkeys", :action => "list", :id => 4).
53
+ should eql("/monkeys/list/4")
54
+ end
55
+
56
+ it "should match the :controller,:action,:id,:format to the default route" do
57
+ @controller.url(:controller => "monkeys", :action => "list", :id => 4, :format => "xml").
58
+ should eql("/monkeys/list/4.xml")
59
+ end
60
+
61
+ it "should raise an error" do
62
+ lambda { @controller.url(:regexp) }.should raise_error
63
+ end
64
+
65
+ it "should match with a route param" do
66
+ @controller.url(:person, :name => "david").should eql("/people/david")
67
+ end
68
+
69
+ it "should match without a route param" do
70
+ @controller.url(:person).should eql("/people/")
71
+ end
72
+
73
+ it "should match with an additional param" do
74
+ @controller.url(:person, :name => 'david', :color => 'blue').should eql("/people/david?color=blue")
75
+ end
76
+
77
+ it "should match with additional params" do
78
+ url = @controller.url(:person, :name => 'david', :smell => 'funky', :color => 'blue')
79
+ url.should match(%r{/people/david?.*color=blue})
80
+ url.should match(%r{/people/david?.*smell=funky})
81
+ end
82
+
83
+ it "should match with extra params and an array" do
84
+ @controller.url(:args, :monkey => [1,2]).should == "/argstrs?monkey[]=1&monkey[]=2"
85
+ end
86
+
87
+ it "should match with no second arg" do
88
+ @controller.url(:monkeys).should == "/monkeys"
89
+ end
90
+
91
+ it "should match with an object as second arg" do
92
+ @monkey = Monkey.new
93
+ @controller.url(:monkey, @monkey).should == "/monkeys/45"
94
+ end
95
+
96
+ it "should match with a fixnum as second arg" do
97
+ @controller.url(:monkey, 3).should == "/monkeys/3"
98
+ end
99
+
100
+ it "should match the delete_monkey route" do
101
+ @monkey = Monkey.new
102
+ @controller.url(:delete_monkey, @monkey).should == "/monkeys/45/delete"
103
+ end
104
+
105
+ it "should match the delete_red route" do
106
+ @controller.url(:delete_red).should == "/red/delete"
107
+ end
108
+
109
+ it "should add a path_prefix to the url if :path_prefix is set" do
110
+ Merb::Config[:path_prefix] = "/jungle"
111
+ @controller.url(:monkeys).should == "/jungle/monkeys"
112
+ Merb::Config[:path_prefix] = nil
113
+ end
114
+
115
+ it "should match a nested resources show action" do
116
+ @blue = Blue.new
117
+ @controller.url(:monkey_blue,@blue).should == "/monkeys/45/blues/13"
118
+ end
119
+
120
+ it "should match the index action of nested resource with parent object" do
121
+ @blue = Blue.new
122
+ @monkey = Monkey.new
123
+ @controller.url(:monkey_blues,:monkey_id => @monkey).should == "/monkeys/45/blues"
124
+ end
125
+
126
+ it "should match the index action of nested resource with parent id as string" do
127
+ @blue = Blue.new
128
+ @controller.url(:monkey_blues,:monkey_id => '1').should == "/monkeys/1/blues"
129
+ end
130
+
131
+ it "should match the edit action of nested resource" do
132
+ @blue = Blue.new
133
+ @controller.url(:edit_monkey_blue,@blue).should == "/monkeys/45/blues/13/edit"
134
+ end
135
+
136
+ it "should match the index action of resources nested under a resource" do
137
+ @blue = Blue.new
138
+ @controller.url(:red_blues).should == "/red/blues"
139
+ end
140
+
141
+ it "should match resource that has been nested multiple times" do
142
+ @blue = Blue.new
143
+ @controller.url(:donkey_blue,@blue).should == "/donkeys/19/blues/13"
144
+ @controller.url(:monkey_blue,@blue).should == "/monkeys/45/blues/13"
145
+ end
146
+
147
+ it "should match resources nested more than one level deep" do
148
+ @pink = Pink.new
149
+ @controller.url(:monkey_blue_pink,@pink).should == "/monkeys/45/blues/13/pinks/22"
150
+ end
151
+
152
+ end
@@ -0,0 +1,3 @@
1
+
2
+
3
+ class Application < Merb::Controller; end
@@ -0,0 +1,13 @@
1
+
2
+
3
+ class Base < Application
4
+
5
+ def string
6
+ "String"
7
+ end
8
+
9
+ def template
10
+ render
11
+ end
12
+
13
+ end
@@ -0,0 +1,19 @@
1
+
2
+
3
+ class Custom < Application
4
+
5
+ def string
6
+ "String"
7
+ end
8
+
9
+ def template
10
+ render
11
+ end
12
+
13
+ private
14
+
15
+ def _template_location(action, type = nil, controller = controller_name)
16
+ "wonderful/#{action}"
17
+ end
18
+
19
+ end
@@ -0,0 +1,3 @@
1
+ Merb::Router.prepare do |r|
2
+ r.default_routes
3
+ end
@@ -0,0 +1,265 @@
1
+ Thu, 14 Feb 2008 17:24:15 GMT ~ info ~ Logfile created
2
+ Thu, 14 Feb 2008 17:24:15 GMT ~ Not Using Sessions
3
+ Thu, 14 Feb 2008 17:24:15 GMT ~ {:after_filters_time=>5.0e-06, :before_filters_time=>8.0e-06, :action_time=>0.000118}
4
+ Thu, 14 Feb 2008 17:24:15 GMT ~ {:after_filters_time=>5.0e-06, :before_filters_time=>5.0e-06, :action_time=>0.000598}
5
+ Thu, 14 Feb 2008 17:24:15 GMT ~ {:after_filters_time=>5.0e-06, :before_filters_time=>7.0e-06, :action_time=>0.000551}
6
+ Thu, 14 Feb 2008 17:32:09 GMT ~ Not Using Sessions
7
+ Thu, 14 Feb 2008 17:32:09 GMT ~ {:after_filters_time=>5.0e-06, :before_filters_time=>8.0e-06, :action_time=>0.000117}
8
+ Thu, 14 Feb 2008 17:32:09 GMT ~ {:after_filters_time=>5.0e-06, :before_filters_time=>6.0e-06, :action_time=>0.000655}
9
+ Thu, 14 Feb 2008 17:32:09 GMT ~ {:after_filters_time=>6.0e-06, :before_filters_time=>7.0e-06, :action_time=>0.000821}
10
+ Thu, 14 Feb 2008 17:34:02 GMT ~ Not Using Sessions
11
+ Thu, 14 Feb 2008 17:34:02 GMT ~ {:after_filters_time=>5.0e-06, :before_filters_time=>9.0e-06, :action_time=>0.000117}
12
+ Thu, 14 Feb 2008 17:34:02 GMT ~ {:after_filters_time=>5.0e-06, :before_filters_time=>5.0e-06, :action_time=>0.000605}
13
+ Thu, 14 Feb 2008 17:34:02 GMT ~ {:after_filters_time=>5.0e-06, :before_filters_time=>7.0e-06, :action_time=>0.000551}
14
+ Thu, 14 Feb 2008 17:56:42 GMT ~ Not Using Sessions
15
+ Thu, 14 Feb 2008 17:56:42 GMT ~ {:after_filters_time=>6.0e-06, :before_filters_time=>9.0e-06, :action_time=>0.000118}
16
+ Thu, 14 Feb 2008 17:56:42 GMT ~ {:after_filters_time=>4.0e-06, :before_filters_time=>6.0e-06, :action_time=>0.000601}
17
+ Thu, 14 Feb 2008 17:56:42 GMT ~ {:after_filters_time=>5.0e-06, :before_filters_time=>7.0e-06, :action_time=>0.000558}
18
+ Thu, 14 Feb 2008 17:57:28 GMT ~ Not Using Sessions
19
+ Thu, 14 Feb 2008 17:57:28 GMT ~ {:after_filters_time=>6.0e-06, :before_filters_time=>9.0e-06, :action_time=>0.000117}
20
+ Thu, 14 Feb 2008 17:57:28 GMT ~ {:after_filters_time=>5.0e-06, :before_filters_time=>6.0e-06, :action_time=>0.000719}
21
+ Thu, 14 Feb 2008 17:57:28 GMT ~ {:after_filters_time=>5.0e-06, :before_filters_time=>7.0e-06, :action_time=>0.000688}
22
+ Thu, 14 Feb 2008 17:58:16 GMT ~ Not Using Sessions
23
+ Thu, 14 Feb 2008 17:58:16 GMT ~ {:after_filters_time=>5.0e-06, :before_filters_time=>9.0e-06, :action_time=>0.000116}
24
+ Thu, 14 Feb 2008 17:58:16 GMT ~ {:after_filters_time=>6.0e-06, :before_filters_time=>6.0e-06, :action_time=>0.000923}
25
+ Thu, 14 Feb 2008 17:58:16 GMT ~ {:after_filters_time=>6.0e-06, :before_filters_time=>8.0e-06, :action_time=>0.000612}
26
+ Thu, 14 Feb 2008 21:20:40 GMT ~ Not Using Sessions
27
+ Thu, 14 Feb 2008 21:20:40 GMT ~ {:after_filters_time=>5.0e-06, :before_filters_time=>9.0e-06, :action_time=>0.000117}
28
+ Thu, 14 Feb 2008 21:20:40 GMT ~ {:after_filters_time=>5.0e-06, :before_filters_time=>5.0e-06, :action_time=>0.000611}
29
+ Thu, 14 Feb 2008 21:20:40 GMT ~ {:after_filters_time=>5.0e-06, :before_filters_time=>7.0e-06, :action_time=>0.00055}
30
+ Fri, 15 Feb 2008 18:44:38 GMT ~ Not Using Sessions
31
+ Fri, 15 Feb 2008 18:44:38 GMT ~ {:after_filters_time=>6.0e-06, :before_filters_time=>8.0e-06, :action_time=>0.000118}
32
+ Fri, 15 Feb 2008 18:44:38 GMT ~ {:after_filters_time=>6.0e-06, :before_filters_time=>6.0e-06, :action_time=>0.000607}
33
+ Fri, 15 Feb 2008 18:44:38 GMT ~ {:after_filters_time=>5.0e-06, :before_filters_time=>7.0e-06, :action_time=>0.000557}
34
+ Sun, 17 Feb 2008 15:32:31 GMT ~ Not Using Sessions
35
+ Sun, 17 Feb 2008 15:32:31 GMT ~ {:action_time=>0.000118, :after_filters_time=>6.0e-06, :before_filters_time=>8.0e-06}
36
+ Sun, 17 Feb 2008 15:32:31 GMT ~ {:action_time=>0.000604, :after_filters_time=>5.0e-06, :before_filters_time=>5.0e-06}
37
+ Sun, 17 Feb 2008 15:32:31 GMT ~ {:action_time=>0.000567, :after_filters_time=>6.0e-06, :before_filters_time=>6.0e-06}
38
+ Sun, 17 Feb 2008 16:12:01 GMT ~ Not Using Sessions
39
+ Sun, 17 Feb 2008 16:12:01 GMT ~ {:action_time=>0.000117, :after_filters_time=>5.0e-06, :before_filters_time=>7.0e-06}
40
+ Sun, 17 Feb 2008 16:12:01 GMT ~ {:action_time=>0.000613, :after_filters_time=>5.0e-06, :before_filters_time=>5.0e-06}
41
+ Sun, 17 Feb 2008 16:12:01 GMT ~ {:action_time=>0.000563, :after_filters_time=>6.0e-06, :before_filters_time=>6.0e-06}
42
+ Sun, 17 Feb 2008 16:21:36 GMT ~ Not Using Sessions
43
+ Sun, 17 Feb 2008 16:21:36 GMT ~ {:action_time=>0.000121, :after_filters_time=>5.0e-06, :before_filters_time=>7.0e-06}
44
+ Sun, 17 Feb 2008 16:21:36 GMT ~ {:action_time=>0.000626, :after_filters_time=>5.0e-06, :before_filters_time=>5.0e-06}
45
+ Sun, 17 Feb 2008 16:21:36 GMT ~ {:action_time=>0.000656, :after_filters_time=>6.0e-06, :before_filters_time=>8.0e-06}
46
+ Mon, 25 Feb 2008 23:09:50 GMT ~ Not Using Sessions
47
+ Mon, 25 Feb 2008 23:09:50 GMT ~ {:action_time=>0.000121, :after_filters_time=>6.0e-06, :before_filters_time=>7.0e-06}
48
+ Mon, 25 Feb 2008 23:09:50 GMT ~ {:action_time=>0.000621, :after_filters_time=>5.0e-06, :before_filters_time=>5.0e-06}
49
+ Mon, 25 Feb 2008 23:09:50 GMT ~ {:action_time=>0.000572, :after_filters_time=>6.0e-06, :before_filters_time=>7.0e-06}
50
+ Mon, 25 Feb 2008 23:11:48 GMT ~ Not Using Sessions
51
+ Mon, 25 Feb 2008 23:11:48 GMT ~ {:action_time=>0.000122, :after_filters_time=>5.0e-06, :before_filters_time=>8.0e-06}
52
+ Mon, 25 Feb 2008 23:11:48 GMT ~ {:action_time=>0.000636, :after_filters_time=>5.0e-06, :before_filters_time=>5.0e-06}
53
+ Mon, 25 Feb 2008 23:11:48 GMT ~ {:action_time=>0.000566, :after_filters_time=>5.0e-06, :before_filters_time=>6.0e-06}
54
+ Mon, 25 Feb 2008 23:13:20 GMT ~ Not Using Sessions
55
+ Mon, 25 Feb 2008 23:13:20 GMT ~ {:action_time=>0.000127, :after_filters_time=>5.0e-06, :before_filters_time=>8.0e-06}
56
+ Mon, 25 Feb 2008 23:13:20 GMT ~ {:action_time=>0.000616, :after_filters_time=>5.0e-06, :before_filters_time=>5.0e-06}
57
+ Mon, 25 Feb 2008 23:13:20 GMT ~ {:action_time=>0.000562, :after_filters_time=>6.0e-06, :before_filters_time=>6.0e-06}
58
+ ~ Not Using Sessions
59
+ ~ {:before_filters_time=>6.0e-06, :after_filters_time=>5.0e-06, :action_time=>0.000113}
60
+ ~ {:before_filters_time=>5.0e-06, :after_filters_time=>5.0e-06, :action_time=>0.000566}
61
+ ~ {:before_filters_time=>5.0e-06, :after_filters_time=>6.0e-06, :action_time=>0.000586}
62
+ ~ Not Using Sessions
63
+ ~ {:action_time=>0.000119, :before_filters_time=>8.0e-06, :after_filters_time=>5.0e-06}
64
+ ~ {:action_time=>0.00056, :before_filters_time=>6.0e-06, :after_filters_time=>5.0e-06}
65
+ ~ {:action_time=>0.000574, :before_filters_time=>7.0e-06, :after_filters_time=>6.0e-06}
66
+ ~ Not Using Sessions
67
+ ~ {:action_time=>0.000114, :before_filters_time=>7.0e-06, :after_filters_time=>5.0e-06}
68
+ ~ {:action_time=>0.000551, :before_filters_time=>4.0e-06, :after_filters_time=>5.0e-06}
69
+ ~ {:action_time=>0.000526, :before_filters_time=>7.0e-06, :after_filters_time=>6.0e-06}
70
+ ~ Not Using Sessions
71
+ ~ {:action_time=>0.000114, :before_filters_time=>7.0e-06, :after_filters_time=>5.0e-06}
72
+ ~ {:action_time=>0.000557, :before_filters_time=>5.0e-06, :after_filters_time=>6.0e-06}
73
+ ~ {:action_time=>0.00053, :before_filters_time=>7.0e-06, :after_filters_time=>5.0e-06}
74
+ ~ Not Using Sessions
75
+ ~ {:action_time=>0.000114, :before_filters_time=>7.0e-06, :after_filters_time=>5.0e-06}
76
+ ~ {:action_time=>0.000555, :before_filters_time=>5.0e-06, :after_filters_time=>6.0e-06}
77
+ ~ {:action_time=>0.000554, :before_filters_time=>7.0e-06, :after_filters_time=>6.0e-06}
78
+ ~ Not Using Sessions
79
+ ~ {:action_time=>0.000155, :before_filters_time=>7.0e-06, :after_filters_time=>6.0e-06}
80
+ ~ {:action_time=>0.000631, :before_filters_time=>5.0e-06, :after_filters_time=>6.0e-06}
81
+ ~ {:action_time=>0.000618, :before_filters_time=>7.0e-06, :after_filters_time=>6.0e-06}
82
+ ~ Not Using Sessions
83
+ ~ {:action_time=>0.000166, :before_filters_time=>8.0e-06, :after_filters_time=>6.0e-06}
84
+ ~ {:action_time=>0.000639, :before_filters_time=>8.0e-06, :after_filters_time=>6.0e-06}
85
+ ~ {:action_time=>0.000612, :before_filters_time=>7.0e-06, :after_filters_time=>6.0e-06}
86
+ ~ Not Using Sessions
87
+ ~ {:action_time=>0.00033, :before_filters_time=>7.0e-06, :after_filters_time=>6.0e-06}
88
+ ~ {:action_time=>0.000791, :before_filters_time=>5.0e-06, :after_filters_time=>7.0e-06}
89
+ ~ {:action_time=>0.000695, :before_filters_time=>8.0e-06, :after_filters_time=>7.0e-06}
90
+ ~ Not Using Sessions
91
+ ~ {:action_time=>0.000143, :before_filters_time=>8.0e-06, :after_filters_time=>5.0e-06}
92
+ ~ {:action_time=>0.001095, :before_filters_time=>6.0e-06, :after_filters_time=>7.0e-06}
93
+ ~ {:action_time=>0.000665, :before_filters_time=>7.0e-06, :after_filters_time=>7.0e-06}
94
+ ~ Not Using Sessions
95
+ ~ {:action_time=>0.00017, :before_filters_time=>9.0e-06, :after_filters_time=>6.0e-06}
96
+ ~ {:action_time=>0.000654, :before_filters_time=>5.0e-06, :after_filters_time=>6.0e-06}
97
+ ~ {:action_time=>0.000614, :before_filters_time=>6.0e-06, :after_filters_time=>5.0e-06}
98
+ ~ Not Using Sessions
99
+ ~ {:action_time=>0.000168, :before_filters_time=>9.0e-06, :after_filters_time=>6.0e-06}
100
+ ~ {:action_time=>0.000638, :before_filters_time=>5.0e-06, :after_filters_time=>6.0e-06}
101
+ ~ {:action_time=>0.00061, :before_filters_time=>6.0e-06, :after_filters_time=>5.0e-06}
102
+ ~ Not Using Sessions
103
+ ~ {:action_time=>0.000137, :before_filters_time=>7.0e-06, :after_filters_time=>5.0e-06}
104
+ ~ {:action_time=>0.00064, :before_filters_time=>4.0e-06, :after_filters_time=>6.0e-06}
105
+ ~ {:action_time=>0.000609, :before_filters_time=>7.0e-06, :after_filters_time=>6.0e-06}
106
+ ~ Not Using Sessions
107
+ ~ {:action_time=>0.000126, :before_filters_time=>8.0e-06, :after_filters_time=>6.0e-06}
108
+ ~ {:action_time=>0.000643, :before_filters_time=>5.0e-06, :after_filters_time=>6.0e-06}
109
+ ~ {:action_time=>0.000609, :before_filters_time=>6.0e-06, :after_filters_time=>5.0e-06}
110
+ ~ Not Using Sessions
111
+ ~ {:action_time=>0.000176, :before_filters_time=>8.0e-06, :after_filters_time=>6.0e-06}
112
+ ~ {:action_time=>0.000637, :before_filters_time=>5.0e-06, :after_filters_time=>6.0e-06}
113
+ ~ {:action_time=>0.00061, :before_filters_time=>7.0e-06, :after_filters_time=>5.0e-06}
114
+ ~ Not Using Sessions
115
+ ~ {:action_time=>0.000163, :before_filters_time=>1.2e-05, :after_filters_time=>6.0e-06}
116
+ ~ {:action_time=>0.0011, :before_filters_time=>5.0e-06, :after_filters_time=>8.0e-06}
117
+ ~ {:action_time=>0.000641, :before_filters_time=>7.0e-06, :after_filters_time=>6.0e-06}
118
+ ~ Not Using Sessions
119
+ ~ {:action_time=>0.000115, :before_filters_time=>7.0e-06, :after_filters_time=>5.0e-06}
120
+ ~ {:action_time=>0.000539, :before_filters_time=>5.0e-06, :after_filters_time=>6.0e-06}
121
+ ~ {:action_time=>0.000659, :before_filters_time=>7.0e-06, :after_filters_time=>6.0e-06}
122
+ ~ Not Using Sessions
123
+ ~ {:action_time=>0.001064, :before_filters_time=>0.000547, :after_filters_time=>6.0e-06}
124
+ ~ {:action_time=>0.001412, :before_filters_time=>6.0e-06, :after_filters_time=>5.0e-06}
125
+ ~ {:action_time=>0.00065, :before_filters_time=>8.0e-06, :after_filters_time=>6.0e-06}
126
+ ~ Not Using Sessions
127
+ ~ {:action_time=>0.000116, :before_filters_time=>7.0e-06, :after_filters_time=>5.0e-06}
128
+ ~ {:action_time=>0.000581, :before_filters_time=>5.0e-06, :after_filters_time=>6.0e-06}
129
+ ~ {:action_time=>0.000547, :before_filters_time=>7.0e-06, :after_filters_time=>6.0e-06}
130
+ ~ Not Using Sessions
131
+ ~ {:action_time=>0.000143, :before_filters_time=>9.0e-06, :after_filters_time=>6.0e-06}
132
+ ~ {:action_time=>0.002495, :before_filters_time=>5.0e-06, :after_filters_time=>6.0e-06}
133
+ ~ {:action_time=>0.000554, :before_filters_time=>7.0e-06, :after_filters_time=>6.0e-06}
134
+ ~ Not Using Sessions
135
+ ~ {:action_time=>0.000312, :before_filters_time=>8.0e-06, :after_filters_time=>6.0e-06}
136
+ ~ {:action_time=>0.001373, :before_filters_time=>5.0e-06, :after_filters_time=>6.0e-06}
137
+ ~ {:action_time=>0.001056, :before_filters_time=>7.0e-06, :after_filters_time=>6.0e-06}
138
+ ~ Not Using Sessions
139
+ ~ {:action_time=>0.000142, :before_filters_time=>7.0e-06, :after_filters_time=>5.0e-06}
140
+ ~ {:action_time=>0.001552, :before_filters_time=>5.0e-06, :after_filters_time=>6.0e-06}
141
+ ~ {:action_time=>0.000548, :before_filters_time=>6.0e-06, :after_filters_time=>6.0e-06}
142
+ ~ Not Using Sessions
143
+ ~ {:action_time=>0.000127, :before_filters_time=>8.0e-06, :after_filters_time=>5.0e-06}
144
+ ~ {:action_time=>0.000558, :before_filters_time=>5.0e-06, :after_filters_time=>6.0e-06}
145
+ ~ {:action_time=>0.000553, :before_filters_time=>7.0e-06, :after_filters_time=>5.0e-06}
146
+ ~ Not Using Sessions
147
+ ~ {:action_time=>0.000567, :before_filters_time=>7.0e-06, :after_filters_time=>0.000106}
148
+ ~ {:action_time=>0.001892, :before_filters_time=>5.0e-06, :after_filters_time=>6.0e-06}
149
+ ~ {:action_time=>0.000555, :before_filters_time=>7.0e-06, :after_filters_time=>6.0e-06}
150
+ ~ Not Using Sessions
151
+ ~ {:action_time=>0.000577, :before_filters_time=>9.0e-06, :after_filters_time=>5.0e-06}
152
+ ~ {:action_time=>0.001298, :before_filters_time=>0.000138, :after_filters_time=>5.0e-06}
153
+ ~ {:action_time=>0.000562, :before_filters_time=>7.0e-06, :after_filters_time=>6.0e-06}
154
+ ~ Not Using Sessions
155
+ ~ {:action_time=>0.000791, :before_filters_time=>6.3e-05, :after_filters_time=>6.0e-06}
156
+ ~ {:action_time=>0.000691, :before_filters_time=>5.0e-06, :after_filters_time=>6.0e-06}
157
+ ~ {:action_time=>0.000742, :before_filters_time=>7.0e-06, :after_filters_time=>6.0e-06}
158
+ ~ Not Using Sessions
159
+ ~ {:action_time=>0.001106, :before_filters_time=>8.0e-06, :after_filters_time=>6.0e-06}
160
+ ~ {:action_time=>0.002273, :before_filters_time=>5.0e-06, :after_filters_time=>7.0e-06}
161
+ ~ {:action_time=>0.000593, :before_filters_time=>7.0e-06, :after_filters_time=>6.0e-06}
162
+ ~ Not Using Sessions
163
+ ~ {:action_time=>0.000122, :before_filters_time=>8.0e-06, :after_filters_time=>5.0e-06}
164
+ ~ {:action_time=>0.00059, :before_filters_time=>5.0e-06, :after_filters_time=>6.0e-06}
165
+ ~ {:action_time=>0.000591, :before_filters_time=>6.0e-06, :after_filters_time=>6.0e-06}
166
+ ~ Not Using Sessions
167
+ ~ {:action_time=>0.000131, :before_filters_time=>7.0e-06, :after_filters_time=>5.0e-06}
168
+ ~ {:action_time=>0.001429, :before_filters_time=>0.000548, :after_filters_time=>6.0e-06}
169
+ ~ {:action_time=>0.000548, :before_filters_time=>6.0e-06, :after_filters_time=>6.0e-06}
170
+ ~ Not Using Sessions
171
+ ~ {:action_time=>0.000401, :before_filters_time=>8.0e-06, :after_filters_time=>5.0e-06}
172
+ ~ {:action_time=>0.000596, :before_filters_time=>4.0e-06, :after_filters_time=>6.0e-06}
173
+ ~ {:action_time=>0.001209, :before_filters_time=>7.0e-06, :after_filters_time=>6.0e-06}
174
+ ~ Not Using Sessions
175
+ ~ {:action_time=>0.000599, :before_filters_time=>9.0e-06, :after_filters_time=>6.0e-06}
176
+ ~ {:action_time=>0.000557, :before_filters_time=>5.0e-06, :after_filters_time=>6.0e-06}
177
+ ~ {:action_time=>0.000561, :before_filters_time=>7.0e-06, :after_filters_time=>7.0e-06}
178
+ ~ Not Using Sessions
179
+ ~ {:action_time=>0.000121, :before_filters_time=>7.0e-06, :after_filters_time=>5.0e-06}
180
+ ~ {:action_time=>0.000552, :before_filters_time=>4.0e-06, :after_filters_time=>6.0e-06}
181
+ ~ {:action_time=>0.000563, :before_filters_time=>7.0e-06, :after_filters_time=>6.0e-06}
182
+ ~ Not Using Sessions
183
+ ~ {:action_time=>0.000115, :before_filters_time=>8.0e-06, :after_filters_time=>6.0e-06}
184
+ ~ {:action_time=>0.000709, :before_filters_time=>5.0e-06, :after_filters_time=>5.0e-06}
185
+ ~ {:action_time=>0.000584, :before_filters_time=>6.0e-06, :after_filters_time=>9.0e-06}
186
+ ~ Not Using Sessions
187
+ ~ {:action_time=>0.000128, :before_filters_time=>8.0e-06, :after_filters_time=>5.0e-06}
188
+ ~ {:action_time=>0.000608, :before_filters_time=>5.0e-06, :after_filters_time=>6.0e-06}
189
+ ~ {:action_time=>0.000556, :before_filters_time=>6.0e-06, :after_filters_time=>6.0e-06}
190
+ ~ Not Using Sessions
191
+ ~ {:action_time=>0.000124, :before_filters_time=>8.0e-06, :after_filters_time=>5.0e-06}
192
+ ~ {:action_time=>0.000581, :before_filters_time=>5.0e-06, :after_filters_time=>5.0e-06}
193
+ ~ {:action_time=>0.003413, :before_filters_time=>6.0e-06, :after_filters_time=>7.0e-06}
194
+ ~ Not Using Sessions
195
+ ~ {:action_time=>0.000118, :before_filters_time=>8.0e-06, :after_filters_time=>5.0e-06}
196
+ ~ {:action_time=>0.000558, :before_filters_time=>5.0e-06, :after_filters_time=>6.0e-06}
197
+ ~ {:action_time=>0.000609, :before_filters_time=>8.0e-06, :after_filters_time=>6.0e-06}
198
+ ~ Not Using Sessions
199
+ ~ {:action_time=>0.000771, :before_filters_time=>1.1e-05, :after_filters_time=>5.0e-06}
200
+ ~ {:action_time=>0.001582, :before_filters_time=>2.5e-05, :after_filters_time=>5.0e-06}
201
+ ~ {:action_time=>0.000697, :before_filters_time=>6.0e-06, :after_filters_time=>6.0e-06}
202
+ ~ Not Using Sessions
203
+ ~ {:action_time=>0.00012, :before_filters_time=>7.0e-06, :after_filters_time=>5.0e-06}
204
+ ~ {:action_time=>0.001763, :before_filters_time=>5.0e-06, :after_filters_time=>6.0e-06}
205
+ ~ {:action_time=>0.001727, :before_filters_time=>7.0e-06, :after_filters_time=>6.0e-06}
206
+ ~ Not Using Sessions
207
+ ~ {:action_time=>0.000631, :before_filters_time=>7.0e-06, :after_filters_time=>0.000116}
208
+ ~ {:action_time=>0.000565, :before_filters_time=>5.0e-06, :after_filters_time=>6.0e-06}
209
+ ~ {:action_time=>0.000581, :before_filters_time=>7.0e-06, :after_filters_time=>6.0e-06}
210
+ ~ Not Using Sessions
211
+ ~ {:before_filters_time=>7.0e-06, :after_filters_time=>5.0e-06, :action_time=>0.000116}
212
+ ~ {:before_filters_time=>5.0e-06, :after_filters_time=>5.0e-06, :action_time=>0.000534}
213
+ ~ {:before_filters_time=>6.0e-06, :after_filters_time=>6.0e-06, :action_time=>0.000534}
214
+ ~ Not Using Sessions
215
+ ~ {:before_filters_time=>7.0e-06, :after_filters_time=>5.0e-06, :action_time=>0.000115}
216
+ ~ {:before_filters_time=>6.0e-06, :after_filters_time=>5.0e-06, :action_time=>0.000547}
217
+ ~ {:before_filters_time=>6.0e-06, :after_filters_time=>6.0e-06, :action_time=>0.000525}
218
+ ~ Not Using Sessions
219
+ ~ {:before_filters_time=>7.0e-06, :after_filters_time=>6.0e-06, :action_time=>6.7e-05}
220
+ ~ {:before_filters_time=>5.0e-06, :after_filters_time=>5.0e-06, :action_time=>0.000535}
221
+ ~ {:before_filters_time=>5.0e-06, :after_filters_time=>5.0e-06, :action_time=>0.000522}
222
+ ~ Not Using Sessions
223
+ ~ {:before_filters_time=>8.0e-06, :after_filters_time=>6.0e-06, :action_time=>7.1e-05}
224
+ ~ {:before_filters_time=>6.0e-06, :after_filters_time=>5.0e-06, :action_time=>0.000535}
225
+ ~ {:before_filters_time=>6.0e-06, :after_filters_time=>6.0e-06, :action_time=>0.000528}
226
+ ~ Not Using Sessions
227
+ ~ {:before_filters_time=>8.0e-06, :after_filters_time=>5.0e-06, :action_time=>7.3e-05}
228
+ ~ {:before_filters_time=>5.0e-06, :after_filters_time=>5.0e-06, :action_time=>0.000553}
229
+ ~ {:before_filters_time=>6.0e-06, :after_filters_time=>5.0e-06, :action_time=>0.000529}
230
+ ~ Not Using Sessions
231
+ ~ {:before_filters_time=>7.0e-06, :after_filters_time=>5.0e-06, :action_time=>7.2e-05}
232
+ ~ {:before_filters_time=>5.0e-06, :after_filters_time=>5.0e-06, :action_time=>0.000619}
233
+ ~ {:before_filters_time=>6.0e-06, :after_filters_time=>5.0e-06, :action_time=>0.000582}
234
+ ~ Not Using Sessions
235
+ ~ {:action_time=>7.4e-05, :before_filters_time=>7.0e-06, :after_filters_time=>6.0e-06}
236
+ ~ {:action_time=>0.000543, :before_filters_time=>5.0e-06, :after_filters_time=>4.0e-06}
237
+ ~ {:action_time=>0.000534, :before_filters_time=>6.0e-06, :after_filters_time=>6.0e-06}
238
+ ~ Not Using Sessions
239
+ ~ {:action_time=>7.5e-05, :before_filters_time=>7.0e-06, :after_filters_time=>5.0e-06}
240
+ ~ {:action_time=>0.000552, :before_filters_time=>8.0e-06, :after_filters_time=>5.0e-06}
241
+ ~ {:action_time=>0.000565, :before_filters_time=>7.0e-06, :after_filters_time=>6.0e-06}
242
+ ~ Not Using Sessions
243
+ ~ {:action_time=>7.7e-05, :before_filters_time=>7.0e-06, :after_filters_time=>6.0e-06}
244
+ ~ {:action_time=>0.002381, :before_filters_time=>5.0e-06, :after_filters_time=>6.0e-06}
245
+ ~ {:action_time=>0.000583, :before_filters_time=>7.0e-06, :after_filters_time=>6.0e-06}
246
+ ~ Not Using Sessions
247
+ ~ {:action_time=>7.8e-05, :before_filters_time=>7.0e-06, :after_filters_time=>6.0e-06}
248
+ ~ {:action_time=>0.000555, :before_filters_time=>5.0e-06, :after_filters_time=>5.0e-06}
249
+ ~ {:action_time=>0.000591, :before_filters_time=>7.0e-06, :after_filters_time=>6.0e-06}
250
+ ~ Not Using Sessions
251
+ ~ {:action_time=>7.4e-05, :before_filters_time=>7.0e-06, :after_filters_time=>5.0e-06}
252
+ ~ {:action_time=>0.000561, :before_filters_time=>5.0e-06, :after_filters_time=>5.0e-06}
253
+ ~ {:action_time=>0.000533, :before_filters_time=>6.0e-06, :after_filters_time=>5.0e-06}
254
+ ~ Not Using Sessions
255
+ ~ {:before_filters_time=>7.0e-06, :after_filters_time=>6.0e-06, :action_time=>7.5e-05}
256
+ ~ {:before_filters_time=>5.0e-06, :after_filters_time=>5.0e-06, :action_time=>0.000634}
257
+ ~ {:before_filters_time=>7.0e-06, :after_filters_time=>6.0e-06, :action_time=>0.000643}
258
+ ~ Not Using Sessions
259
+ ~ {:before_filters_time=>8.0e-06, :after_filters_time=>5.0e-06, :action_time=>7.6e-05}
260
+ ~ {:before_filters_time=>5.0e-06, :after_filters_time=>5.0e-06, :action_time=>0.000636}
261
+ ~ {:before_filters_time=>6.0e-06, :after_filters_time=>5.0e-06, :action_time=>0.00059}
262
+ ~ Not Using Sessions
263
+ ~ {:before_filters_time=>7.0e-06, :after_filters_time=>5.0e-06, :action_time=>7.4e-05}
264
+ ~ {:before_filters_time=>5.0e-06, :after_filters_time=>5.0e-06, :action_time=>0.000615}
265
+ ~ {:before_filters_time=>6.0e-06, :after_filters_time=>7.0e-06, :action_time=>0.000601}