actionpack 2.3.5 → 2.3.6

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of actionpack might be problematic. Click here for more details.

Files changed (587) hide show
  1. data/CHANGELOG +45 -0
  2. data/MIT-LICENSE +1 -1
  3. data/README +7 -7
  4. data/Rakefile +2 -2
  5. data/lib/action_controller.rb +2 -2
  6. data/lib/action_controller/assertions/response_assertions.rb +18 -9
  7. data/lib/action_controller/base.rb +14 -14
  8. data/lib/action_controller/caching/fragments.rb +6 -6
  9. data/lib/action_controller/cookies.rb +96 -0
  10. data/lib/action_controller/failsafe.rb +1 -0
  11. data/lib/action_controller/flash.rb +42 -0
  12. data/lib/action_controller/integration.rb +5 -1
  13. data/lib/action_controller/polymorphic_routes.rb +1 -1
  14. data/lib/action_controller/rack_lint_patch.rb +1 -1
  15. data/lib/action_controller/rescue.rb +2 -2
  16. data/lib/action_controller/response.rb +4 -7
  17. data/lib/action_controller/routing/route_set.rb +1 -0
  18. data/lib/action_controller/session/abstract_store.rb +6 -0
  19. data/lib/action_controller/session/cookie_store.rb +6 -0
  20. data/lib/action_controller/templates/rescues/_trace.erb +2 -2
  21. data/lib/action_controller/url_rewriter.rb +4 -1
  22. data/lib/action_pack.rb +1 -1
  23. data/lib/action_pack/version.rb +1 -1
  24. data/lib/action_view.rb +3 -3
  25. data/lib/action_view/helpers/active_record_helper.rb +11 -11
  26. data/lib/action_view/helpers/asset_tag_helper.rb +2 -2
  27. data/lib/action_view/helpers/capture_helper.rb +2 -2
  28. data/lib/action_view/helpers/date_helper.rb +12 -11
  29. data/lib/action_view/helpers/debug_helper.rb +2 -2
  30. data/lib/action_view/helpers/form_helper.rb +49 -12
  31. data/lib/action_view/helpers/form_options_helper.rb +3 -4
  32. data/lib/action_view/helpers/form_tag_helper.rb +7 -4
  33. data/lib/action_view/helpers/javascript_helper.rb +1 -1
  34. data/lib/action_view/helpers/number_helper.rb +1 -1
  35. data/lib/action_view/helpers/prototype_helper.rb +2 -2
  36. data/lib/action_view/helpers/raw_output_helper.rb +2 -2
  37. data/lib/action_view/helpers/sanitize_helper.rb +2 -10
  38. data/lib/action_view/helpers/tag_helper.rb +6 -5
  39. data/lib/action_view/helpers/text_helper.rb +5 -5
  40. data/lib/action_view/helpers/translation_helper.rb +6 -4
  41. data/lib/action_view/helpers/url_helper.rb +9 -11
  42. data/lib/action_view/partials.rb +2 -1
  43. data/lib/action_view/paths.rb +8 -0
  44. data/lib/action_view/renderable.rb +16 -2
  45. data/lib/action_view/template_handlers/erb.rb +3 -5
  46. data/lib/action_view/test_case.rb +2 -2
  47. data/test/abstract_unit.rb +3 -3
  48. data/test/controller/action_pack_assertions_test.rb +3 -1
  49. data/test/controller/assert_select_test.rb +1 -0
  50. data/test/controller/caching_test.rb +16 -2
  51. data/test/controller/cookie_test.rb +37 -1
  52. data/test/controller/flash_test.rb +28 -1
  53. data/test/controller/integration_test.rb +0 -1
  54. data/test/controller/localized_templates_test.rb +24 -0
  55. data/test/controller/output_escaping_test.rb +19 -0
  56. data/test/controller/rack_test.rb +1 -4
  57. data/test/controller/render_test.rb +11 -2
  58. data/test/controller/rescue_test.rb +8 -2
  59. data/test/controller/routing_test.rb +1 -0
  60. data/test/controller/send_file_test.rb +1 -1
  61. data/test/controller/session/cookie_store_test.rb +2 -2
  62. data/test/controller/url_rewriter_test.rb +10 -6
  63. data/test/fixtures/localized/hello_world.de.html +1 -0
  64. data/test/fixtures/localized/hello_world.en.html +1 -0
  65. data/test/fixtures/test/_customer_counter_with_as.erb +1 -0
  66. data/test/fixtures/test/_utf8_partial.html.erb +1 -0
  67. data/test/fixtures/test/_utf8_partial_magic.html.erb +2 -0
  68. data/test/fixtures/test/array_translation.erb +1 -0
  69. data/test/fixtures/test/scoped_array_translation.erb +1 -0
  70. data/test/fixtures/test/utf8.html.erb +4 -2
  71. data/test/fixtures/test/utf8_magic.html.erb +5 -0
  72. data/test/fixtures/test/utf8_magic_with_bare_partial.html.erb +5 -0
  73. data/test/template/active_record_helper_i18n_test.rb +9 -2
  74. data/test/template/asset_tag_helper_test.rb +0 -1
  75. data/test/template/date_helper_test.rb +118 -0
  76. data/test/template/erb_util_test.rb +12 -0
  77. data/test/template/form_helper_test.rb +57 -3
  78. data/test/template/form_tag_helper_test.rb +15 -9
  79. data/test/template/render_test.rb +47 -8
  80. data/test/template/text_helper_test.rb +26 -1
  81. data/test/template/translation_helper_test.rb +20 -2
  82. data/test/template/url_helper_test.rb +20 -1
  83. data/test/tmp/RackMultipart20100114-2850-18awt99-0 +1 -0
  84. data/test/tmp/RackMultipart20100114-2850-19mxvfk-0 +0 -0
  85. data/test/tmp/RackMultipart20100114-2850-1il5j9y-0 +1 -0
  86. data/test/tmp/RackMultipart20100114-2850-1kr4fph-0 +1 -0
  87. data/test/tmp/RackMultipart20100114-2850-1whjzgd-0 +0 -0
  88. data/test/tmp/RackMultipart20100114-2850-2oxu19-0 +1 -0
  89. data/test/tmp/RackMultipart20100114-2850-34lp5r-0 +0 -0
  90. data/test/tmp/RackMultipart20100114-2850-bqfazg-0 +1 -0
  91. data/test/tmp/RackMultipart20100114-2850-vbyi8g-0 +0 -0
  92. data/test/tmp/RackMultipart20100127-16318-140g9v4-0 +1 -0
  93. data/test/tmp/RackMultipart20100127-16318-1gc081d-0 +0 -0
  94. data/test/tmp/RackMultipart20100127-16318-1hs9edk-0 +0 -0
  95. data/test/tmp/RackMultipart20100127-16318-1xv7yvp-0 +1 -0
  96. data/test/tmp/RackMultipart20100127-16318-9eyfmo-0 +1 -0
  97. data/test/tmp/RackMultipart20100127-16318-o81drl-0 +0 -0
  98. data/test/tmp/RackMultipart20100127-16318-ubd6vm-0 +1 -0
  99. data/test/tmp/RackMultipart20100127-16318-xltjpf-0 +1 -0
  100. data/test/tmp/RackMultipart20100127-16318-z0s5v6-0 +0 -0
  101. data/test/tmp/RackMultipart20100131-1041-1fpxdo1-0 +1 -0
  102. data/test/tmp/RackMultipart20100131-1041-1hgld51-0 +1 -0
  103. data/test/tmp/RackMultipart20100131-1041-1sfw61g-0 +0 -0
  104. data/test/tmp/RackMultipart20100131-1041-1txiwx-0 +0 -0
  105. data/test/tmp/RackMultipart20100131-1041-3nxhtk-0 +1 -0
  106. data/test/tmp/RackMultipart20100131-1041-msmvjp-0 +1 -0
  107. data/test/tmp/RackMultipart20100131-1041-snlih6-0 +0 -0
  108. data/test/tmp/RackMultipart20100131-1041-utmx6r-0 +1 -0
  109. data/test/tmp/RackMultipart20100131-1041-vr2eir-0 +0 -0
  110. data/test/tmp/RackMultipart20100131-1200-116kivk-0 +1 -0
  111. data/test/tmp/RackMultipart20100131-1200-13yj0g7-0 +0 -0
  112. data/test/tmp/RackMultipart20100131-1200-1b0awcl-0 +1 -0
  113. data/test/tmp/RackMultipart20100131-1200-1qc4a1o-0 +0 -0
  114. data/test/tmp/RackMultipart20100131-1200-1sch05j-0 +1 -0
  115. data/test/tmp/RackMultipart20100131-1200-2wwvjw-0 +1 -0
  116. data/test/tmp/RackMultipart20100131-1200-4ybied-0 +0 -0
  117. data/test/tmp/RackMultipart20100131-1200-n4jwgg-0 +0 -0
  118. data/test/tmp/RackMultipart20100131-1200-nqwg4i-0 +1 -0
  119. data/test/tmp/RackMultipart20100131-1566-10hgtsj-0 +0 -0
  120. data/test/tmp/RackMultipart20100131-1566-1m2ix3r-0 +1 -0
  121. data/test/tmp/RackMultipart20100131-1566-1szdt3p-0 +0 -0
  122. data/test/tmp/RackMultipart20100131-1566-6cb9xb-0 +0 -0
  123. data/test/tmp/RackMultipart20100131-1566-aervb6-0 +1 -0
  124. data/test/tmp/RackMultipart20100131-1566-o57d30-0 +1 -0
  125. data/test/tmp/RackMultipart20100131-1566-q06s4u-0 +1 -0
  126. data/test/tmp/RackMultipart20100131-1566-r3eau5-0 +1 -0
  127. data/test/tmp/RackMultipart20100131-1566-rhvbsr-0 +0 -0
  128. data/test/tmp/RackMultipart20100131-2176-19tk67i-0 +0 -0
  129. data/test/tmp/RackMultipart20100131-2176-1iuhegu-0 +0 -0
  130. data/test/tmp/RackMultipart20100131-2176-1mfu303-0 +1 -0
  131. data/test/tmp/RackMultipart20100131-2176-1qv96rf-0 +1 -0
  132. data/test/tmp/RackMultipart20100131-2176-7rae4i-0 +1 -0
  133. data/test/tmp/RackMultipart20100131-2176-g7hqdt-0 +0 -0
  134. data/test/tmp/RackMultipart20100131-2176-spxexk-0 +1 -0
  135. data/test/tmp/RackMultipart20100131-2176-x57r68-0 +0 -0
  136. data/test/tmp/RackMultipart20100131-2176-xx8aqr-0 +1 -0
  137. data/test/tmp/RackMultipart20100131-2251-1kx4y7u-0 +1 -0
  138. data/test/tmp/RackMultipart20100131-2251-1p70d6c-0 +1 -0
  139. data/test/tmp/RackMultipart20100131-2251-1w181g4-0 +1 -0
  140. data/test/tmp/RackMultipart20100131-2251-9dl2hy-0 +1 -0
  141. data/test/tmp/RackMultipart20100131-2251-dd4aqa-0 +0 -0
  142. data/test/tmp/RackMultipart20100131-2251-dq1bs7-0 +0 -0
  143. data/test/tmp/RackMultipart20100131-2251-rjlwid-0 +0 -0
  144. data/test/tmp/RackMultipart20100131-2251-svv2my-0 +0 -0
  145. data/test/tmp/RackMultipart20100131-2251-znyywm-0 +1 -0
  146. data/test/tmp/RackMultipart20100131-2563-1b9atyq-0 +1 -0
  147. data/test/tmp/RackMultipart20100131-2563-1j4bk06-0 +1 -0
  148. data/test/tmp/RackMultipart20100131-2563-1nd3jkk-0 +0 -0
  149. data/test/tmp/RackMultipart20100131-2563-1ud0b43-0 +1 -0
  150. data/test/tmp/RackMultipart20100131-2563-2t9aus-0 +1 -0
  151. data/test/tmp/RackMultipart20100131-2563-4xhtq9-0 +0 -0
  152. data/test/tmp/RackMultipart20100131-2563-80xjuq-0 +1 -0
  153. data/test/tmp/RackMultipart20100131-2563-du6204-0 +0 -0
  154. data/test/tmp/RackMultipart20100131-2563-m2xw0u-0 +0 -0
  155. data/test/tmp/RackMultipart20100131-3324-1bz902a-0 +1 -0
  156. data/test/tmp/RackMultipart20100131-3324-1cj3c2q-0 +1 -0
  157. data/test/tmp/RackMultipart20100131-3324-1dcwnmh-0 +1 -0
  158. data/test/tmp/RackMultipart20100131-3324-1qu1vvo-0 +1 -0
  159. data/test/tmp/RackMultipart20100131-3324-1wksfd7-0 +0 -0
  160. data/test/tmp/RackMultipart20100131-3324-8bmth5-0 +0 -0
  161. data/test/tmp/RackMultipart20100131-3324-c0sen5-0 +1 -0
  162. data/test/tmp/RackMultipart20100131-3324-mhg9zb-0 +0 -0
  163. data/test/tmp/RackMultipart20100131-3324-mram2k-0 +0 -0
  164. data/test/tmp/RackMultipart20100131-3712-11l26yb-0 +1 -0
  165. data/test/tmp/RackMultipart20100131-3712-18qhzz9-0 +1 -0
  166. data/test/tmp/RackMultipart20100131-3712-19efkti-0 +1 -0
  167. data/test/tmp/RackMultipart20100131-3712-1s6qbc-0 +1 -0
  168. data/test/tmp/RackMultipart20100131-3712-948hce-0 +0 -0
  169. data/test/tmp/RackMultipart20100131-3712-rliyfc-0 +0 -0
  170. data/test/tmp/RackMultipart20100131-3712-tvfxgh-0 +1 -0
  171. data/test/tmp/RackMultipart20100131-3712-ywjidy-0 +0 -0
  172. data/test/tmp/RackMultipart20100131-3712-zwa1yl-0 +0 -0
  173. data/test/tmp/RackMultipart20100131-4098-12u1n7m-0 +1 -0
  174. data/test/tmp/RackMultipart20100131-4098-188dwav-0 +0 -0
  175. data/test/tmp/RackMultipart20100131-4098-1a2nulg-0 +0 -0
  176. data/test/tmp/RackMultipart20100131-4098-1c9gbau-0 +1 -0
  177. data/test/tmp/RackMultipart20100131-4098-2923tu-0 +0 -0
  178. data/test/tmp/RackMultipart20100131-4098-he7nm8-0 +0 -0
  179. data/test/tmp/RackMultipart20100131-4098-nw5pcp-0 +1 -0
  180. data/test/tmp/RackMultipart20100131-4098-plj7cd-0 +1 -0
  181. data/test/tmp/RackMultipart20100131-4098-wha9du-0 +1 -0
  182. data/test/tmp/RackMultipart20100131-4178-10rjsef-0 +0 -0
  183. data/test/tmp/RackMultipart20100131-4178-13qqazs-0 +0 -0
  184. data/test/tmp/RackMultipart20100131-4178-1hpjqkl-0 +0 -0
  185. data/test/tmp/RackMultipart20100131-4178-1idjtdl-0 +1 -0
  186. data/test/tmp/RackMultipart20100131-4178-1ke1zpq-0 +1 -0
  187. data/test/tmp/RackMultipart20100131-4178-6y51hb-0 +1 -0
  188. data/test/tmp/RackMultipart20100131-4178-98i2o0-0 +1 -0
  189. data/test/tmp/RackMultipart20100131-4178-9k4jj6-0 +0 -0
  190. data/test/tmp/RackMultipart20100131-4178-zcxa4g-0 +1 -0
  191. data/test/tmp/RackMultipart20100131-4297-1moo7v9-0 +0 -0
  192. data/test/tmp/RackMultipart20100131-4297-1yxib1r-0 +0 -0
  193. data/test/tmp/RackMultipart20100131-4297-b239su-0 +0 -0
  194. data/test/tmp/RackMultipart20100131-4297-ht0qby-0 +1 -0
  195. data/test/tmp/RackMultipart20100131-4297-ia5rov-0 +1 -0
  196. data/test/tmp/RackMultipart20100131-4297-m6gof0-0 +1 -0
  197. data/test/tmp/RackMultipart20100131-4297-nm3rvt-0 +0 -0
  198. data/test/tmp/RackMultipart20100131-4297-qla73p-0 +1 -0
  199. data/test/tmp/RackMultipart20100131-4297-ylrtmu-0 +1 -0
  200. data/test/tmp/RackMultipart20100131-4434-11fsv9d-0 +0 -0
  201. data/test/tmp/RackMultipart20100131-4434-19ycsmr-0 +1 -0
  202. data/test/tmp/RackMultipart20100131-4434-1h0ws4q-0 +1 -0
  203. data/test/tmp/RackMultipart20100131-4434-1lszvv8-0 +0 -0
  204. data/test/tmp/RackMultipart20100131-4434-1ocgqu3-0 +1 -0
  205. data/test/tmp/RackMultipart20100131-4434-1ukqdfd-0 +1 -0
  206. data/test/tmp/RackMultipart20100131-4434-cq7rvl-0 +1 -0
  207. data/test/tmp/RackMultipart20100131-4434-f7jbl4-0 +0 -0
  208. data/test/tmp/RackMultipart20100131-4434-vxlg5t-0 +0 -0
  209. data/test/tmp/RackMultipart20100131-4544-1bf8inz-0 +1 -0
  210. data/test/tmp/RackMultipart20100131-4544-1vj44nb-0 +0 -0
  211. data/test/tmp/RackMultipart20100131-4544-20mdip-0 +1 -0
  212. data/test/tmp/RackMultipart20100131-4544-89y67y-0 +0 -0
  213. data/test/tmp/RackMultipart20100131-4544-gdbsui-0 +1 -0
  214. data/test/tmp/RackMultipart20100131-4544-ko8plt-0 +0 -0
  215. data/test/tmp/RackMultipart20100131-4544-ojykbo-0 +1 -0
  216. data/test/tmp/RackMultipart20100131-4544-r8sahr-0 +0 -0
  217. data/test/tmp/RackMultipart20100131-4544-uluv8k-0 +1 -0
  218. data/test/tmp/RackMultipart20100131-4655-11ovmuw-0 +0 -0
  219. data/test/tmp/RackMultipart20100131-4655-12iht5p-0 +1 -0
  220. data/test/tmp/RackMultipart20100131-4655-142j0ug-0 +0 -0
  221. data/test/tmp/RackMultipart20100131-4655-15affqj-0 +0 -0
  222. data/test/tmp/RackMultipart20100131-4655-1gv4gb4-0 +1 -0
  223. data/test/tmp/RackMultipart20100131-4655-1gwchw7-0 +1 -0
  224. data/test/tmp/RackMultipart20100131-4655-1hvqx5t-0 +1 -0
  225. data/test/tmp/RackMultipart20100131-4655-1jhgk7a-0 +1 -0
  226. data/test/tmp/RackMultipart20100131-4655-1yktury-0 +0 -0
  227. data/test/tmp/RackMultipart20100131-5244-13z86ip-0 +0 -0
  228. data/test/tmp/RackMultipart20100131-5244-17vpiv6-0 +0 -0
  229. data/test/tmp/RackMultipart20100131-5244-1a9w3e-0 +1 -0
  230. data/test/tmp/RackMultipart20100131-5244-1ox8g0l-0 +1 -0
  231. data/test/tmp/RackMultipart20100131-5244-1qrzlqz-0 +1 -0
  232. data/test/tmp/RackMultipart20100131-5244-g3mpli-0 +0 -0
  233. data/test/tmp/RackMultipart20100131-5244-gcl80c-0 +0 -0
  234. data/test/tmp/RackMultipart20100131-5244-jqk7el-0 +1 -0
  235. data/test/tmp/RackMultipart20100131-5244-st1ldm-0 +1 -0
  236. data/test/tmp/RackMultipart20100131-5383-10si01q-0 +0 -0
  237. data/test/tmp/RackMultipart20100131-5383-16ye4w3-0 +1 -0
  238. data/test/tmp/RackMultipart20100131-5383-1imlta8-0 +0 -0
  239. data/test/tmp/RackMultipart20100131-5383-1r3gvaw-0 +0 -0
  240. data/test/tmp/RackMultipart20100131-5383-3wialw-0 +1 -0
  241. data/test/tmp/RackMultipart20100131-5383-k16uor-0 +1 -0
  242. data/test/tmp/RackMultipart20100131-5383-oz1b3a-0 +0 -0
  243. data/test/tmp/RackMultipart20100131-5383-una84e-0 +1 -0
  244. data/test/tmp/RackMultipart20100131-5383-zk1hmz-0 +1 -0
  245. data/test/tmp/RackMultipart20100131-5711-12j0qy5-0 +1 -0
  246. data/test/tmp/RackMultipart20100131-5711-1cozdic-0 +0 -0
  247. data/test/tmp/RackMultipart20100131-5711-1kebrgm-0 +0 -0
  248. data/test/tmp/RackMultipart20100131-5711-1q3jt9q-0 +0 -0
  249. data/test/tmp/RackMultipart20100131-5711-6sv1xg-0 +1 -0
  250. data/test/tmp/RackMultipart20100131-5711-esxrbg-0 +0 -0
  251. data/test/tmp/RackMultipart20100131-5711-jfbr34-0 +1 -0
  252. data/test/tmp/RackMultipart20100131-5711-q1e91g-0 +1 -0
  253. data/test/tmp/RackMultipart20100131-5711-tdauxm-0 +1 -0
  254. data/test/tmp/RackMultipart20100131-91110-1196t1f-0 +1 -0
  255. data/test/tmp/RackMultipart20100131-91110-11tfgc4-0 +1 -0
  256. data/test/tmp/RackMultipart20100131-91110-19e4l6u-0 +0 -0
  257. data/test/tmp/RackMultipart20100131-91110-1m6i8r4-0 +0 -0
  258. data/test/tmp/RackMultipart20100131-91110-1nv9cn8-0 +1 -0
  259. data/test/tmp/RackMultipart20100131-91110-6gbf58-0 +0 -0
  260. data/test/tmp/RackMultipart20100131-91110-b7iewa-0 +1 -0
  261. data/test/tmp/RackMultipart20100131-91110-b8kbab-0 +0 -0
  262. data/test/tmp/RackMultipart20100131-91110-rq2ytl-0 +1 -0
  263. data/test/tmp/RackMultipart20100131-91876-1848spe-0 +1 -0
  264. data/test/tmp/RackMultipart20100131-91876-1u8xsmd-0 +0 -0
  265. data/test/tmp/RackMultipart20100131-91876-1vlruve-0 +0 -0
  266. data/test/tmp/RackMultipart20100131-91876-cbcvg1-0 +1 -0
  267. data/test/tmp/RackMultipart20100131-91876-jv0zd7-0 +1 -0
  268. data/test/tmp/RackMultipart20100131-91876-laype7-0 +1 -0
  269. data/test/tmp/RackMultipart20100131-91876-mswlj3-0 +1 -0
  270. data/test/tmp/RackMultipart20100131-91876-se56ms-0 +0 -0
  271. data/test/tmp/RackMultipart20100131-91876-t14psz-0 +0 -0
  272. data/test/tmp/RackMultipart20100131-93665-1cv0oop-0 +1 -0
  273. data/test/tmp/RackMultipart20100131-93665-1n0c582-0 +0 -0
  274. data/test/tmp/RackMultipart20100131-93665-1obpgzg-0 +1 -0
  275. data/test/tmp/RackMultipart20100131-93665-1pgbkl0-0 +1 -0
  276. data/test/tmp/RackMultipart20100131-93665-1udk862-0 +1 -0
  277. data/test/tmp/RackMultipart20100131-93665-9xxo6q-0 +0 -0
  278. data/test/tmp/RackMultipart20100131-93665-eawsec-0 +0 -0
  279. data/test/tmp/RackMultipart20100131-93665-g5rmm9-0 +0 -0
  280. data/test/tmp/RackMultipart20100131-93665-kdm9y0-0 +1 -0
  281. data/test/tmp/RackMultipart20100131-96270-10h26kt-0 +0 -0
  282. data/test/tmp/RackMultipart20100131-96270-1dtgwke-0 +1 -0
  283. data/test/tmp/RackMultipart20100131-96270-1pib5qg-0 +0 -0
  284. data/test/tmp/RackMultipart20100131-96270-1tfonee-0 +1 -0
  285. data/test/tmp/RackMultipart20100131-96270-1xoj9si-0 +0 -0
  286. data/test/tmp/RackMultipart20100131-96270-5kzssn-0 +0 -0
  287. data/test/tmp/RackMultipart20100131-96270-5qgi09-0 +1 -0
  288. data/test/tmp/RackMultipart20100131-96270-dlgdff-0 +1 -0
  289. data/test/tmp/RackMultipart20100131-96270-uky8ij-0 +1 -0
  290. data/test/tmp/RackMultipart20100131-96373-140mlqp-0 +1 -0
  291. data/test/tmp/RackMultipart20100131-96373-16du1gs-0 +1 -0
  292. data/test/tmp/RackMultipart20100131-96373-181k6zk-0 +1 -0
  293. data/test/tmp/RackMultipart20100131-96373-1f1xgl8-0 +0 -0
  294. data/test/tmp/RackMultipart20100131-96373-1v4tnat-0 +1 -0
  295. data/test/tmp/RackMultipart20100131-96373-5iwxty-0 +0 -0
  296. data/test/tmp/RackMultipart20100131-96373-nrglr4-0 +1 -0
  297. data/test/tmp/RackMultipart20100131-96373-tj67zf-0 +0 -0
  298. data/test/tmp/RackMultipart20100131-96373-y7mw5e-0 +0 -0
  299. data/test/tmp/RackMultipart20100131-96488-1c52jwo-0 +0 -0
  300. data/test/tmp/RackMultipart20100131-96488-1g4n5g3-0 +0 -0
  301. data/test/tmp/RackMultipart20100131-96488-1ih9vjx-0 +1 -0
  302. data/test/tmp/RackMultipart20100131-96488-1m67bqh-0 +1 -0
  303. data/test/tmp/RackMultipart20100131-96488-1sff2qf-0 +1 -0
  304. data/test/tmp/RackMultipart20100131-96488-1vxr0sz-0 +0 -0
  305. data/test/tmp/RackMultipart20100131-96488-f1va0r-0 +1 -0
  306. data/test/tmp/RackMultipart20100131-96488-godmi4-0 +0 -0
  307. data/test/tmp/RackMultipart20100131-96488-v7puqu-0 +1 -0
  308. data/test/tmp/RackMultipart20100131-96889-10srx2y-0 +1 -0
  309. data/test/tmp/RackMultipart20100131-96889-14sujbg-0 +1 -0
  310. data/test/tmp/RackMultipart20100131-96889-1edgzzr-0 +0 -0
  311. data/test/tmp/RackMultipart20100131-96889-1jtlvx0-0 +0 -0
  312. data/test/tmp/RackMultipart20100131-96889-1leo16l-0 +0 -0
  313. data/test/tmp/RackMultipart20100131-96889-1nroez0-0 +0 -0
  314. data/test/tmp/RackMultipart20100131-96889-2z4au4-0 +1 -0
  315. data/test/tmp/RackMultipart20100131-96889-v6dj39-0 +1 -0
  316. data/test/tmp/RackMultipart20100131-96889-z2owq5-0 +1 -0
  317. data/test/tmp/RackMultipart20100131-97178-1kzzmnx-0 +0 -0
  318. data/test/tmp/RackMultipart20100131-97178-1p48git-0 +0 -0
  319. data/test/tmp/RackMultipart20100131-97178-1pak2jq-0 +0 -0
  320. data/test/tmp/RackMultipart20100131-97178-1vb21z0-0 +1 -0
  321. data/test/tmp/RackMultipart20100131-97178-3pstpf-0 +1 -0
  322. data/test/tmp/RackMultipart20100131-97178-ah9j8g-0 +0 -0
  323. data/test/tmp/RackMultipart20100131-97178-dzgylu-0 +1 -0
  324. data/test/tmp/RackMultipart20100131-97178-eh8uuk-0 +1 -0
  325. data/test/tmp/RackMultipart20100131-97178-mompd7-0 +1 -0
  326. data/test/tmp/RackMultipart20100131-97404-11op195-0 +0 -0
  327. data/test/tmp/RackMultipart20100131-97404-15vgv5a-0 +0 -0
  328. data/test/tmp/RackMultipart20100131-97404-1ipzwm0-0 +1 -0
  329. data/test/tmp/RackMultipart20100131-97404-1je7x2p-0 +1 -0
  330. data/test/tmp/RackMultipart20100131-97404-1mb6juq-0 +0 -0
  331. data/test/tmp/RackMultipart20100131-97404-1uhf75x-0 +1 -0
  332. data/test/tmp/RackMultipart20100131-97404-4bkht5-0 +0 -0
  333. data/test/tmp/RackMultipart20100131-97404-8wsyqb-0 +1 -0
  334. data/test/tmp/RackMultipart20100131-97404-p5bwvt-0 +1 -0
  335. data/test/tmp/RackMultipart20100131-97860-134h0yk-0 +1 -0
  336. data/test/tmp/RackMultipart20100131-97860-137z1v8-0 +1 -0
  337. data/test/tmp/RackMultipart20100131-97860-1fxatvg-0 +1 -0
  338. data/test/tmp/RackMultipart20100131-97860-1rkrzj1-0 +0 -0
  339. data/test/tmp/RackMultipart20100131-97860-5aahhh-0 +0 -0
  340. data/test/tmp/RackMultipart20100131-97860-bk11df-0 +0 -0
  341. data/test/tmp/RackMultipart20100131-97860-bpt71-0 +0 -0
  342. data/test/tmp/RackMultipart20100131-97860-k5kib2-0 +1 -0
  343. data/test/tmp/RackMultipart20100131-97860-yj6uro-0 +1 -0
  344. data/test/tmp/RackMultipart20100131-97900-12zytln-0 +1 -0
  345. data/test/tmp/RackMultipart20100131-97900-1hpjwgc-0 +0 -0
  346. data/test/tmp/RackMultipart20100131-97900-1kuj8ok-0 +1 -0
  347. data/test/tmp/RackMultipart20100131-97900-1wtlnbe-0 +1 -0
  348. data/test/tmp/RackMultipart20100131-97900-66d1fg-0 +0 -0
  349. data/test/tmp/RackMultipart20100131-97900-m7hm3n-0 +1 -0
  350. data/test/tmp/RackMultipart20100131-97900-n2a8fd-0 +0 -0
  351. data/test/tmp/RackMultipart20100131-97900-y9kwnp-0 +1 -0
  352. data/test/tmp/RackMultipart20100131-97900-yu52kd-0 +0 -0
  353. data/test/tmp/RackMultipart20100131-97937-1fxbun8-0 +1 -0
  354. data/test/tmp/RackMultipart20100131-97937-1qjxhia-0 +1 -0
  355. data/test/tmp/RackMultipart20100131-97937-1vwp4fj-0 +1 -0
  356. data/test/tmp/RackMultipart20100131-97937-aha3dl-0 +0 -0
  357. data/test/tmp/RackMultipart20100131-97937-asyrei-0 +1 -0
  358. data/test/tmp/RackMultipart20100131-97937-d8rmsv-0 +1 -0
  359. data/test/tmp/RackMultipart20100131-97937-g9oy2w-0 +0 -0
  360. data/test/tmp/RackMultipart20100131-97937-lt544p-0 +0 -0
  361. data/test/tmp/RackMultipart20100131-97937-mgf4qa-0 +0 -0
  362. data/test/tmp/RackMultipart20100131-98521-1fdcemt-0 +0 -0
  363. data/test/tmp/RackMultipart20100131-98521-1l33j9z-0 +1 -0
  364. data/test/tmp/RackMultipart20100131-98521-1ohobk0-0 +0 -0
  365. data/test/tmp/RackMultipart20100131-98521-45jwmb-0 +1 -0
  366. data/test/tmp/RackMultipart20100131-98521-7vu49l-0 +1 -0
  367. data/test/tmp/RackMultipart20100131-98521-9kzlxx-0 +1 -0
  368. data/test/tmp/RackMultipart20100131-98521-cycfj-0 +0 -0
  369. data/test/tmp/RackMultipart20100131-98521-hhd1bf-0 +1 -0
  370. data/test/tmp/RackMultipart20100131-98521-iqvlrq-0 +0 -0
  371. data/test/tmp/RackMultipart20100201-6555-1ce2ok5-0 +1 -0
  372. data/test/tmp/RackMultipart20100201-6555-2rd8zm-0 +0 -0
  373. data/test/tmp/RackMultipart20100201-6555-9brifb-0 +0 -0
  374. data/test/tmp/RackMultipart20100201-6555-dcf8h0-0 +1 -0
  375. data/test/tmp/RackMultipart20100201-6555-meb4gi-0 +1 -0
  376. data/test/tmp/RackMultipart20100201-6555-sci6i5-0 +0 -0
  377. data/test/tmp/RackMultipart20100201-6555-sox363-0 +1 -0
  378. data/test/tmp/RackMultipart20100201-6555-x9kyyz-0 +0 -0
  379. data/test/tmp/RackMultipart20100201-6555-zqn4x6-0 +1 -0
  380. data/test/tmp/RackMultipart20100204-40252-123q4em-0 +1 -0
  381. data/test/tmp/RackMultipart20100204-40252-1jzjes5-0 +0 -0
  382. data/test/tmp/RackMultipart20100204-40252-1reve0y-0 +0 -0
  383. data/test/tmp/RackMultipart20100204-40252-1u2b3qm-0 +1 -0
  384. data/test/tmp/RackMultipart20100204-40252-3un54m-0 +1 -0
  385. data/test/tmp/RackMultipart20100204-40252-a2oh9b-0 +0 -0
  386. data/test/tmp/RackMultipart20100204-40252-od0run-0 +1 -0
  387. data/test/tmp/RackMultipart20100204-40252-qbgvnt-0 +0 -0
  388. data/test/tmp/RackMultipart20100204-40252-tey6cp-0 +1 -0
  389. data/test/tmp/RackMultipart20100204-40512-15nitzo-0 +0 -0
  390. data/test/tmp/RackMultipart20100204-40512-18g0pdd-0 +0 -0
  391. data/test/tmp/RackMultipart20100204-40512-1brd1j2-0 +1 -0
  392. data/test/tmp/RackMultipart20100204-40512-1fz7mb1-0 +0 -0
  393. data/test/tmp/RackMultipart20100204-40512-1n1muze-0 +1 -0
  394. data/test/tmp/RackMultipart20100204-40512-1q3r24f-0 +1 -0
  395. data/test/tmp/RackMultipart20100204-40512-1tnhl3y-0 +1 -0
  396. data/test/tmp/RackMultipart20100204-40512-okgtu4-0 +0 -0
  397. data/test/tmp/RackMultipart20100204-40512-qn5sg0-0 +1 -0
  398. data/test/tmp/RackMultipart20100204-57419-15yya1x-0 +1 -0
  399. data/test/tmp/RackMultipart20100204-57419-19m1c3d-0 +0 -0
  400. data/test/tmp/RackMultipart20100204-57419-1n7d3i6-0 +1 -0
  401. data/test/tmp/RackMultipart20100204-57419-1npqntd-0 +0 -0
  402. data/test/tmp/RackMultipart20100204-57419-bklpgc-0 +1 -0
  403. data/test/tmp/RackMultipart20100204-57419-ei91e5-0 +0 -0
  404. data/test/tmp/RackMultipart20100204-57419-g1hqwp-0 +1 -0
  405. data/test/tmp/RackMultipart20100204-57419-t7ag5k-0 +0 -0
  406. data/test/tmp/RackMultipart20100204-57419-xiebhk-0 +1 -0
  407. data/test/tmp/RackMultipart20100204-57658-16cfrux-0 +1 -0
  408. data/test/tmp/RackMultipart20100204-57658-19wbkan-0 +1 -0
  409. data/test/tmp/RackMultipart20100204-57658-1qptexw-0 +0 -0
  410. data/test/tmp/RackMultipart20100204-57658-1u2bpg8-0 +0 -0
  411. data/test/tmp/RackMultipart20100204-57658-1v8jrhq-0 +0 -0
  412. data/test/tmp/RackMultipart20100204-57658-48l4m0-0 +1 -0
  413. data/test/tmp/RackMultipart20100204-57658-hpw0o9-0 +1 -0
  414. data/test/tmp/RackMultipart20100204-57658-l75jof-0 +1 -0
  415. data/test/tmp/RackMultipart20100204-57658-t3or19-0 +0 -0
  416. data/test/tmp/RackMultipart20100204-57712-101mfz2-0 +1 -0
  417. data/test/tmp/RackMultipart20100204-57712-136zsqs-0 +0 -0
  418. data/test/tmp/RackMultipart20100204-57712-16ge0ra-0 +1 -0
  419. data/test/tmp/RackMultipart20100204-57712-18dppuc-0 +0 -0
  420. data/test/tmp/RackMultipart20100204-57712-1aj6ady-0 +0 -0
  421. data/test/tmp/RackMultipart20100204-57712-1nqkndh-0 +1 -0
  422. data/test/tmp/RackMultipart20100204-57712-1pngw5w-0 +1 -0
  423. data/test/tmp/RackMultipart20100204-57712-6lo90o-0 +1 -0
  424. data/test/tmp/RackMultipart20100204-57712-ufq7x-0 +0 -0
  425. data/test/tmp/RackMultipart20100204-58321-10lc3a6-0 +1 -0
  426. data/test/tmp/RackMultipart20100204-58321-15o8a4o-0 +0 -0
  427. data/test/tmp/RackMultipart20100204-58321-1sos76-0 +1 -0
  428. data/test/tmp/RackMultipart20100204-58321-26876u-0 +1 -0
  429. data/test/tmp/RackMultipart20100204-58321-hnz5b8-0 +0 -0
  430. data/test/tmp/RackMultipart20100204-58321-lrmvfa-0 +1 -0
  431. data/test/tmp/RackMultipart20100204-58321-q0ak2g-0 +1 -0
  432. data/test/tmp/RackMultipart20100204-58321-sa8wal-0 +0 -0
  433. data/test/tmp/RackMultipart20100204-58321-z7jxeq-0 +0 -0
  434. data/test/tmp/RackMultipart20100204-59702-1fdw43n-0 +1 -0
  435. data/test/tmp/RackMultipart20100204-59702-2hf4ld-0 +1 -0
  436. data/test/tmp/RackMultipart20100204-59702-2ldyxj-0 +0 -0
  437. data/test/tmp/RackMultipart20100204-59702-aqevfm-0 +1 -0
  438. data/test/tmp/RackMultipart20100204-59702-dpbv5t-0 +0 -0
  439. data/test/tmp/RackMultipart20100204-59702-ec8276-0 +1 -0
  440. data/test/tmp/RackMultipart20100204-59702-jn6ncc-0 +1 -0
  441. data/test/tmp/RackMultipart20100204-59702-m8xobr-0 +0 -0
  442. data/test/tmp/RackMultipart20100204-59702-q89plk-0 +0 -0
  443. data/test/tmp/RackMultipart20100204-59747-14sdb6-0 +1 -0
  444. data/test/tmp/RackMultipart20100204-59747-15742uk-0 +1 -0
  445. data/test/tmp/RackMultipart20100204-59747-15lp9kl-0 +0 -0
  446. data/test/tmp/RackMultipart20100204-59747-1a7ub6i-0 +0 -0
  447. data/test/tmp/RackMultipart20100204-59747-1i77fp1-0 +1 -0
  448. data/test/tmp/RackMultipart20100204-59747-1mfl7gf-0 +0 -0
  449. data/test/tmp/RackMultipart20100204-59747-1qrkt89-0 +0 -0
  450. data/test/tmp/RackMultipart20100204-59747-6biaui-0 +1 -0
  451. data/test/tmp/RackMultipart20100204-59747-m7iqd0-0 +1 -0
  452. data/test/tmp/RackMultipart20100204-60097-1kgjis5-0 +0 -0
  453. data/test/tmp/RackMultipart20100204-60097-1odv8os-0 +1 -0
  454. data/test/tmp/RackMultipart20100204-60097-1p5yvyk-0 +0 -0
  455. data/test/tmp/RackMultipart20100204-60097-43si9w-0 +1 -0
  456. data/test/tmp/RackMultipart20100204-60097-awjfar-0 +1 -0
  457. data/test/tmp/RackMultipart20100204-60097-d7g9gf-0 +1 -0
  458. data/test/tmp/RackMultipart20100204-60097-fmxwtb-0 +0 -0
  459. data/test/tmp/RackMultipart20100204-60097-i8r8ph-0 +0 -0
  460. data/test/tmp/RackMultipart20100204-60097-yv1urn-0 +1 -0
  461. data/test/tmp/RackMultipart20100204-60773-14k87gs-0 +1 -0
  462. data/test/tmp/RackMultipart20100204-60773-15uh5fc-0 +1 -0
  463. data/test/tmp/RackMultipart20100204-60773-1b4gi3-0 +1 -0
  464. data/test/tmp/RackMultipart20100204-60773-1g0sg6r-0 +1 -0
  465. data/test/tmp/RackMultipart20100204-60773-1jgjbwl-0 +0 -0
  466. data/test/tmp/RackMultipart20100204-60773-1kk50pp-0 +0 -0
  467. data/test/tmp/RackMultipart20100204-60773-1xktk0q-0 +0 -0
  468. data/test/tmp/RackMultipart20100204-60773-jcuq05-0 +1 -0
  469. data/test/tmp/RackMultipart20100204-60773-og04od-0 +0 -0
  470. data/test/tmp/RackMultipart20100205-69480-169yh4u-0 +1 -0
  471. data/test/tmp/RackMultipart20100205-69480-16ry3sk-0 +0 -0
  472. data/test/tmp/RackMultipart20100205-69480-1dm58eb-0 +1 -0
  473. data/test/tmp/RackMultipart20100205-69480-1e6dfel-0 +1 -0
  474. data/test/tmp/RackMultipart20100205-69480-1knio7h-0 +0 -0
  475. data/test/tmp/RackMultipart20100205-69480-1rxthf1-0 +1 -0
  476. data/test/tmp/RackMultipart20100205-69480-1sqp1p6-0 +1 -0
  477. data/test/tmp/RackMultipart20100205-69480-k3c5xi-0 +0 -0
  478. data/test/tmp/RackMultipart20100205-69480-y0o7bs-0 +0 -0
  479. data/test/tmp/RackMultipart20100205-89390-12t4t4h-0 +0 -0
  480. data/test/tmp/RackMultipart20100205-89390-18sku49-0 +1 -0
  481. data/test/tmp/RackMultipart20100205-89390-1aeaxrj-0 +0 -0
  482. data/test/tmp/RackMultipart20100205-89390-1ej1o6b-0 +0 -0
  483. data/test/tmp/RackMultipart20100205-89390-1qbye80-0 +1 -0
  484. data/test/tmp/RackMultipart20100205-89390-1t2reiw-0 +0 -0
  485. data/test/tmp/RackMultipart20100205-89390-2j4ebh-0 +1 -0
  486. data/test/tmp/RackMultipart20100205-89390-cqkz93-0 +1 -0
  487. data/test/tmp/RackMultipart20100205-89390-ehlxym-0 +1 -0
  488. data/test/tmp/RackMultipart20100207-41099-1db1yc7-0 +0 -0
  489. data/test/tmp/RackMultipart20100207-41099-1enfwih-0 +0 -0
  490. data/test/tmp/RackMultipart20100207-41099-1hiqogn-0 +1 -0
  491. data/test/tmp/RackMultipart20100207-41099-1n21xz7-0 +0 -0
  492. data/test/tmp/RackMultipart20100207-41099-1ofbaxj-0 +0 -0
  493. data/test/tmp/RackMultipart20100207-41099-1pqhw0q-0 +1 -0
  494. data/test/tmp/RackMultipart20100207-41099-1s6zxzw-0 +1 -0
  495. data/test/tmp/RackMultipart20100207-41099-asxuq9-0 +1 -0
  496. data/test/tmp/RackMultipart20100207-41099-eowd6o-0 +1 -0
  497. data/test/tmp/RackMultipart20100209-65426-10ag1jr-0 +1 -0
  498. data/test/tmp/RackMultipart20100209-65426-13zm3yu-0 +0 -0
  499. data/test/tmp/RackMultipart20100209-65426-1otg9r6-0 +0 -0
  500. data/test/tmp/RackMultipart20100209-65426-1rdz5v6-0 +1 -0
  501. data/test/tmp/RackMultipart20100209-65426-1usq2ff-0 +1 -0
  502. data/test/tmp/RackMultipart20100209-65426-1wxs8n7-0 +1 -0
  503. data/test/tmp/RackMultipart20100209-65426-4uffbj-0 +1 -0
  504. data/test/tmp/RackMultipart20100209-65426-a5hra7-0 +0 -0
  505. data/test/tmp/RackMultipart20100209-65426-ylpq1h-0 +0 -0
  506. data/test/tmp/RackMultipart20100209-65558-1bghj62-0 +0 -0
  507. data/test/tmp/RackMultipart20100209-65558-1fbovnp-0 +1 -0
  508. data/test/tmp/RackMultipart20100209-65558-1hfwl02-0 +1 -0
  509. data/test/tmp/RackMultipart20100209-65558-b35wyr-0 +0 -0
  510. data/test/tmp/RackMultipart20100209-65558-esd0f1-0 +1 -0
  511. data/test/tmp/RackMultipart20100209-65558-gq26ri-0 +0 -0
  512. data/test/tmp/RackMultipart20100209-65558-mwizdx-0 +1 -0
  513. data/test/tmp/RackMultipart20100209-65558-ntlzq6-0 +1 -0
  514. data/test/tmp/RackMultipart20100209-65558-yoxcgc-0 +0 -0
  515. data/test/tmp/RackMultipart20100212-43647-12bo3g0-0 +0 -0
  516. data/test/tmp/RackMultipart20100212-43647-133b4b8-0 +1 -0
  517. data/test/tmp/RackMultipart20100212-43647-1b2g7f7-0 +1 -0
  518. data/test/tmp/RackMultipart20100212-43647-1et2ima-0 +0 -0
  519. data/test/tmp/RackMultipart20100212-43647-1thip8b-0 +1 -0
  520. data/test/tmp/RackMultipart20100212-43647-1x05hpf-0 +1 -0
  521. data/test/tmp/RackMultipart20100212-43647-cbseb3-0 +0 -0
  522. data/test/tmp/RackMultipart20100212-43647-mybv0k-0 +1 -0
  523. data/test/tmp/RackMultipart20100212-43647-scxg3k-0 +0 -0
  524. data/test/tmp/RackMultipart20100316-26215-15fvlkf-0 +1 -0
  525. data/test/tmp/RackMultipart20100316-26215-15ms9t8-0 +0 -0
  526. data/test/tmp/RackMultipart20100316-26215-196k138-0 +0 -0
  527. data/test/tmp/RackMultipart20100316-26215-1qbnikd-0 +1 -0
  528. data/test/tmp/RackMultipart20100316-26215-1tey31-0 +1 -0
  529. data/test/tmp/RackMultipart20100316-26215-dp0rwx-0 +0 -0
  530. data/test/tmp/RackMultipart20100316-26215-lmfp1-0 +1 -0
  531. data/test/tmp/RackMultipart20100316-26215-njsjmn-0 +0 -0
  532. data/test/tmp/RackMultipart20100316-26215-z39dzf-0 +1 -0
  533. data/test/tmp/mona_lisa.jpg20100114-2850-1t73ev7-0 +0 -0
  534. data/test/tmp/mona_lisa.jpg20100127-16318-1bffb05-0 +0 -0
  535. data/test/tmp/mona_lisa.jpg20100131-1041-1rvua2k-0 +0 -0
  536. data/test/tmp/mona_lisa.jpg20100131-1200-i3rods-0 +0 -0
  537. data/test/tmp/mona_lisa.jpg20100131-1566-18mcqh9-0 +0 -0
  538. data/test/tmp/mona_lisa.jpg20100131-2176-1t3bsp-0 +0 -0
  539. data/test/tmp/mona_lisa.jpg20100131-2251-1tz4wqa-0 +0 -0
  540. data/test/tmp/mona_lisa.jpg20100131-2563-ohvnnb-0 +0 -0
  541. data/test/tmp/mona_lisa.jpg20100131-3076-m9pk9y-0 +0 -0
  542. data/test/tmp/mona_lisa.jpg20100131-3324-9rpzdj-0 +0 -0
  543. data/test/tmp/mona_lisa.jpg20100131-3712-wf4b9m-0 +0 -0
  544. data/test/tmp/mona_lisa.jpg20100131-4098-l9cg9j-0 +0 -0
  545. data/test/tmp/mona_lisa.jpg20100131-4178-vk5vzl-0 +0 -0
  546. data/test/tmp/mona_lisa.jpg20100131-4297-ger5pb-0 +0 -0
  547. data/test/tmp/mona_lisa.jpg20100131-4434-1bacf3n-0 +0 -0
  548. data/test/tmp/mona_lisa.jpg20100131-4544-1mod9m0-0 +0 -0
  549. data/test/tmp/mona_lisa.jpg20100131-4655-14v218s-0 +0 -0
  550. data/test/tmp/mona_lisa.jpg20100131-5244-j05927-0 +0 -0
  551. data/test/tmp/mona_lisa.jpg20100131-5383-immke7-0 +0 -0
  552. data/test/tmp/mona_lisa.jpg20100131-5711-li3y72-0 +0 -0
  553. data/test/tmp/mona_lisa.jpg20100131-91110-1tcf6h5-0 +0 -0
  554. data/test/tmp/mona_lisa.jpg20100131-91876-1qvpsdp-0 +0 -0
  555. data/test/tmp/mona_lisa.jpg20100131-93665-e6omtk-0 +0 -0
  556. data/test/tmp/mona_lisa.jpg20100131-96270-l86z07-0 +0 -0
  557. data/test/tmp/mona_lisa.jpg20100131-96373-du21ld-0 +0 -0
  558. data/test/tmp/mona_lisa.jpg20100131-96488-14o5536-0 +0 -0
  559. data/test/tmp/mona_lisa.jpg20100131-96889-1gtncmi-0 +0 -0
  560. data/test/tmp/mona_lisa.jpg20100131-97178-1ppkuxt-0 +0 -0
  561. data/test/tmp/mona_lisa.jpg20100131-97404-kcrmpr-0 +0 -0
  562. data/test/tmp/mona_lisa.jpg20100131-97860-q1g3ex-0 +0 -0
  563. data/test/tmp/mona_lisa.jpg20100131-97900-1mp4tmq-0 +0 -0
  564. data/test/tmp/mona_lisa.jpg20100131-97937-o67sr4-0 +0 -0
  565. data/test/tmp/mona_lisa.jpg20100131-98521-jd7yia-0 +0 -0
  566. data/test/tmp/mona_lisa.jpg20100201-6555-1vw40l7-0 +0 -0
  567. data/test/tmp/mona_lisa.jpg20100204-40252-13zlhuo-0 +0 -0
  568. data/test/tmp/mona_lisa.jpg20100204-40512-nc3x8n-0 +0 -0
  569. data/test/tmp/mona_lisa.jpg20100204-57419-7yfe6o-0 +0 -0
  570. data/test/tmp/mona_lisa.jpg20100204-57658-b4op4h-0 +0 -0
  571. data/test/tmp/mona_lisa.jpg20100204-57712-11uqh50-0 +0 -0
  572. data/test/tmp/mona_lisa.jpg20100204-58321-ukp8q0-0 +0 -0
  573. data/test/tmp/mona_lisa.jpg20100204-59747-ov4w4c-0 +0 -0
  574. data/test/tmp/mona_lisa.jpg20100204-60097-1ekqjc6-0 +0 -0
  575. data/test/tmp/mona_lisa.jpg20100204-60773-1eh6ap6-0 +0 -0
  576. data/test/tmp/mona_lisa.jpg20100205-69480-tay2k2-0 +0 -0
  577. data/test/tmp/mona_lisa.jpg20100205-89390-16rh2ue-0 +0 -0
  578. data/test/tmp/mona_lisa.jpg20100205-91358-cdsa2g-0 +0 -0
  579. data/test/tmp/mona_lisa.jpg20100207-41099-llyyhb-0 +0 -0
  580. data/test/tmp/mona_lisa.jpg20100209-65426-pequnv-0 +0 -0
  581. data/test/tmp/mona_lisa.jpg20100209-65558-fbl6xv-0 +0 -0
  582. data/test/tmp/mona_lisa.jpg20100212-43647-l1vsxc-0 +0 -0
  583. data/test/tmp/mona_lisa.jpg20100316-26215-1jtjllg-0 +0 -0
  584. metadata +542 -18
  585. data/lib/action_view/erb/util.rb +0 -44
  586. data/lib/action_view/safe_buffer.rb +0 -28
  587. data/test/view/safe_buffer_test.rb +0 -36
