From 57d9737f2f4174816c59261bb78699a52b9bce32 Mon Sep 17 00:00:00 2001 From: Brendan Ribera Date: Mon, 3 Oct 2011 11:17:12 -0700 Subject: [PATCH 1/2] Test demonstrating #3053: If-Modified-Since gets swallowed up by rack-cache. --- railties/test/application/middleware/cache_test.rb | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/railties/test/application/middleware/cache_test.rb b/railties/test/application/middleware/cache_test.rb index e656ada3c0..050a2161ae 100644 --- a/railties/test/application/middleware/cache_test.rb +++ b/railties/test/application/middleware/cache_test.rb @@ -31,6 +31,10 @@ module ApplicationTests $last_modified ||= Time.now.utc render_conditionally(:last_modified => $last_modified) end + + def keeps_if_modified_since + render :text => request.headers['If-Modified-Since'] + end private def render_conditionally(headers) if stale?(headers.merge(:public => !params[:private])) @@ -47,6 +51,16 @@ module ApplicationTests RUBY end + def test_cache_keeps_if_modified_since + simple_controller + expected = "Wed, 30 May 1984 19:43:31 GMT" + + get "/expires/keeps_if_modified_since", {}, "HTTP_IF_MODIFIED_SINCE" => expected + + assert_equal 200, last_response.status + assert_equal expected, last_response.body, "cache should have kept If-Modified-Since" + end + def test_cache_is_disabled_in_dev_mode simple_controller app("development") From b05a56f47da24e57f1f1a398115cf664ec7eee56 Mon Sep 17 00:00:00 2001 From: Brendan Ribera Date: Mon, 3 Oct 2011 11:27:02 -0700 Subject: [PATCH 2/2] Require rack-cache 1.1. Versions prior to 1.1 delete the If-Modified-Since and If-Not-Modified headers when config.action_controller.perform_caching is true. This has two problems: * unexpected inconsistent behaviour between development & production environments * breaks applications that use of these headers --- actionpack/actionpack.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/actionpack/actionpack.gemspec b/actionpack/actionpack.gemspec index f1b7966b9c..b208357584 100644 --- a/actionpack/actionpack.gemspec +++ b/actionpack/actionpack.gemspec @@ -18,7 +18,7 @@ Gem::Specification.new do |s| s.add_dependency('activesupport', version) s.add_dependency('activemodel', version) - s.add_dependency('rack-cache', '~> 1.0.3') + s.add_dependency('rack-cache', '~> 1.1') s.add_dependency('builder', '~> 3.0.0') s.add_dependency('i18n', '~> 0.6') s.add_dependency('rack', '~> 1.3.2')