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.
- data/CHANGELOG +45 -0
- data/MIT-LICENSE +1 -1
- data/README +7 -7
- data/Rakefile +2 -2
- data/lib/action_controller.rb +2 -2
- data/lib/action_controller/assertions/response_assertions.rb +18 -9
- data/lib/action_controller/base.rb +14 -14
- data/lib/action_controller/caching/fragments.rb +6 -6
- data/lib/action_controller/cookies.rb +96 -0
- data/lib/action_controller/failsafe.rb +1 -0
- data/lib/action_controller/flash.rb +42 -0
- data/lib/action_controller/integration.rb +5 -1
- data/lib/action_controller/polymorphic_routes.rb +1 -1
- data/lib/action_controller/rack_lint_patch.rb +1 -1
- data/lib/action_controller/rescue.rb +2 -2
- data/lib/action_controller/response.rb +4 -7
- data/lib/action_controller/routing/route_set.rb +1 -0
- data/lib/action_controller/session/abstract_store.rb +6 -0
- data/lib/action_controller/session/cookie_store.rb +6 -0
- data/lib/action_controller/templates/rescues/_trace.erb +2 -2
- data/lib/action_controller/url_rewriter.rb +4 -1
- data/lib/action_pack.rb +1 -1
- data/lib/action_pack/version.rb +1 -1
- data/lib/action_view.rb +3 -3
- data/lib/action_view/helpers/active_record_helper.rb +11 -11
- data/lib/action_view/helpers/asset_tag_helper.rb +2 -2
- data/lib/action_view/helpers/capture_helper.rb +2 -2
- data/lib/action_view/helpers/date_helper.rb +12 -11
- data/lib/action_view/helpers/debug_helper.rb +2 -2
- data/lib/action_view/helpers/form_helper.rb +49 -12
- data/lib/action_view/helpers/form_options_helper.rb +3 -4
- data/lib/action_view/helpers/form_tag_helper.rb +7 -4
- data/lib/action_view/helpers/javascript_helper.rb +1 -1
- data/lib/action_view/helpers/number_helper.rb +1 -1
- data/lib/action_view/helpers/prototype_helper.rb +2 -2
- data/lib/action_view/helpers/raw_output_helper.rb +2 -2
- data/lib/action_view/helpers/sanitize_helper.rb +2 -10
- data/lib/action_view/helpers/tag_helper.rb +6 -5
- data/lib/action_view/helpers/text_helper.rb +5 -5
- data/lib/action_view/helpers/translation_helper.rb +6 -4
- data/lib/action_view/helpers/url_helper.rb +9 -11
- data/lib/action_view/partials.rb +2 -1
- data/lib/action_view/paths.rb +8 -0
- data/lib/action_view/renderable.rb +16 -2
- data/lib/action_view/template_handlers/erb.rb +3 -5
- data/lib/action_view/test_case.rb +2 -2
- data/test/abstract_unit.rb +3 -3
- data/test/controller/action_pack_assertions_test.rb +3 -1
- data/test/controller/assert_select_test.rb +1 -0
- data/test/controller/caching_test.rb +16 -2
- data/test/controller/cookie_test.rb +37 -1
- data/test/controller/flash_test.rb +28 -1
- data/test/controller/integration_test.rb +0 -1
- data/test/controller/localized_templates_test.rb +24 -0
- data/test/controller/output_escaping_test.rb +19 -0
- data/test/controller/rack_test.rb +1 -4
- data/test/controller/render_test.rb +11 -2
- data/test/controller/rescue_test.rb +8 -2
- data/test/controller/routing_test.rb +1 -0
- data/test/controller/send_file_test.rb +1 -1
- data/test/controller/session/cookie_store_test.rb +2 -2
- data/test/controller/url_rewriter_test.rb +10 -6
- data/test/fixtures/localized/hello_world.de.html +1 -0
- data/test/fixtures/localized/hello_world.en.html +1 -0
- data/test/fixtures/test/_customer_counter_with_as.erb +1 -0
- data/test/fixtures/test/_utf8_partial.html.erb +1 -0
- data/test/fixtures/test/_utf8_partial_magic.html.erb +2 -0
- data/test/fixtures/test/array_translation.erb +1 -0
- data/test/fixtures/test/scoped_array_translation.erb +1 -0
- data/test/fixtures/test/utf8.html.erb +4 -2
- data/test/fixtures/test/utf8_magic.html.erb +5 -0
- data/test/fixtures/test/utf8_magic_with_bare_partial.html.erb +5 -0
- data/test/template/active_record_helper_i18n_test.rb +9 -2
- data/test/template/asset_tag_helper_test.rb +0 -1
- data/test/template/date_helper_test.rb +118 -0
- data/test/template/erb_util_test.rb +12 -0
- data/test/template/form_helper_test.rb +57 -3
- data/test/template/form_tag_helper_test.rb +15 -9
- data/test/template/render_test.rb +47 -8
- data/test/template/text_helper_test.rb +26 -1
- data/test/template/translation_helper_test.rb +20 -2
- data/test/template/url_helper_test.rb +20 -1
- data/test/tmp/RackMultipart20100114-2850-18awt99-0 +1 -0
- data/test/tmp/RackMultipart20100114-2850-19mxvfk-0 +0 -0
- data/test/tmp/RackMultipart20100114-2850-1il5j9y-0 +1 -0
- data/test/tmp/RackMultipart20100114-2850-1kr4fph-0 +1 -0
- data/test/tmp/RackMultipart20100114-2850-1whjzgd-0 +0 -0
- data/test/tmp/RackMultipart20100114-2850-2oxu19-0 +1 -0
- data/test/tmp/RackMultipart20100114-2850-34lp5r-0 +0 -0
- data/test/tmp/RackMultipart20100114-2850-bqfazg-0 +1 -0
- data/test/tmp/RackMultipart20100114-2850-vbyi8g-0 +0 -0
- data/test/tmp/RackMultipart20100127-16318-140g9v4-0 +1 -0
- data/test/tmp/RackMultipart20100127-16318-1gc081d-0 +0 -0
- data/test/tmp/RackMultipart20100127-16318-1hs9edk-0 +0 -0
- data/test/tmp/RackMultipart20100127-16318-1xv7yvp-0 +1 -0
- data/test/tmp/RackMultipart20100127-16318-9eyfmo-0 +1 -0
- data/test/tmp/RackMultipart20100127-16318-o81drl-0 +0 -0
- data/test/tmp/RackMultipart20100127-16318-ubd6vm-0 +1 -0
- data/test/tmp/RackMultipart20100127-16318-xltjpf-0 +1 -0
- data/test/tmp/RackMultipart20100127-16318-z0s5v6-0 +0 -0
- data/test/tmp/RackMultipart20100131-1041-1fpxdo1-0 +1 -0
- data/test/tmp/RackMultipart20100131-1041-1hgld51-0 +1 -0
- data/test/tmp/RackMultipart20100131-1041-1sfw61g-0 +0 -0
- data/test/tmp/RackMultipart20100131-1041-1txiwx-0 +0 -0
- data/test/tmp/RackMultipart20100131-1041-3nxhtk-0 +1 -0
- data/test/tmp/RackMultipart20100131-1041-msmvjp-0 +1 -0
- data/test/tmp/RackMultipart20100131-1041-snlih6-0 +0 -0
- data/test/tmp/RackMultipart20100131-1041-utmx6r-0 +1 -0
- data/test/tmp/RackMultipart20100131-1041-vr2eir-0 +0 -0
- data/test/tmp/RackMultipart20100131-1200-116kivk-0 +1 -0
- data/test/tmp/RackMultipart20100131-1200-13yj0g7-0 +0 -0
- data/test/tmp/RackMultipart20100131-1200-1b0awcl-0 +1 -0
- data/test/tmp/RackMultipart20100131-1200-1qc4a1o-0 +0 -0
- data/test/tmp/RackMultipart20100131-1200-1sch05j-0 +1 -0
- data/test/tmp/RackMultipart20100131-1200-2wwvjw-0 +1 -0
- data/test/tmp/RackMultipart20100131-1200-4ybied-0 +0 -0
- data/test/tmp/RackMultipart20100131-1200-n4jwgg-0 +0 -0
- data/test/tmp/RackMultipart20100131-1200-nqwg4i-0 +1 -0
- data/test/tmp/RackMultipart20100131-1566-10hgtsj-0 +0 -0
- data/test/tmp/RackMultipart20100131-1566-1m2ix3r-0 +1 -0
- data/test/tmp/RackMultipart20100131-1566-1szdt3p-0 +0 -0
- data/test/tmp/RackMultipart20100131-1566-6cb9xb-0 +0 -0
- data/test/tmp/RackMultipart20100131-1566-aervb6-0 +1 -0
- data/test/tmp/RackMultipart20100131-1566-o57d30-0 +1 -0
- data/test/tmp/RackMultipart20100131-1566-q06s4u-0 +1 -0
- data/test/tmp/RackMultipart20100131-1566-r3eau5-0 +1 -0
- data/test/tmp/RackMultipart20100131-1566-rhvbsr-0 +0 -0
- data/test/tmp/RackMultipart20100131-2176-19tk67i-0 +0 -0
- data/test/tmp/RackMultipart20100131-2176-1iuhegu-0 +0 -0
- data/test/tmp/RackMultipart20100131-2176-1mfu303-0 +1 -0
- data/test/tmp/RackMultipart20100131-2176-1qv96rf-0 +1 -0
- data/test/tmp/RackMultipart20100131-2176-7rae4i-0 +1 -0
- data/test/tmp/RackMultipart20100131-2176-g7hqdt-0 +0 -0
- data/test/tmp/RackMultipart20100131-2176-spxexk-0 +1 -0
- data/test/tmp/RackMultipart20100131-2176-x57r68-0 +0 -0
- data/test/tmp/RackMultipart20100131-2176-xx8aqr-0 +1 -0
- data/test/tmp/RackMultipart20100131-2251-1kx4y7u-0 +1 -0
- data/test/tmp/RackMultipart20100131-2251-1p70d6c-0 +1 -0
- data/test/tmp/RackMultipart20100131-2251-1w181g4-0 +1 -0
- data/test/tmp/RackMultipart20100131-2251-9dl2hy-0 +1 -0
- data/test/tmp/RackMultipart20100131-2251-dd4aqa-0 +0 -0
- data/test/tmp/RackMultipart20100131-2251-dq1bs7-0 +0 -0
- data/test/tmp/RackMultipart20100131-2251-rjlwid-0 +0 -0
- data/test/tmp/RackMultipart20100131-2251-svv2my-0 +0 -0
- data/test/tmp/RackMultipart20100131-2251-znyywm-0 +1 -0
- data/test/tmp/RackMultipart20100131-2563-1b9atyq-0 +1 -0
- data/test/tmp/RackMultipart20100131-2563-1j4bk06-0 +1 -0
- data/test/tmp/RackMultipart20100131-2563-1nd3jkk-0 +0 -0
- data/test/tmp/RackMultipart20100131-2563-1ud0b43-0 +1 -0
- data/test/tmp/RackMultipart20100131-2563-2t9aus-0 +1 -0
- data/test/tmp/RackMultipart20100131-2563-4xhtq9-0 +0 -0
- data/test/tmp/RackMultipart20100131-2563-80xjuq-0 +1 -0
- data/test/tmp/RackMultipart20100131-2563-du6204-0 +0 -0
- data/test/tmp/RackMultipart20100131-2563-m2xw0u-0 +0 -0
- data/test/tmp/RackMultipart20100131-3324-1bz902a-0 +1 -0
- data/test/tmp/RackMultipart20100131-3324-1cj3c2q-0 +1 -0
- data/test/tmp/RackMultipart20100131-3324-1dcwnmh-0 +1 -0
- data/test/tmp/RackMultipart20100131-3324-1qu1vvo-0 +1 -0
- data/test/tmp/RackMultipart20100131-3324-1wksfd7-0 +0 -0
- data/test/tmp/RackMultipart20100131-3324-8bmth5-0 +0 -0
- data/test/tmp/RackMultipart20100131-3324-c0sen5-0 +1 -0
- data/test/tmp/RackMultipart20100131-3324-mhg9zb-0 +0 -0
- data/test/tmp/RackMultipart20100131-3324-mram2k-0 +0 -0
- data/test/tmp/RackMultipart20100131-3712-11l26yb-0 +1 -0
- data/test/tmp/RackMultipart20100131-3712-18qhzz9-0 +1 -0
- data/test/tmp/RackMultipart20100131-3712-19efkti-0 +1 -0
- data/test/tmp/RackMultipart20100131-3712-1s6qbc-0 +1 -0
- data/test/tmp/RackMultipart20100131-3712-948hce-0 +0 -0
- data/test/tmp/RackMultipart20100131-3712-rliyfc-0 +0 -0
- data/test/tmp/RackMultipart20100131-3712-tvfxgh-0 +1 -0
- data/test/tmp/RackMultipart20100131-3712-ywjidy-0 +0 -0
- data/test/tmp/RackMultipart20100131-3712-zwa1yl-0 +0 -0
- data/test/tmp/RackMultipart20100131-4098-12u1n7m-0 +1 -0
- data/test/tmp/RackMultipart20100131-4098-188dwav-0 +0 -0
- data/test/tmp/RackMultipart20100131-4098-1a2nulg-0 +0 -0
- data/test/tmp/RackMultipart20100131-4098-1c9gbau-0 +1 -0
- data/test/tmp/RackMultipart20100131-4098-2923tu-0 +0 -0
- data/test/tmp/RackMultipart20100131-4098-he7nm8-0 +0 -0
- data/test/tmp/RackMultipart20100131-4098-nw5pcp-0 +1 -0
- data/test/tmp/RackMultipart20100131-4098-plj7cd-0 +1 -0
- data/test/tmp/RackMultipart20100131-4098-wha9du-0 +1 -0
- data/test/tmp/RackMultipart20100131-4178-10rjsef-0 +0 -0
- data/test/tmp/RackMultipart20100131-4178-13qqazs-0 +0 -0
- data/test/tmp/RackMultipart20100131-4178-1hpjqkl-0 +0 -0
- data/test/tmp/RackMultipart20100131-4178-1idjtdl-0 +1 -0
- data/test/tmp/RackMultipart20100131-4178-1ke1zpq-0 +1 -0
- data/test/tmp/RackMultipart20100131-4178-6y51hb-0 +1 -0
- data/test/tmp/RackMultipart20100131-4178-98i2o0-0 +1 -0
- data/test/tmp/RackMultipart20100131-4178-9k4jj6-0 +0 -0
- data/test/tmp/RackMultipart20100131-4178-zcxa4g-0 +1 -0
- data/test/tmp/RackMultipart20100131-4297-1moo7v9-0 +0 -0
- data/test/tmp/RackMultipart20100131-4297-1yxib1r-0 +0 -0
- data/test/tmp/RackMultipart20100131-4297-b239su-0 +0 -0
- data/test/tmp/RackMultipart20100131-4297-ht0qby-0 +1 -0
- data/test/tmp/RackMultipart20100131-4297-ia5rov-0 +1 -0
- data/test/tmp/RackMultipart20100131-4297-m6gof0-0 +1 -0
- data/test/tmp/RackMultipart20100131-4297-nm3rvt-0 +0 -0
- data/test/tmp/RackMultipart20100131-4297-qla73p-0 +1 -0
- data/test/tmp/RackMultipart20100131-4297-ylrtmu-0 +1 -0
- data/test/tmp/RackMultipart20100131-4434-11fsv9d-0 +0 -0
- data/test/tmp/RackMultipart20100131-4434-19ycsmr-0 +1 -0
- data/test/tmp/RackMultipart20100131-4434-1h0ws4q-0 +1 -0
- data/test/tmp/RackMultipart20100131-4434-1lszvv8-0 +0 -0
- data/test/tmp/RackMultipart20100131-4434-1ocgqu3-0 +1 -0
- data/test/tmp/RackMultipart20100131-4434-1ukqdfd-0 +1 -0
- data/test/tmp/RackMultipart20100131-4434-cq7rvl-0 +1 -0
- data/test/tmp/RackMultipart20100131-4434-f7jbl4-0 +0 -0
- data/test/tmp/RackMultipart20100131-4434-vxlg5t-0 +0 -0
- data/test/tmp/RackMultipart20100131-4544-1bf8inz-0 +1 -0
- data/test/tmp/RackMultipart20100131-4544-1vj44nb-0 +0 -0
- data/test/tmp/RackMultipart20100131-4544-20mdip-0 +1 -0
- data/test/tmp/RackMultipart20100131-4544-89y67y-0 +0 -0
- data/test/tmp/RackMultipart20100131-4544-gdbsui-0 +1 -0
- data/test/tmp/RackMultipart20100131-4544-ko8plt-0 +0 -0
- data/test/tmp/RackMultipart20100131-4544-ojykbo-0 +1 -0
- data/test/tmp/RackMultipart20100131-4544-r8sahr-0 +0 -0
- data/test/tmp/RackMultipart20100131-4544-uluv8k-0 +1 -0
- data/test/tmp/RackMultipart20100131-4655-11ovmuw-0 +0 -0
- data/test/tmp/RackMultipart20100131-4655-12iht5p-0 +1 -0
- data/test/tmp/RackMultipart20100131-4655-142j0ug-0 +0 -0
- data/test/tmp/RackMultipart20100131-4655-15affqj-0 +0 -0
- data/test/tmp/RackMultipart20100131-4655-1gv4gb4-0 +1 -0
- data/test/tmp/RackMultipart20100131-4655-1gwchw7-0 +1 -0
- data/test/tmp/RackMultipart20100131-4655-1hvqx5t-0 +1 -0
- data/test/tmp/RackMultipart20100131-4655-1jhgk7a-0 +1 -0
- data/test/tmp/RackMultipart20100131-4655-1yktury-0 +0 -0
- data/test/tmp/RackMultipart20100131-5244-13z86ip-0 +0 -0
- data/test/tmp/RackMultipart20100131-5244-17vpiv6-0 +0 -0
- data/test/tmp/RackMultipart20100131-5244-1a9w3e-0 +1 -0
- data/test/tmp/RackMultipart20100131-5244-1ox8g0l-0 +1 -0
- data/test/tmp/RackMultipart20100131-5244-1qrzlqz-0 +1 -0
- data/test/tmp/RackMultipart20100131-5244-g3mpli-0 +0 -0
- data/test/tmp/RackMultipart20100131-5244-gcl80c-0 +0 -0
- data/test/tmp/RackMultipart20100131-5244-jqk7el-0 +1 -0
- data/test/tmp/RackMultipart20100131-5244-st1ldm-0 +1 -0
- data/test/tmp/RackMultipart20100131-5383-10si01q-0 +0 -0
- data/test/tmp/RackMultipart20100131-5383-16ye4w3-0 +1 -0
- data/test/tmp/RackMultipart20100131-5383-1imlta8-0 +0 -0
- data/test/tmp/RackMultipart20100131-5383-1r3gvaw-0 +0 -0
- data/test/tmp/RackMultipart20100131-5383-3wialw-0 +1 -0
- data/test/tmp/RackMultipart20100131-5383-k16uor-0 +1 -0
- data/test/tmp/RackMultipart20100131-5383-oz1b3a-0 +0 -0
- data/test/tmp/RackMultipart20100131-5383-una84e-0 +1 -0
- data/test/tmp/RackMultipart20100131-5383-zk1hmz-0 +1 -0
- data/test/tmp/RackMultipart20100131-5711-12j0qy5-0 +1 -0
- data/test/tmp/RackMultipart20100131-5711-1cozdic-0 +0 -0
- data/test/tmp/RackMultipart20100131-5711-1kebrgm-0 +0 -0
- data/test/tmp/RackMultipart20100131-5711-1q3jt9q-0 +0 -0
- data/test/tmp/RackMultipart20100131-5711-6sv1xg-0 +1 -0
- data/test/tmp/RackMultipart20100131-5711-esxrbg-0 +0 -0
- data/test/tmp/RackMultipart20100131-5711-jfbr34-0 +1 -0
- data/test/tmp/RackMultipart20100131-5711-q1e91g-0 +1 -0
- data/test/tmp/RackMultipart20100131-5711-tdauxm-0 +1 -0
- data/test/tmp/RackMultipart20100131-91110-1196t1f-0 +1 -0
- data/test/tmp/RackMultipart20100131-91110-11tfgc4-0 +1 -0
- data/test/tmp/RackMultipart20100131-91110-19e4l6u-0 +0 -0
- data/test/tmp/RackMultipart20100131-91110-1m6i8r4-0 +0 -0
- data/test/tmp/RackMultipart20100131-91110-1nv9cn8-0 +1 -0
- data/test/tmp/RackMultipart20100131-91110-6gbf58-0 +0 -0
- data/test/tmp/RackMultipart20100131-91110-b7iewa-0 +1 -0
- data/test/tmp/RackMultipart20100131-91110-b8kbab-0 +0 -0
- data/test/tmp/RackMultipart20100131-91110-rq2ytl-0 +1 -0
- data/test/tmp/RackMultipart20100131-91876-1848spe-0 +1 -0
- data/test/tmp/RackMultipart20100131-91876-1u8xsmd-0 +0 -0
- data/test/tmp/RackMultipart20100131-91876-1vlruve-0 +0 -0
- data/test/tmp/RackMultipart20100131-91876-cbcvg1-0 +1 -0
- data/test/tmp/RackMultipart20100131-91876-jv0zd7-0 +1 -0
- data/test/tmp/RackMultipart20100131-91876-laype7-0 +1 -0
- data/test/tmp/RackMultipart20100131-91876-mswlj3-0 +1 -0
- data/test/tmp/RackMultipart20100131-91876-se56ms-0 +0 -0
- data/test/tmp/RackMultipart20100131-91876-t14psz-0 +0 -0
- data/test/tmp/RackMultipart20100131-93665-1cv0oop-0 +1 -0
- data/test/tmp/RackMultipart20100131-93665-1n0c582-0 +0 -0
- data/test/tmp/RackMultipart20100131-93665-1obpgzg-0 +1 -0
- data/test/tmp/RackMultipart20100131-93665-1pgbkl0-0 +1 -0
- data/test/tmp/RackMultipart20100131-93665-1udk862-0 +1 -0
- data/test/tmp/RackMultipart20100131-93665-9xxo6q-0 +0 -0
- data/test/tmp/RackMultipart20100131-93665-eawsec-0 +0 -0
- data/test/tmp/RackMultipart20100131-93665-g5rmm9-0 +0 -0
- data/test/tmp/RackMultipart20100131-93665-kdm9y0-0 +1 -0
- data/test/tmp/RackMultipart20100131-96270-10h26kt-0 +0 -0
- data/test/tmp/RackMultipart20100131-96270-1dtgwke-0 +1 -0
- data/test/tmp/RackMultipart20100131-96270-1pib5qg-0 +0 -0
- data/test/tmp/RackMultipart20100131-96270-1tfonee-0 +1 -0
- data/test/tmp/RackMultipart20100131-96270-1xoj9si-0 +0 -0
- data/test/tmp/RackMultipart20100131-96270-5kzssn-0 +0 -0
- data/test/tmp/RackMultipart20100131-96270-5qgi09-0 +1 -0
- data/test/tmp/RackMultipart20100131-96270-dlgdff-0 +1 -0
- data/test/tmp/RackMultipart20100131-96270-uky8ij-0 +1 -0
- data/test/tmp/RackMultipart20100131-96373-140mlqp-0 +1 -0
- data/test/tmp/RackMultipart20100131-96373-16du1gs-0 +1 -0
- data/test/tmp/RackMultipart20100131-96373-181k6zk-0 +1 -0
- data/test/tmp/RackMultipart20100131-96373-1f1xgl8-0 +0 -0
- data/test/tmp/RackMultipart20100131-96373-1v4tnat-0 +1 -0
- data/test/tmp/RackMultipart20100131-96373-5iwxty-0 +0 -0
- data/test/tmp/RackMultipart20100131-96373-nrglr4-0 +1 -0
- data/test/tmp/RackMultipart20100131-96373-tj67zf-0 +0 -0
- data/test/tmp/RackMultipart20100131-96373-y7mw5e-0 +0 -0
- data/test/tmp/RackMultipart20100131-96488-1c52jwo-0 +0 -0
- data/test/tmp/RackMultipart20100131-96488-1g4n5g3-0 +0 -0
- data/test/tmp/RackMultipart20100131-96488-1ih9vjx-0 +1 -0
- data/test/tmp/RackMultipart20100131-96488-1m67bqh-0 +1 -0
- data/test/tmp/RackMultipart20100131-96488-1sff2qf-0 +1 -0
- data/test/tmp/RackMultipart20100131-96488-1vxr0sz-0 +0 -0
- data/test/tmp/RackMultipart20100131-96488-f1va0r-0 +1 -0
- data/test/tmp/RackMultipart20100131-96488-godmi4-0 +0 -0
- data/test/tmp/RackMultipart20100131-96488-v7puqu-0 +1 -0
- data/test/tmp/RackMultipart20100131-96889-10srx2y-0 +1 -0
- data/test/tmp/RackMultipart20100131-96889-14sujbg-0 +1 -0
- data/test/tmp/RackMultipart20100131-96889-1edgzzr-0 +0 -0
- data/test/tmp/RackMultipart20100131-96889-1jtlvx0-0 +0 -0
- data/test/tmp/RackMultipart20100131-96889-1leo16l-0 +0 -0
- data/test/tmp/RackMultipart20100131-96889-1nroez0-0 +0 -0
- data/test/tmp/RackMultipart20100131-96889-2z4au4-0 +1 -0
- data/test/tmp/RackMultipart20100131-96889-v6dj39-0 +1 -0
- data/test/tmp/RackMultipart20100131-96889-z2owq5-0 +1 -0
- data/test/tmp/RackMultipart20100131-97178-1kzzmnx-0 +0 -0
- data/test/tmp/RackMultipart20100131-97178-1p48git-0 +0 -0
- data/test/tmp/RackMultipart20100131-97178-1pak2jq-0 +0 -0
- data/test/tmp/RackMultipart20100131-97178-1vb21z0-0 +1 -0
- data/test/tmp/RackMultipart20100131-97178-3pstpf-0 +1 -0
- data/test/tmp/RackMultipart20100131-97178-ah9j8g-0 +0 -0
- data/test/tmp/RackMultipart20100131-97178-dzgylu-0 +1 -0
- data/test/tmp/RackMultipart20100131-97178-eh8uuk-0 +1 -0
- data/test/tmp/RackMultipart20100131-97178-mompd7-0 +1 -0
- data/test/tmp/RackMultipart20100131-97404-11op195-0 +0 -0
- data/test/tmp/RackMultipart20100131-97404-15vgv5a-0 +0 -0
- data/test/tmp/RackMultipart20100131-97404-1ipzwm0-0 +1 -0
- data/test/tmp/RackMultipart20100131-97404-1je7x2p-0 +1 -0
- data/test/tmp/RackMultipart20100131-97404-1mb6juq-0 +0 -0
- data/test/tmp/RackMultipart20100131-97404-1uhf75x-0 +1 -0
- data/test/tmp/RackMultipart20100131-97404-4bkht5-0 +0 -0
- data/test/tmp/RackMultipart20100131-97404-8wsyqb-0 +1 -0
- data/test/tmp/RackMultipart20100131-97404-p5bwvt-0 +1 -0
- data/test/tmp/RackMultipart20100131-97860-134h0yk-0 +1 -0
- data/test/tmp/RackMultipart20100131-97860-137z1v8-0 +1 -0
- data/test/tmp/RackMultipart20100131-97860-1fxatvg-0 +1 -0
- data/test/tmp/RackMultipart20100131-97860-1rkrzj1-0 +0 -0
- data/test/tmp/RackMultipart20100131-97860-5aahhh-0 +0 -0
- data/test/tmp/RackMultipart20100131-97860-bk11df-0 +0 -0
- data/test/tmp/RackMultipart20100131-97860-bpt71-0 +0 -0
- data/test/tmp/RackMultipart20100131-97860-k5kib2-0 +1 -0
- data/test/tmp/RackMultipart20100131-97860-yj6uro-0 +1 -0
- data/test/tmp/RackMultipart20100131-97900-12zytln-0 +1 -0
- data/test/tmp/RackMultipart20100131-97900-1hpjwgc-0 +0 -0
- data/test/tmp/RackMultipart20100131-97900-1kuj8ok-0 +1 -0
- data/test/tmp/RackMultipart20100131-97900-1wtlnbe-0 +1 -0
- data/test/tmp/RackMultipart20100131-97900-66d1fg-0 +0 -0
- data/test/tmp/RackMultipart20100131-97900-m7hm3n-0 +1 -0
- data/test/tmp/RackMultipart20100131-97900-n2a8fd-0 +0 -0
- data/test/tmp/RackMultipart20100131-97900-y9kwnp-0 +1 -0
- data/test/tmp/RackMultipart20100131-97900-yu52kd-0 +0 -0
- data/test/tmp/RackMultipart20100131-97937-1fxbun8-0 +1 -0
- data/test/tmp/RackMultipart20100131-97937-1qjxhia-0 +1 -0
- data/test/tmp/RackMultipart20100131-97937-1vwp4fj-0 +1 -0
- data/test/tmp/RackMultipart20100131-97937-aha3dl-0 +0 -0
- data/test/tmp/RackMultipart20100131-97937-asyrei-0 +1 -0
- data/test/tmp/RackMultipart20100131-97937-d8rmsv-0 +1 -0
- data/test/tmp/RackMultipart20100131-97937-g9oy2w-0 +0 -0
- data/test/tmp/RackMultipart20100131-97937-lt544p-0 +0 -0
- data/test/tmp/RackMultipart20100131-97937-mgf4qa-0 +0 -0
- data/test/tmp/RackMultipart20100131-98521-1fdcemt-0 +0 -0
- data/test/tmp/RackMultipart20100131-98521-1l33j9z-0 +1 -0
- data/test/tmp/RackMultipart20100131-98521-1ohobk0-0 +0 -0
- data/test/tmp/RackMultipart20100131-98521-45jwmb-0 +1 -0
- data/test/tmp/RackMultipart20100131-98521-7vu49l-0 +1 -0
- data/test/tmp/RackMultipart20100131-98521-9kzlxx-0 +1 -0
- data/test/tmp/RackMultipart20100131-98521-cycfj-0 +0 -0
- data/test/tmp/RackMultipart20100131-98521-hhd1bf-0 +1 -0
- data/test/tmp/RackMultipart20100131-98521-iqvlrq-0 +0 -0
- data/test/tmp/RackMultipart20100201-6555-1ce2ok5-0 +1 -0
- data/test/tmp/RackMultipart20100201-6555-2rd8zm-0 +0 -0
- data/test/tmp/RackMultipart20100201-6555-9brifb-0 +0 -0
- data/test/tmp/RackMultipart20100201-6555-dcf8h0-0 +1 -0
- data/test/tmp/RackMultipart20100201-6555-meb4gi-0 +1 -0
- data/test/tmp/RackMultipart20100201-6555-sci6i5-0 +0 -0
- data/test/tmp/RackMultipart20100201-6555-sox363-0 +1 -0
- data/test/tmp/RackMultipart20100201-6555-x9kyyz-0 +0 -0
- data/test/tmp/RackMultipart20100201-6555-zqn4x6-0 +1 -0
- data/test/tmp/RackMultipart20100204-40252-123q4em-0 +1 -0
- data/test/tmp/RackMultipart20100204-40252-1jzjes5-0 +0 -0
- data/test/tmp/RackMultipart20100204-40252-1reve0y-0 +0 -0
- data/test/tmp/RackMultipart20100204-40252-1u2b3qm-0 +1 -0
- data/test/tmp/RackMultipart20100204-40252-3un54m-0 +1 -0
- data/test/tmp/RackMultipart20100204-40252-a2oh9b-0 +0 -0
- data/test/tmp/RackMultipart20100204-40252-od0run-0 +1 -0
- data/test/tmp/RackMultipart20100204-40252-qbgvnt-0 +0 -0
- data/test/tmp/RackMultipart20100204-40252-tey6cp-0 +1 -0
- data/test/tmp/RackMultipart20100204-40512-15nitzo-0 +0 -0
- data/test/tmp/RackMultipart20100204-40512-18g0pdd-0 +0 -0
- data/test/tmp/RackMultipart20100204-40512-1brd1j2-0 +1 -0
- data/test/tmp/RackMultipart20100204-40512-1fz7mb1-0 +0 -0
- data/test/tmp/RackMultipart20100204-40512-1n1muze-0 +1 -0
- data/test/tmp/RackMultipart20100204-40512-1q3r24f-0 +1 -0
- data/test/tmp/RackMultipart20100204-40512-1tnhl3y-0 +1 -0
- data/test/tmp/RackMultipart20100204-40512-okgtu4-0 +0 -0
- data/test/tmp/RackMultipart20100204-40512-qn5sg0-0 +1 -0
- data/test/tmp/RackMultipart20100204-57419-15yya1x-0 +1 -0
- data/test/tmp/RackMultipart20100204-57419-19m1c3d-0 +0 -0
- data/test/tmp/RackMultipart20100204-57419-1n7d3i6-0 +1 -0
- data/test/tmp/RackMultipart20100204-57419-1npqntd-0 +0 -0
- data/test/tmp/RackMultipart20100204-57419-bklpgc-0 +1 -0
- data/test/tmp/RackMultipart20100204-57419-ei91e5-0 +0 -0
- data/test/tmp/RackMultipart20100204-57419-g1hqwp-0 +1 -0
- data/test/tmp/RackMultipart20100204-57419-t7ag5k-0 +0 -0
- data/test/tmp/RackMultipart20100204-57419-xiebhk-0 +1 -0
- data/test/tmp/RackMultipart20100204-57658-16cfrux-0 +1 -0
- data/test/tmp/RackMultipart20100204-57658-19wbkan-0 +1 -0
- data/test/tmp/RackMultipart20100204-57658-1qptexw-0 +0 -0
- data/test/tmp/RackMultipart20100204-57658-1u2bpg8-0 +0 -0
- data/test/tmp/RackMultipart20100204-57658-1v8jrhq-0 +0 -0
- data/test/tmp/RackMultipart20100204-57658-48l4m0-0 +1 -0
- data/test/tmp/RackMultipart20100204-57658-hpw0o9-0 +1 -0
- data/test/tmp/RackMultipart20100204-57658-l75jof-0 +1 -0
- data/test/tmp/RackMultipart20100204-57658-t3or19-0 +0 -0
- data/test/tmp/RackMultipart20100204-57712-101mfz2-0 +1 -0
- data/test/tmp/RackMultipart20100204-57712-136zsqs-0 +0 -0
- data/test/tmp/RackMultipart20100204-57712-16ge0ra-0 +1 -0
- data/test/tmp/RackMultipart20100204-57712-18dppuc-0 +0 -0
- data/test/tmp/RackMultipart20100204-57712-1aj6ady-0 +0 -0
- data/test/tmp/RackMultipart20100204-57712-1nqkndh-0 +1 -0
- data/test/tmp/RackMultipart20100204-57712-1pngw5w-0 +1 -0
- data/test/tmp/RackMultipart20100204-57712-6lo90o-0 +1 -0
- data/test/tmp/RackMultipart20100204-57712-ufq7x-0 +0 -0
- data/test/tmp/RackMultipart20100204-58321-10lc3a6-0 +1 -0
- data/test/tmp/RackMultipart20100204-58321-15o8a4o-0 +0 -0
- data/test/tmp/RackMultipart20100204-58321-1sos76-0 +1 -0
- data/test/tmp/RackMultipart20100204-58321-26876u-0 +1 -0
- data/test/tmp/RackMultipart20100204-58321-hnz5b8-0 +0 -0
- data/test/tmp/RackMultipart20100204-58321-lrmvfa-0 +1 -0
- data/test/tmp/RackMultipart20100204-58321-q0ak2g-0 +1 -0
- data/test/tmp/RackMultipart20100204-58321-sa8wal-0 +0 -0
- data/test/tmp/RackMultipart20100204-58321-z7jxeq-0 +0 -0
- data/test/tmp/RackMultipart20100204-59702-1fdw43n-0 +1 -0
- data/test/tmp/RackMultipart20100204-59702-2hf4ld-0 +1 -0
- data/test/tmp/RackMultipart20100204-59702-2ldyxj-0 +0 -0
- data/test/tmp/RackMultipart20100204-59702-aqevfm-0 +1 -0
- data/test/tmp/RackMultipart20100204-59702-dpbv5t-0 +0 -0
- data/test/tmp/RackMultipart20100204-59702-ec8276-0 +1 -0
- data/test/tmp/RackMultipart20100204-59702-jn6ncc-0 +1 -0
- data/test/tmp/RackMultipart20100204-59702-m8xobr-0 +0 -0
- data/test/tmp/RackMultipart20100204-59702-q89plk-0 +0 -0
- data/test/tmp/RackMultipart20100204-59747-14sdb6-0 +1 -0
- data/test/tmp/RackMultipart20100204-59747-15742uk-0 +1 -0
- data/test/tmp/RackMultipart20100204-59747-15lp9kl-0 +0 -0
- data/test/tmp/RackMultipart20100204-59747-1a7ub6i-0 +0 -0
- data/test/tmp/RackMultipart20100204-59747-1i77fp1-0 +1 -0
- data/test/tmp/RackMultipart20100204-59747-1mfl7gf-0 +0 -0
- data/test/tmp/RackMultipart20100204-59747-1qrkt89-0 +0 -0
- data/test/tmp/RackMultipart20100204-59747-6biaui-0 +1 -0
- data/test/tmp/RackMultipart20100204-59747-m7iqd0-0 +1 -0
- data/test/tmp/RackMultipart20100204-60097-1kgjis5-0 +0 -0
- data/test/tmp/RackMultipart20100204-60097-1odv8os-0 +1 -0
- data/test/tmp/RackMultipart20100204-60097-1p5yvyk-0 +0 -0
- data/test/tmp/RackMultipart20100204-60097-43si9w-0 +1 -0
- data/test/tmp/RackMultipart20100204-60097-awjfar-0 +1 -0
- data/test/tmp/RackMultipart20100204-60097-d7g9gf-0 +1 -0
- data/test/tmp/RackMultipart20100204-60097-fmxwtb-0 +0 -0
- data/test/tmp/RackMultipart20100204-60097-i8r8ph-0 +0 -0
- data/test/tmp/RackMultipart20100204-60097-yv1urn-0 +1 -0
- data/test/tmp/RackMultipart20100204-60773-14k87gs-0 +1 -0
- data/test/tmp/RackMultipart20100204-60773-15uh5fc-0 +1 -0
- data/test/tmp/RackMultipart20100204-60773-1b4gi3-0 +1 -0
- data/test/tmp/RackMultipart20100204-60773-1g0sg6r-0 +1 -0
- data/test/tmp/RackMultipart20100204-60773-1jgjbwl-0 +0 -0
- data/test/tmp/RackMultipart20100204-60773-1kk50pp-0 +0 -0
- data/test/tmp/RackMultipart20100204-60773-1xktk0q-0 +0 -0
- data/test/tmp/RackMultipart20100204-60773-jcuq05-0 +1 -0
- data/test/tmp/RackMultipart20100204-60773-og04od-0 +0 -0
- data/test/tmp/RackMultipart20100205-69480-169yh4u-0 +1 -0
- data/test/tmp/RackMultipart20100205-69480-16ry3sk-0 +0 -0
- data/test/tmp/RackMultipart20100205-69480-1dm58eb-0 +1 -0
- data/test/tmp/RackMultipart20100205-69480-1e6dfel-0 +1 -0
- data/test/tmp/RackMultipart20100205-69480-1knio7h-0 +0 -0
- data/test/tmp/RackMultipart20100205-69480-1rxthf1-0 +1 -0
- data/test/tmp/RackMultipart20100205-69480-1sqp1p6-0 +1 -0
- data/test/tmp/RackMultipart20100205-69480-k3c5xi-0 +0 -0
- data/test/tmp/RackMultipart20100205-69480-y0o7bs-0 +0 -0
- data/test/tmp/RackMultipart20100205-89390-12t4t4h-0 +0 -0
- data/test/tmp/RackMultipart20100205-89390-18sku49-0 +1 -0
- data/test/tmp/RackMultipart20100205-89390-1aeaxrj-0 +0 -0
- data/test/tmp/RackMultipart20100205-89390-1ej1o6b-0 +0 -0
- data/test/tmp/RackMultipart20100205-89390-1qbye80-0 +1 -0
- data/test/tmp/RackMultipart20100205-89390-1t2reiw-0 +0 -0
- data/test/tmp/RackMultipart20100205-89390-2j4ebh-0 +1 -0
- data/test/tmp/RackMultipart20100205-89390-cqkz93-0 +1 -0
- data/test/tmp/RackMultipart20100205-89390-ehlxym-0 +1 -0
- data/test/tmp/RackMultipart20100207-41099-1db1yc7-0 +0 -0
- data/test/tmp/RackMultipart20100207-41099-1enfwih-0 +0 -0
- data/test/tmp/RackMultipart20100207-41099-1hiqogn-0 +1 -0
- data/test/tmp/RackMultipart20100207-41099-1n21xz7-0 +0 -0
- data/test/tmp/RackMultipart20100207-41099-1ofbaxj-0 +0 -0
- data/test/tmp/RackMultipart20100207-41099-1pqhw0q-0 +1 -0
- data/test/tmp/RackMultipart20100207-41099-1s6zxzw-0 +1 -0
- data/test/tmp/RackMultipart20100207-41099-asxuq9-0 +1 -0
- data/test/tmp/RackMultipart20100207-41099-eowd6o-0 +1 -0
- data/test/tmp/RackMultipart20100209-65426-10ag1jr-0 +1 -0
- data/test/tmp/RackMultipart20100209-65426-13zm3yu-0 +0 -0
- data/test/tmp/RackMultipart20100209-65426-1otg9r6-0 +0 -0
- data/test/tmp/RackMultipart20100209-65426-1rdz5v6-0 +1 -0
- data/test/tmp/RackMultipart20100209-65426-1usq2ff-0 +1 -0
- data/test/tmp/RackMultipart20100209-65426-1wxs8n7-0 +1 -0
- data/test/tmp/RackMultipart20100209-65426-4uffbj-0 +1 -0
- data/test/tmp/RackMultipart20100209-65426-a5hra7-0 +0 -0
- data/test/tmp/RackMultipart20100209-65426-ylpq1h-0 +0 -0
- data/test/tmp/RackMultipart20100209-65558-1bghj62-0 +0 -0
- data/test/tmp/RackMultipart20100209-65558-1fbovnp-0 +1 -0
- data/test/tmp/RackMultipart20100209-65558-1hfwl02-0 +1 -0
- data/test/tmp/RackMultipart20100209-65558-b35wyr-0 +0 -0
- data/test/tmp/RackMultipart20100209-65558-esd0f1-0 +1 -0
- data/test/tmp/RackMultipart20100209-65558-gq26ri-0 +0 -0
- data/test/tmp/RackMultipart20100209-65558-mwizdx-0 +1 -0
- data/test/tmp/RackMultipart20100209-65558-ntlzq6-0 +1 -0
- data/test/tmp/RackMultipart20100209-65558-yoxcgc-0 +0 -0
- data/test/tmp/RackMultipart20100212-43647-12bo3g0-0 +0 -0
- data/test/tmp/RackMultipart20100212-43647-133b4b8-0 +1 -0
- data/test/tmp/RackMultipart20100212-43647-1b2g7f7-0 +1 -0
- data/test/tmp/RackMultipart20100212-43647-1et2ima-0 +0 -0
- data/test/tmp/RackMultipart20100212-43647-1thip8b-0 +1 -0
- data/test/tmp/RackMultipart20100212-43647-1x05hpf-0 +1 -0
- data/test/tmp/RackMultipart20100212-43647-cbseb3-0 +0 -0
- data/test/tmp/RackMultipart20100212-43647-mybv0k-0 +1 -0
- data/test/tmp/RackMultipart20100212-43647-scxg3k-0 +0 -0
- data/test/tmp/RackMultipart20100316-26215-15fvlkf-0 +1 -0
- data/test/tmp/RackMultipart20100316-26215-15ms9t8-0 +0 -0
- data/test/tmp/RackMultipart20100316-26215-196k138-0 +0 -0
- data/test/tmp/RackMultipart20100316-26215-1qbnikd-0 +1 -0
- data/test/tmp/RackMultipart20100316-26215-1tey31-0 +1 -0
- data/test/tmp/RackMultipart20100316-26215-dp0rwx-0 +0 -0
- data/test/tmp/RackMultipart20100316-26215-lmfp1-0 +1 -0
- data/test/tmp/RackMultipart20100316-26215-njsjmn-0 +0 -0
- data/test/tmp/RackMultipart20100316-26215-z39dzf-0 +1 -0
- data/test/tmp/mona_lisa.jpg20100114-2850-1t73ev7-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100127-16318-1bffb05-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-1041-1rvua2k-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-1200-i3rods-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-1566-18mcqh9-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-2176-1t3bsp-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-2251-1tz4wqa-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-2563-ohvnnb-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-3076-m9pk9y-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-3324-9rpzdj-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-3712-wf4b9m-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-4098-l9cg9j-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-4178-vk5vzl-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-4297-ger5pb-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-4434-1bacf3n-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-4544-1mod9m0-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-4655-14v218s-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-5244-j05927-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-5383-immke7-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-5711-li3y72-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-91110-1tcf6h5-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-91876-1qvpsdp-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-93665-e6omtk-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-96270-l86z07-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-96373-du21ld-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-96488-14o5536-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-96889-1gtncmi-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-97178-1ppkuxt-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-97404-kcrmpr-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-97860-q1g3ex-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-97900-1mp4tmq-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-97937-o67sr4-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100131-98521-jd7yia-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100201-6555-1vw40l7-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100204-40252-13zlhuo-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100204-40512-nc3x8n-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100204-57419-7yfe6o-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100204-57658-b4op4h-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100204-57712-11uqh50-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100204-58321-ukp8q0-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100204-59747-ov4w4c-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100204-60097-1ekqjc6-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100204-60773-1eh6ap6-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100205-69480-tay2k2-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100205-89390-16rh2ue-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100205-91358-cdsa2g-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100207-41099-llyyhb-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100209-65426-pequnv-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100209-65558-fbl6xv-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100212-43647-l1vsxc-0 +0 -0
- data/test/tmp/mona_lisa.jpg20100316-26215-1jtjllg-0 +0 -0
- metadata +542 -18
- data/lib/action_view/erb/util.rb +0 -44
- data/lib/action_view/safe_buffer.rb +0 -28
- 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
|
data/MIT-LICENSE
CHANGED
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" }
|
158
|
+
{ "client_name" => "37signals", "project_name" => "basecamp" }.
|
159
159
|
|
160
|
-
From that URL
|
160
|
+
From that URL you can redirect providing new parameters in a number of ways:
|
161
161
|
|
162
|
-
redirect_to
|
163
|
-
|
162
|
+
redirect_to :action => "edit"
|
163
|
+
# /clients/37signals/basecamp/project/edit
|
164
164
|
|
165
|
-
redirect_to
|
166
|
-
|
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
|
-
*
|
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.
|
83
|
-
s.add_dependency('rack', '~> 1.
|
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'
|
data/lib/action_controller.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#--
|
2
|
-
# Copyright (c) 2004-
|
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
|
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
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
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
|
-
|
156
|
-
|
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
|
1096
|
-
# redirect_to :action=>'atom', :status
|
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,
|
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.
|
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
|
-
|
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
|
-
|
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,
|