data/CHANGELOG CHANGED
@@ -1,3 +1,48 @@
1
+ *2.3.6 (May 23, 2010)*
2
+
3
+ * JSON: set Base.include_root_in_json = true to include a root value in the JSON: {"post": {"title": ...}}. Mirrors the Active Record option. #2584 [Matthew Moore, Joe Martinez, Elad Meidar, Santiago Pastorino]
4
+
5
+ * Ruby 1.9: ERB template encoding using a magic comment at the top of the file. [Jeremy Kemper]
6
+ <%# encoding: utf-8 %>
7
+
8
+ * Fixed that default locale templates should be used if the current locale template is missing [DHH]
9
+
10
+ * Fixed that PrototypeHelper#update_page should return html_safe [DHH]
11
+
12
+ * Fixed that much of DateHelper wouldn't return html_safe? strings [DHH]
13
+
14
+ * Fixed that fragment caching should return a cache hit as html_safe (or it would all just get escaped) [DHH]
15
+
16
+ * Introduce String#html_safe for rails_xss plugin and forward-compatibility with Rails 3. [Michael Koziarski, Santiago Pastorino, José Ignacio Costa]
17
+
18
+ * Added :alert, :notice, and :flash as options to ActionController::Base#redirect_to that'll automatically set the proper flash before the redirection [DHH]. Examples:
19
+
20
+ flash[:notice] = 'Post was created'
21
+ redirect_to(@post)
22
+
23
+ ...becomes:
24
+
25
+ redirect_to(@post, :notice => 'Post was created')
26
+
27
+ * Added ActionController::Base#notice/= and ActionController::Base#alert/= as a convenience accessors in both the controller and the view for flash[:notice]/= and flash[:alert]/= [DHH]
28
+
29
+ * Added cookies.permanent, cookies.signed, and cookies.permanent.signed accessor for common cookie actions [DHH]. Examples:
30
+
31
+ cookies.permanent[:prefers_open_id] = true
32
+ # => Set-Cookie: prefers_open_id=true; path=/; expires=Sun, 16-Dec-2029 03:24:16 GMT
33
+
34
+ cookies.signed[:discount] = 45
35
+ # => Set-Cookie: discount=BAhpMg==--2c1c6906c90a3bc4fd54a51ffb41dffa4bf6b5f7; path=/
36
+
37
+ cookies.signed[:discount]
38
+ # => 45 (if the cookie was changed, you'll get a InvalidSignature exception)
39
+
40
+ cookies.permanent.signed[:remember_me] = current_user.id
41
+ # => Set-Cookie: discount=BAhU--848956038e692d7046deab32b7131856ab20e14e; path=/; expires=Sun, 16-Dec-2029 03:24:16 GMT
42
+
43
+ ...to use the signed cookies, you need to set a secret to ActionController::Base.cookie_verifier_secret (automatically done in config/initializers/cookie_verification_secret.rb for new Rails applications).
44
+
45
+
1
46
  *2.3.5 (November 25, 2009)*
