actionpack 2.3.5 → 2.3.6

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 (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
@@ -296,7 +296,7 @@ module ActionView
296
296
  options << %(<option value="#{html_escape(value.to_s)}"#{selected_attribute}#{disabled_attribute}>#{html_escape(text.to_s)}</option>)
297
297
  end
298
298
 
299
- options_for_select.join("\n").html_safe!
299
+ options_for_select.join("\n").html_safe
300
300
  end
301
301
 
302
302
  # Returns a string of option tags that have been compiled by iterating over the +collection+ and assigning the
@@ -572,10 +572,9 @@ module ActionView
572
572
  end
573
573
  if value.blank? && options[:prompt]
574
574
  prompt = options[:prompt].kind_of?(String) ? options[:prompt] : I18n.translate('support.select.prompt', :default => 'Please select')
575
- "<option value=\"\">#{prompt}</option>\n" + option_tags
576
- else
577
- option_tags
575
+ option_tags = "<option value=\"\">#{prompt}</option>\n" + option_tags
578
576
  end
577
+ option_tags.html_safe
579
578
  end
580
579
  end
581
580
 
@@ -78,6 +78,9 @@ module ActionView
78
78
  # # <option>Paris</option><option>Rome</option></select>
79
79
  def select_tag(name, option_tags = nil, options = {})
80
80
  html_name = (options[:multiple] == true && !name.to_s.ends_with?("[]")) ? "#{name}[]" : name
81
+ if Array === option_tags
82
+ ActiveSupport::Deprecation.warn 'Passing an array of option_tags to select_tag implicitly joins them without marking them as HTML-safe. Pass option_tags.join.html_safe instead.', caller
83
+ end
81
84
  content_tag :select, option_tags, { "name" => html_name, "id" => sanitize_to_id(name) }.update(options.stringify_keys)
82
85
  end
83
86
 
@@ -262,7 +265,7 @@ module ActionView
262
265
  escape = options.key?("escape") ? options.delete("escape") : true
263
266
  content = html_escape(content) if escape
264
267
 
265
- content_tag :textarea, content, { "name" => name, "id" => sanitize_to_id(name) }.update(options.stringify_keys)
268
+ content_tag :textarea, content.html_safe, { "name" => name, "id" => sanitize_to_id(name) }.update(options.stringify_keys)
266
269
  end
267
270
 
268
271
  # Creates a check box form input tag.
@@ -432,7 +435,7 @@ module ActionView
432
435
  concat(tag(:fieldset, options, true))
433
436
  concat(content_tag(:legend, legend)) unless legend.blank?
434
437
  concat(content)
435
- concat("</fieldset>".html_safe!)
438
+ concat("</fieldset>")
436
439
  end
437
440
 
438
441
  private
@@ -459,14 +462,14 @@ module ActionView
459
462
 
460
463
  def form_tag_html(html_options)
461
464
  extra_tags = extra_tags_for_form(html_options)
462
- (tag(:form, html_options, true) + extra_tags).html_safe!
465
+ (tag(:form, html_options, true) + extra_tags).html_safe
463
466
  end
464
467
 
465
468
  def form_tag_in_block(html_options, &block)
466
469
  content = capture(&block)
467
470
  concat(form_tag_html(html_options))
468
471
  concat(content)
469
- concat("</form>".html_safe!)
472
+ concat("</form>")
470
473
  end
471
474
 
472
475
  def token_tag
@@ -184,7 +184,7 @@ module ActionView
184
184
  end
185
185
 
186
186
  def javascript_cdata_section(content) #:nodoc:
187
- "\n//#{cdata_section("\n#{content}\n//")}\n"
187
+ "\n//#{cdata_section("\n#{content}\n//")}\n".html_safe
188
188
  end
189
189
 
190
190
  protected
@@ -89,7 +89,7 @@ module ActionView
89
89
  :precision => precision,
90
90
  :delimiter => delimiter,
91
91
  :separator => separator)
92
- ).gsub(/%u/, unit)
92
+ ).gsub(/%u/, unit).html_safe
93
93
  rescue
94
94
  number
95
95
  end
@@ -393,7 +393,7 @@ module ActionView
393
393
 
394
394
  concat(form_remote_tag(options))
395
395
  fields_for(object_name, *(args << options), &proc)
396
- concat('</form>'.html_safe!)
396
+ concat('</form>')
397
397
  end
398
398
  alias_method :form_remote_for, :remote_form_for