2
47
 
3
48
  * Minor Bug Fixes and deprecation warnings
@@ -1,4 +1,4 @@
1
- Copyright (c) 2004-2009 David Heinemeier Hansson
1
+ Copyright (c) 2004-2010 David Heinemeier Hansson
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README CHANGED
@@ -155,20 +155,20 @@ A short rundown of the major features:
155
155
  map.connect 'clients/:client_name/:project_name/:controller/:action'
156
156
 
157
157
  Accessing /clients/37signals/basecamp/project/dash calls ProjectController#dash with
158
- { "client_name" => "37signals", "project_name" => "basecamp" } in params[:params]
158
+ { "client_name" => "37signals", "project_name" => "basecamp" }.
159
159
 
160
- From that URL, you can rewrite the redirect in a number of ways:
160
+ From that URL you can redirect providing new parameters in a number of ways:
161
161
 
162
- redirect_to(:action => "edit") =>
163
- /clients/37signals/basecamp/project/dash
162
+ redirect_to :action => "edit"
163
+ # /clients/37signals/basecamp/project/edit
164
164
 
165
- redirect_to(:client_name => "nextangle", :project_name => "rails") =>
166
- /clients/nextangle/rails/project/dash
165
+ redirect_to :client_name => "nextangle", :project_name => "rails"
166
+ # /clients/nextangle/rails/project/dash
167
167
 
168
168
  {Learn more}[link:classes/ActionController/Base.html]
169
169
 
170
170
 
171
- * Javascript and Ajax integration
171
+ * JavaScript and Ajax integration
172
172
 
173
173
  link_to_function "Greeting", "alert('Hello world!')"
174
174
  link_to_remote "Delete this post", :update => "posts",
data/Rakefile CHANGED
@@ -79,8 +79,8 @@ spec = Gem::Specification.new do |s|
79
79
  s.has_rdoc = true
80
80
  s.requirements << 'none'
81
81
 
82
- s.add_dependency('activesupport', '= 2.3.5' + PKG_BUILD)
83
- s.add_dependency('rack', '~> 1.0.0')
82
+ s.add_dependency('activesupport', '= 2.3.6' + PKG_BUILD)
83
+ s.add_dependency('rack', '~> 1.1.0')
84
84
 
85
85
  s.require_path = 'lib'
86
86
  s.autorequire = 'action_controller'
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2004-2009 David Heinemeier Hansson
2
+ # Copyright (c) 2004-2010 David Heinemeier Hansson
3
3
  #
4
4
  # Permission is hereby granted, free of charge, to any person obtaining
5
5
  # a copy of this software and associated documentation files (the
@@ -31,7 +31,7 @@ rescue LoadError
31
31
  end