399
399
 
@@ -1026,7 +1026,7 @@ module ActionView
1026
1026
  # page.hide 'spinner'
1027
1027
  # end
1028
1028
  def update_page(&block)
1029
- JavaScriptGenerator.new(@template, &block).to_s
1029
+ JavaScriptGenerator.new(@template, &block).to_s.html_safe
1030
1030
  end
1031
1031
 
1032
1032
  # Works like update_page but wraps the generated JavaScript in a <script>
@@ -2,8 +2,8 @@ module ActionView #:nodoc:
2
2
  module Helpers #:nodoc:
3
3
  module RawOutputHelper
4
4
  def raw(stringish)
5
- stringish.to_s.html_safe!
5
+ stringish.to_s.html_safe
6
6
  end
7
7
  end
8
8
  end
9
- end
9
+ end
@@ -49,11 +49,7 @@ module ActionView
49
49
  # confuse browsers.
50
50
  #
51
51
  def sanitize(html, options = {})
52
- returning self.class.white_list_sanitizer.sanitize(html, options) do |sanitized|
53
- if sanitized
54
- sanitized.html_safe!
55
- end
56
- end
52
+ self.class.white_list_sanitizer.sanitize(html, options).try(:html_safe)
57
53
  end
58
54
 
59
55
  # Sanitizes a block of CSS code. Used by +sanitize+ when it comes across a style attribute.
@@ -76,11 +72,7 @@ module ActionView
76
72
  # strip_tags("<div id='top-bar'>Welcome to my website!</div>")
77
73
  # # => Welcome to my website!
78
74
  def strip_tags(html)
79
- returning self.class.full_sanitizer.sanitize(html) do |sanitized|
80
- if sanitized
81
- sanitized.html_safe!
82
- end
83
- end
75
+ self.class.full_sanitizer.sanitize(html).try(:html_safe)
84
76
  end
85
77
 
86
78
  # Strips all link tags from +text+ leaving just the link text.
@@ -1,4 +1,5 @@
1
- require 'action_view/erb/util'
1
+ require 'active_support/multibyte'
2
+ require 'active_support/core_ext/string/output_safety'
2
3
  require 'set'
3
4
 
4
5
  module ActionView
@@ -38,7 +39,7 @@ module ActionView
38
39
  # tag("img", { :src => "open &amp; shut.png" }, false, false)
39
40
  # # => <img src="open &amp; shut.png" />
40
41
  def tag(name, options = nil, open = false, escape = true)
41
- "<#{name}#{tag_options(options, escape) if options}#{open ? ">" : " />"}".html_safe!
42
+ "<#{name}#{tag_options(options, escape) if options}#{open ? ">" : " />"}".html_safe
42
43
  end
43
44
 
44
45
  # Returns an HTML block tag of type +name+ surrounding the +content+. Add
@@ -91,7 +92,7 @@ module ActionView
91
92
  # cdata_section(File.read("hello_world.txt"))
92
93
  # # => <![CDATA[<hello from a text file]]>
93
94
  def cdata_section(content)
94
- "<![CDATA[#{content}]]>".html_safe!
95
+ "<![CDATA[#{content}]]>".html_safe
95
96
  end
96
97
 
97
98
  # Returns an escaped version of +html+ without affecting existing escaped entities.
@@ -125,7 +126,7 @@ module ActionView
125
126
 
126
127
  def content_tag_string(name, content, options, escape = true)
127
128
  tag_options = tag_options(options, escape) if options
128
- "<#{name}#{tag_options}>#{content}</#{name}>".html_safe!
129
+ "<#{name}#{tag_options}>#{content}</#{name}>".html_safe
129
130
  end
130
131
 
131
132
  def tag_options(options, escape = true)
@@ -142,7 +143,7 @@ module ActionView
142
143
  else