32
32
  end
33
33
 
34
- gem 'rack', '~> 1.0.1'
34
+ gem 'rack', '~> 1.1.0'
35
35
  require 'rack'
36
36
  require 'action_controller/cgi_ext'
37
37
 
@@ -144,16 +144,25 @@ module ActionController
144
144
  end
145
145
 
146
146
  def normalize_argument_to_redirection(fragment)
147
- after_routing = @controller.url_for(fragment)
148
- if after_routing =~ %r{^\w+://.*}
149
- after_routing
150
- else
151
- # FIXME - this should probably get removed.
152
- if after_routing.first != '/'
153
- after_routing = '/' + after_routing
147
+ case fragment
148
+ when %r{^\w[\w\d+.-]*:.*}
149
+ fragment
150
+ when String
151
+ if fragment =~ %r{^\w[\w\d+.-]*:.*}
152
+ fragment
153
+ else
154
+ if fragment !~ /^\//
155
+ ActiveSupport::Deprecation.warn "Omitting the leading slash on a path with assert_redirected_to is deprecated. Use '/#{fragment}' instead.", caller(2)
156
+ fragment = "/#{fragment}"
157
+ end
158
+ @request.protocol + @request.host_with_port + fragment
154
159
  end
155
- @request.protocol + @request.host_with_port + after_routing
156
- end
160
+ when :back
161
+ raise RedirectBackError unless refer = @request.headers["Referer"]
162
+ refer
163
+ else
164
+ @controller.url_for(fragment)
165
+ end.gsub(/[\r\n]/, '')
157
166
  end
158
167
  end
159
168
  end
@@ -616,15 +616,6 @@ module ActionController #:nodoc:
616
616
  # displayed on:
617
617
  #
618
618
  # url_for :controller => 'posts', :action => nil
619
- #
620
- # If you explicitly want to create a URL that's almost the same as the current URL, you can do so using the
621
- # <tt>:overwrite_params</tt> options. Say for your posts you have different views for showing and printing them.
622
- # Then, in the show view, you get the URL for the print view like this
623
- #
624
- # url_for :overwrite_params => { :action => 'print' }
625
- #
626
- # This takes the current URL as is and only exchanges the action. In contrast, <tt>url_for :action => 'print'</tt>
627
- # would have slashed-off the path components after the changed action.
628
619
  def url_for(options = {})
629
620
  options ||= {}
630
621
  case options
@@ -1092,10 +1083,19 @@ module ActionController #:nodoc:
1092
1083
  # The redirection happens as a "302 Moved" header unless otherwise specified.
1093
1084
  #
1094
1085
  # Examples:
1095
- # redirect_to post_url(@post), :status=>:found
1096
- # redirect_to :action=>'atom', :status=>:moved_permanently
1097
- # redirect_to post_url(@post), :status=>301
1098
- # redirect_to :action=>'atom', :status=>302
1086
+ # redirect_to post_url(@post), :status => :found
1087
+ # redirect_to :action=>'atom', :status => :moved_permanently
1088
+ # redirect_to post_url(@post), :status => 301
1089
+ # redirect_to :action=>'atom', :status => 302
1090
+ #
1091
+ # It is also possible to assign a flash message as part of the redirection. There are two special accessors for commonly used the flash names
1092
+ # +alert+ and +notice+ as well as a general purpose +flash+ bucket.
1093
+ #
1094
+ # Examples:
1095
+ # redirect_to post_url(@post), :alert => "Watch it, mister!"
1096
+ # redirect_to post_url(@post), :status=> :found, :notice => "Pay attention to the road"
1097
+ # redirect_to post_url(@post), :status => 301, :flash => { :updated_post_id => @post.id }
1098
+ # redirect_to { :action=>'atom' }, :alert => "Something serious happened"
1099
1099
  #
1100
1100
  # When using <tt>redirect_to :back</tt>, if there is no referrer,
1101
1101
  # RedirectBackError will be raised. You may specify some fallback
@@ -1412,7 +1412,7 @@ module ActionController #:nodoc:
1412
1412
  end
1413
1413
 
1414
1414
  Base.class_eval do
1415
- [ Filters, Layout, Benchmarking, Rescue, Flash, MimeResponds, Helpers,
1415
+ [ Filters, Layout, Benchmarking, Rescue, MimeResponds, Helpers, Flash,
1416
1416
  Cookies, Caching, Verification, Streaming, SessionManagement,
1417
1417
  HttpAuthentication::Basic::ControllerMethods, HttpAuthentication::Digest::ControllerMethods,
1418
1418
  RecordIdentifier, RequestForgeryProtection, Translation
@@ -37,7 +37,7 @@ module ActionController #:nodoc:
37
37
  def fragment_for(buffer, name = {}, options = nil, &block) #:nodoc:
38
38
  if perform_caching
39
39
  if cache = read_fragment(name, options)
40
- buffer.concat(cache)
40
+ buffer.safe_concat(cache.html_safe)
41
41
  else
42
42
  pos = buffer.length
43
43
  block.call
@@ -52,9 +52,9 @@ module ActionController #:nodoc:
52
52
  def write_fragment(key, content, options = nil)
53
53
  return content unless cache_configured?
54
54
 
55
- key = fragment_cache_key(key)
56
-
57
55
  self.class.benchmark "Cached fragment miss: #{key}" do
56
+ key = fragment_cache_key(key)
57
+ content = content.html_safe.to_str if content.respond_to?(:html_safe)
58
58
  cache_store.write(key, content, options)
59
59
  end
60
60
 
@@ -65,10 +65,10 @@ module ActionController #:nodoc:
65
65
  def read_fragment(key, options = nil)
66
66
  return unless cache_configured?
67
67
 
68
- key = fragment_cache_key(key)
69
-
70
68
  self.class.benchmark "Cached fragment hit: #{key}" do
71
- cache_store.read(key, options)
69
+ key = fragment_cache_key(key)
70
+ result = cache_store.read(key, options)
71
+ result.respond_to?(:html_safe) ? result.html_safe : result
72
72
  end
73
73
  end
74
74
 
@@ -46,6 +46,7 @@ module ActionController #:nodoc:
46
46
  module Cookies
47
47
  def self.included(base)
48
48
  base.helper_method :cookies
49
+ base.cattr_accessor :cookie_verifier_secret
49
50
  end
50
51
 
51
52
  protected
@@ -56,6 +57,8 @@ module ActionController #:nodoc:
56
57
  end
57
58
 
58
59
  class CookieJar < Hash #:nodoc:
60
+ attr_reader :controller
61
+
59
62
  def initialize(controller)
60
63
  @controller, @cookies = controller, controller.request.cookies
61
64
  super()
@@ -91,5 +94,98 @@ module ActionController #:nodoc:
91
94
  @controller.response.delete_cookie(key, options)
92
95
  value
93
96
  end
97
+
98
+ # Returns a jar that'll automatically set the assigned cookies to have an expiration date 20 years from now. Example:
99
+ #
100
+ # cookies.permanent[:prefers_open_id] = true
101
+ # # => Set-Cookie: prefers_open_id=true; path=/; expires=Sun, 16-Dec-2029 03:24:16 GMT
102
+ #
103
+ # This jar is only meant for writing. You'll read permanent cookies through the regular accessor.
104
+ #
105
+ # This jar allows chaining with the signed jar as well, so you can set permanent, signed cookies. Examples:
106
+ #
107
+ # cookies.permanent.signed[:remember_me] = current_user.id
108
+ # # => Set-Cookie: discount=BAhU--848956038e692d7046deab32b7131856ab20e14e; path=/; expires=Sun, 16-Dec-2029 03:24:16 GMT
109
+ def permanent
110
+ @permanent ||= PermanentCookieJar.new(self)
111
+ end
112
+
113
+ # Returns a jar that'll automatically generate a signed representation of cookie value and verify it when reading from
114
+ # the cookie again. This is useful for creating cookies with values that the user is not supposed to change. If a signed
115
+ # cookie was tampered with by the user (or a 3rd party), an ActiveSupport::MessageVerifier::InvalidSignature exception will
116
+ # be raised.
117
+ #
118
+ # This jar requires that you set a suitable secret for the verification on ActionController::Base.cookie_verifier_secret.
119
+ #
120
+ # Example:
121
+ #
122
+ # cookies.signed[:discount] = 45
123
+ # # => Set-Cookie: discount=BAhpMg==--2c1c6906c90a3bc4fd54a51ffb41dffa4bf6b5f7; path=/
124
+ #
125
+ # cookies.signed[:discount] # => 45
126
+ def signed
127
+ @signed ||= SignedCookieJar.new(self)
128
+ end
129
+ end
130
+
131
+ class PermanentCookieJar < CookieJar #:nodoc:
132
+ def initialize(parent_jar)
133
+ @parent_jar = parent_jar
134
+ end
135
+
136
+ def []=(key, options)
137
+ if options.is_a?(Hash)
138
+ options.symbolize_keys!
139
+ else
140
+ options = { :value => options }
141
+ end
142
+
143
+ options[:expires] = 20.years.from_now
144
+ @parent_jar[key] = options
145
+ end
146
+
147
+ def signed
148
+ @signed ||= SignedCookieJar.new(self)
149
+ end
150
+
151
+ def controller
152
+ @parent_jar.controller
153
+ end
154
+
155
+ def method_missing(method, *arguments, &block)
156
+ @parent_jar.send(method, *arguments, &block)
157
+ end
158
+ end
159
+
160
+ class SignedCookieJar < CookieJar #:nodoc:
161
+ def initialize(parent_jar)
162
+ unless parent_jar.controller.class.cookie_verifier_secret
163
+ raise "You must set ActionController::Base.cookie_verifier_secret to use signed cookies"
164
+ end
165
+
166
+ @parent_jar = parent_jar
167
+ @verifier = ActiveSupport::MessageVerifier.new(@parent_jar.controller.class.cookie_verifier_secret)
168
+ end
169
+
170
+ def [](name)
171
+ if value = @parent_jar[name]
172
+ @verifier.verify(value)
173
+ end
174
+ end
175
+
176
+ def []=(key, options)
177
+ if options.is_a?(Hash)
178
+ options.symbolize_keys!
179
+ options[:value] = @verifier.generate(options[:value])
180
+ else
181
+ options = { :value => @verifier.generate(options) }
182
+ end
183
+
184
+ @parent_jar[key] = options
185
+ end
186
+
187
+ def method_missing(method, *arguments, &block)
188
+ @parent_jar.send(method, *arguments, &block)
189
+ end
94
190
  end
95
191
  end
@@ -73,6 +73,7 @@ module ActionController
73
73
  message = "/!\\ FAILSAFE /!\\ #{Time.now}\n Status: 500 Internal Server Error\n"
74
74
  message << " #{exception}\n #{exception.backtrace.join("\n ")}" if exception
75
75
  failsafe_logger.fatal(message)
76
+ failsafe_logger.flush if failsafe_logger.respond_to?(:flush)
76
77
  end
77
78
 
78
79
  def failsafe_logger
@@ -29,8 +29,13 @@ module ActionController #:nodoc:
29
29
  def self.included(base)
30
30
  base.class_eval do
31
31
  include InstanceMethods
32
+
32
33
  alias_method_chain :perform_action, :flash
33
34
  alias_method_chain :reset_session, :flash
35
+ alias_method_chain :redirect_to, :flash
36
+
37
+ helper_method :alert
38
+ helper_method :notice
34
39
  end
35
40
  end
36
41
 
@@ -155,6 +160,22 @@ module ActionController #:nodoc:
155
160
  remove_instance_variable(:@_flash) if defined? @_flash
156
161
  end
157
162
 
163
+ def redirect_to_with_flash(options = {}, response_status_and_flash = {}) #:doc:
164
+ if alert = response_status_and_flash.delete(:alert)
165
+ flash[:alert] = alert
166
+ end
167
+
168
+ if notice = response_status_and_flash.delete(:notice)
169
+ flash[:notice] = notice
170
+ end
171
+
172
+ if other_flashes = response_status_and_flash.delete(:flash)
173
+ flash.update(other_flashes)
174
+ end
175
+
176
+ redirect_to_without_flash(options, response_status_and_flash)
177
+ end
178
+
158
179
  # Access the contents of the flash. Use <tt>flash["notice"]</tt> to
159
180
  # read a notice you put there or <tt>flash["notice"] = "hello"</tt>
160
181
  # to put a new one.
@@ -166,6 +187,27 @@ module ActionController #:nodoc:
166
187
 
167
188
  @_flash
168
189
  end
190
+
191
+
192
+ # Convenience accessor for flash[:alert]
193
+ def alert
194
+ flash[:alert]
195
+ end
196
+
197
+ # Convenience accessor for flash[:alert]=
198
+ def alert=(message)
199
+ flash[:alert] = message
200
+ end
201
+
202
+ # Convenience accessor for flash[:notice]
203
+ def notice
204
+ flash[:notice]
205
+ end
206
+
207
+ # Convenience accessor for flash[:notice]=
208
+ def notice=(message)
209
+ flash[:notice] = message
210
+ end
169
211
  end
170
212
  end
171
213
  end
@@ -323,7 +323,9 @@ module ActionController
323
323
 
324
324
  @headers = Rack::Utils::HeaderHash.new(headers)
325
325
 
326
- (@headers['Set-Cookie'] || "").split("\n").each do |cookie|
326
+ cookies = @headers['Set-Cookie']
327
+ cookies = cookies.to_s.split("\n") unless cookies.is_a?(Array)
328
+ cookies.each do |cookie|
327
329
  name, value = cookie.match(/^([^=]*)=([^;]*);/)[1,2]
328
330
  @cookies[name] = value
329
331
  end
@@ -353,6 +355,8 @@ module ActionController
353
355
  # used in integration tests.
354
356
  @response.extend(TestResponseBehavior)
355
357
 
358
+ body.close if body.respond_to?(:close)
359
+
356
360
  return @status
357
361
  rescue MultiPartNeededException
358
362
  boundary = "----------XnJLe9ZIbbGUYtzPQJ16u1"
@@ -115,7 +115,7 @@ module ActionController
115
115
  end
116
116
 
117
117
  %w(edit new).each do |action|
118
- module_eval <<-EOT, __FILE__, __LINE__
118
+ module_eval <<-EOT, __FILE__, __LINE__ + 1
119
119
  def #{action}_polymorphic_url(record_or_hash, options = {}) # def edit_polymorphic_url(record_or_hash, options = {})
120
120
  polymorphic_url( # polymorphic_url(
121
121
  record_or_hash, # record_or_hash,