143
144
  attrs = options.map { |key, value| %(#{key}="#{value}") }
144
145
  end
145
- " #{attrs.sort * ' '}".html_safe! unless attrs.empty?
146
+ " #{attrs.sort * ' '}".html_safe unless attrs.empty?
146
147
  end
147
148
  end
148
149
  end
@@ -29,7 +29,7 @@ module ActionView
29
29
  ActiveSupport::Deprecation.warn("The binding argument of #concat is no longer needed. Please remove it from your views and helpers.", caller)
30
30
  end
31
31
 
32
- output_buffer << string
32
+ output_buffer.safe_concat(string)
33
33
  end
34
34
 
35
35
  # Truncates a given +text+ after a given <tt>:length</tt> if +text+ is longer than <tt>:length</tt>
@@ -181,7 +181,7 @@ module ActionView
181
181
  # pluralize(0, 'person')
182
182
  # # => 0 people
183
183
  def pluralize(count, singular, plural = nil)
184
- "#{count || 0} " + ((count == 1 || count == '1') ? singular : (plural || singular.pluralize))
184
+ "#{count || 0} " + ((count == 1 || count =~ /^1(\.0+)?$/) ? singular : (plural || singular.pluralize))
185
185
  end
186
186
 
187
187
  # Wraps the +text+ into lines no longer than +line_width+ width. This method
@@ -328,7 +328,7 @@ module ActionView
328
328
  text.gsub!(/\n\n+/, "</p>\n\n#{start_tag}") # 2+ newline -> paragraph
329
329
  text.gsub!(/([^\n]\n)(?=[^\n])/, '\1<br />') # 1 newline -> br
330
330
  text.insert 0, start_tag
331
- text << "</p>"
331
+ text.html_safe.safe_concat("</p>")
332
332
  end
333
333
 
334
334
  # Turns all URLs and e-mail addresses into clickable links. The <tt>:link</tt> option
@@ -548,7 +548,7 @@ module ActionView
548
548
  left, right = $`, $'
549
549
  # detect already linked URLs and URLs in the middle of a tag
550
550
  if left =~ /<[^>]+$/ && right =~ /^[^>]*>/
551
- # do not change string; URL is alreay linked
551
+ # do not change string; URL is already linked
552
552
  href
553
553
  else
554
554
  # don't include trailing punctuation character as part of the URL
@@ -560,7 +560,7 @@ module ActionView
560
560
  end
561
561
 
562
562
  link_text = block_given?? yield(href) : href
563
- href = 'http://' + href unless href.index('http') == 0
563
+ href = 'http://' + href unless href =~ %r{^[a-z]+://}i
564
564
 
565
565
  content_tag(:a, h(link_text), link_attributes.merge('href' => href)) + punctuation
566
566
  end
@@ -12,7 +12,8 @@ module ActionView
12
12
  # prepend the key with a period, nothing is converted.
13
13
  def translate(key, options = {})
14
14
  options[:raise] = true
15
- I18n.translate(scope_key_by_partial(key), options)
15
+ translation = I18n.translate(scope_key_by_partial(key), options)
16
+ (translation.respond_to?(:join) ? translation.join : translation).html_safe
16
17
  rescue I18n::MissingTranslationData => e
17
18
  keys = I18n.send(:normalize_translation_keys, e.locale, e.key, e.options[:scope])
18
19
  content_tag('span', keys.join(', '), :class => 'translation_missing')
@@ -28,12 +29,13 @@ module ActionView
28
29
 
29
30
  private
30
31
  def scope_key_by_partial(key)
31
- if key.to_s.first == "."
32
- template.path_without_format_and_extension.gsub(%r{/_?}, ".") + key.to_s
32
+ strkey = key.respond_to?(:join) ? key.join : key.to_s
33
+ if strkey.first == "."
34
+ template.path_without_format_and_extension.gsub(%r{/_?}, ".") + strkey
33
35
  else
34
36
  key
35
37
  end
36
38
  end
37
39
  end
38
40
  end
39
- end
41
+ end
@@ -91,7 +91,7 @@ module ActionView
91
91
  polymorphic_path(options)
92
92
  end
93
93
 
94
- escape ? escape_once(url) : url
94
+ escape ? escape_once(url).html_safe : url
95
95
  end
96
96
 
97
97
  # Creates a link tag of the given +name+ using a URL created by the set
@@ -219,7 +219,7 @@ module ActionView
219
219
  if block_given?
220
220
  options = args.first || {}
221
221
  html_options = args.second
222
- concat(link_to(capture(&block), options, html_options).html_safe!)
222
+ concat(link_to(capture(&block), options, html_options))
223
223
  else
224
224
  name = args.first
225
225
  options = args.second || {}
@@ -237,7 +237,7 @@ module ActionView
237
237
  end
238
238
 
239
239
  href_attr = "href=\"#{url}\"" unless href
240
- "<a #{href_attr}#{tag_options}>#{name || url}</a>".html_safe!
240
+ "<a #{href_attr}#{tag_options}>#{name || url}</a>".html_safe
241
241
  end
242
242
  end
243
243
 
@@ -308,8 +308,8 @@ module ActionView
308
308
 
309
309
  html_options.merge!("type" => "submit", "value" => name)
310
310
 
311
- "<form method=\"#{form_method}\" action=\"#{escape_once url}\" class=\"button-to\"><div>" +
312
- method_tag + tag("input", html_options) + request_token_tag + "</div></form>".html_safe!
311
+ ("<form method=\"#{form_method}\" action=\"#{escape_once url}\" class=\"button-to\"><div>" +
312
+ method_tag + tag("input", html_options) + request_token_tag + "</div></form>").html_safe
313
313
  end
314
314
 
315
315
 
@@ -466,14 +466,12 @@ module ActionView
466
466
  extras << "subject=#{CGI.escape(subject).gsub("+", "%20")}&" unless subject.nil?
467
467
  extras = "?" << extras.gsub!(/&?$/,"") unless extras.empty?
468
468
 
469
- email_address = email_address.to_s
470
-
471
- email_address_obfuscated = email_address.dup
469
+ email_address_obfuscated = html_escape(email_address)
472
470
  email_address_obfuscated.gsub!(/@/, html_options.delete("replace_at")) if html_options.has_key?("replace_at")
473
471
  email_address_obfuscated.gsub!(/\./, html_options.delete("replace_dot")) if html_options.has_key?("replace_dot")
474
472
 
475
473
  if encode == "javascript"
476
- "document.write('#{content_tag("a", name || email_address_obfuscated, html_options.merge({ "href" => "mailto:"+email_address+extras }))}');".each_byte do |c|
474
+ "document.write('#{content_tag("a", name || email_address_obfuscated.html_safe, html_options.merge({ "href" => "mailto:"+email_address+extras }))}');".each_byte do |c|
477
475
  string << sprintf("%%%x", c)
478
476
  end
479
477
  "<script type=\"#{Mime::JS}\">eval(decodeURIComponent('#{string}'))</script>"
@@ -490,9 +488,9 @@ module ActionView
490
488
  char = c.chr
491
489
  string << (char =~ /\w/ ? sprintf("%%%x", c) : char)
492
490
  end
493
- content_tag "a", name || email_address_encoded, html_options.merge({ "href" => "#{string}#{extras}" })
491
+ content_tag "a", name || email_address_encoded.html_safe, html_options.merge({ "href" => "#{string}#{extras}" })
494
492
  else
495
- content_tag "a", name || email_address_obfuscated, html_options.merge({ "href" => "mailto:#{email_address}#{extras}" })
493
+ content_tag "a", name || email_address_obfuscated.html_safe, html_options.merge({ "href" => "mailto:#{email_address}#{extras}" })
496
494
  end
497
495
  end
498
496
 
@@ -218,10 +218,11 @@ module ActionView
218
218
  ActionController::RecordIdentifier.partial_path(object, controller.class.controller_path)
219
219
  template = _pick_partial_template(_partial_path)
220
220
  local_assigns[template.counter_name] = index
221
+ local_assigns["#{as.to_s}_counter".to_sym] = local_assigns[template.counter_name] if as
221
222
  result = template.render_partial(self, object, local_assigns.dup, as)
222
223
  index += 1
223
224
  result
224
- end.join(spacer).html_safe!
225
+ end.join(spacer).html_safe
225
226
  end
226
227
 
227
228
  def _pick_partial_template(partial_path) #:nodoc:
@@ -47,15 +47,23 @@ module ActionView #:nodoc:
47
47
  each do |load_path|
48
48
  if format && (template = load_path["#{template_path}.#{I18n.locale}.#{format}"])
49
49
  return template
50
+ # Try the default locale version if the current locale doesn't have one
51
+ # (i.e. you haven't translated this view to German yet, but you have the English version on hand)
52
+ elsif format && (template = load_path["#{template_path}.#{I18n.default_locale}.#{format}"])
53
+ return template
50
54
  elsif format && (template = load_path["#{template_path}.#{format}"])
51
55
  return template
52
56
  elsif template = load_path["#{template_path}.#{I18n.locale}"]
53
57
  return template
58
+ elsif template = load_path["#{template_path}.#{I18n.default_locale}"]
59
+ return template
54
60
  elsif template = load_path[template_path]
55
61
  return template
56
62
  # Try to find html version if the format is javascript
57
63
  elsif format == :js && html_fallback && template = load_path["#{template_path}.#{I18n.locale}.html"]
58
64
  return template
65
+ elsif format == :js && html_fallback && template = load_path["#{template_path}.#{I18n.default_locale}.html"]
66
+ return template
59
67
  elsif format == :js && html_fallback && template = load_path["#{template_path}.html"]
60
68
  return template
61
69
  end
@@ -65,16 +65,30 @@ module ActionView
65
65
  def compile!(render_symbol, local_assigns)
66
66
  locals_code = local_assigns.keys.map { |key| "#{key} = local_assigns[:#{key}];" }.join
67
67
 
68
+ code = compiled_source
69
+ if code.sub!(/\A(#.*coding.*)\n/, '')
70
+ encoding_comment = $1
71
+ elsif defined?(Encoding) && Encoding.respond_to?(:default_external)
72
+ encoding_comment = "#coding:#{Encoding.default_external}"
73
+ end
74
+
68
75
  source = <<-end_src
69
76
  def #{render_symbol}(local_assigns)
70
- old_output_buffer = output_buffer;#{locals_code};#{compiled_source}
77
+ old_output_buffer = output_buffer;#{locals_code};#{code}
71
78
  ensure
72
79
  self.output_buffer = old_output_buffer
73
80
  end
74
81
  end_src
75
82
 
83
+ if encoding_comment
84
+ source = "#{encoding_comment}\n#{source}"
85
+ line = -1
86
+ else
87
+ line = 0
88
+ end
89
+
76
90
  begin
77
- ActionView::Base::CompiledTemplates.module_eval(source, filename, 0)
91
+ ActionView::Base::CompiledTemplates.module_eval(source, filename, line)
78
92
  rescue Errno::ENOENT => e
79
93
  raise e # Missing template file, re-raise for Base to rescue
80
94
  rescue Exception => e # errors from template code
@@ -11,11 +11,9 @@ module ActionView
11
11
  self.erb_trim_mode = '-'
12
12
 
13
13
  def compile(template)
14
- src = ::ERB.new("<% __in_erb_template=true %>#{template.source}", nil, erb_trim_mode, '@output_buffer').src
15
-
16
- # Ruby 1.9 prepends an encoding to the source. However this is
17
- # useless because you can only set an encoding on the first line
18
- RUBY_VERSION >= '1.9' ? src.sub(/\A#coding:.*\n/, '') : src
14
+ magic = $1 if template.source =~ /\A(<%#.*coding[:=]\s*(\S+)\s*-?%>)/
15
+ erb = "#{magic}<% __in_erb_template=true %>#{template.source}"
16
+ ::ERB.new(erb, nil, erb_trim_mode, '@output_buffer').src
19
17
  end
20
18
  end
21
19
  end
@@ -53,7 +53,7 @@ module ActionView
53
53
  setup :setup_with_controller
54
54
  def setup_with_controller
55
55
  @controller = TestController.new
56
- @output_buffer = ''
56
+ @output_buffer = ActiveSupport::SafeBuffer.new
57
57
  @rendered = ''
58
58
 
59
59
  self.class.send(:include_helper_modules!)
@@ -159,4 +159,4 @@ module ActionView
159
159
  end
160
160
  end
161
161
  end
162
- end
162
+ end
@@ -32,9 +32,9 @@ ActionController::Routing::Routes.reload rescue nil
32
32
 
33
33
  ActionController::Base.session_store = nil
34
34
 
35
- # Register danish language for testing
36
- I18n.backend.store_translations 'da', {}
37
- I18n.backend.store_translations 'pt-BR', {}
35
+ # Register languages for testing
36
+ I18n.backend.store_translations 'da', "da" => {}
37
+ I18n.backend.store_translations 'pt-BR', "pt-BR" => {}
38
38
  ORIGINAL_LOCALES = I18n.available_locales.map(&:to_s).sort
39
39
 
40
40
  FIXTURE_LOAD_PATH = File.join(File.dirname(__FILE__), 'fixtures')
@@ -458,7 +458,9 @@ class ActionPackAssertionsControllerTest < ActionController::TestCase
458
458
 
459
459
  def test_redirected_to_url_no_leadling_slash
460
460
  process :redirect_to_path
461
- assert_redirected_to 'some/path'
461
+ assert_deprecated /leading/ do
462
+ assert_redirected_to 'some/path'
463
+ end
462
464
  end
463
465
 
464
466
  def test_redirected_to_url_full_url