Skip to content
Browse files

Fixes expires_now and cleans things up a bit

  • Loading branch information...
1 parent d7499f8 commit e1786ee6ebee9fab10d6756be1eeacbbe6b65b48 @wycats wycats committed Oct 26, 2009
View
2 actionpack/lib/action_controller/metal/conditional_get.rb
@@ -80,7 +80,7 @@ def expires_in(seconds, options = {}) #:doc:
# Sets a HTTP 1.1 Cache-Control header of "no-cache" so no caching should occur by the browser or
# intermediate caches (like caching proxy servers).
def expires_now #:doc:
- response.headers["Cache-Control"] = "no-cache"
+ response.cache_control.replace(:no_cache => true)
end
end
end
View
21 actionpack/lib/action_dispatch/http/request.rb
@@ -136,19 +136,16 @@ def etag_matches?(etag)
# If-Modified-Since and If-None-Match conditions. If both headers are
# supplied, both must match, or the request is not considered fresh.
def fresh?(response)
- case
- when if_modified_since && if_none_match
- not_modified?(response.last_modified) && etag_matches?(response.etag)
- when if_modified_since
- not_modified?(response.last_modified)
- when if_none_match
- etag_matches?(response.etag)
- else
- false
- end
- end
+ last_modified = if_modified_since
+ etag = if_none_match
- ONLY_ALL = [Mime::ALL].freeze
+ return false unless last_modified || etag
+
+ success = true
+ success &&= not_modified?(response.last_modified) if last_modified
+ success &&= etag_matches?(response.etag) if etag
+ success
+ end
# Returns the Mime type for the \format used in the request.
#
View
2 actionpack/lib/action_dispatch/http/response.rb
@@ -270,6 +270,8 @@ def set_conditional_cache_control!
if control.empty?
headers["Cache-Control"] = DEFAULT_CACHE_CONTROL
+ elsif @cache_control[:no_cache]
+ headers["Cache-Control"] = "no-cache"
else
extras = control[:extras]
max_age = control[:max_age]
View
10 actionpack/test/controller/render_test.rb
@@ -73,6 +73,11 @@ def conditional_hello_with_expires_in_with_public_with_more_keys_old_syntax
render :action => 'hello_world'
end
+ def conditional_hello_with_expires_now
+ expires_now
+ render :action => 'hello_world'
+ end
+
def conditional_hello_with_bangs
render :action => 'hello_world'
end
@@ -1321,6 +1326,11 @@ def test_expires_in_old_syntax
get :conditional_hello_with_expires_in_with_public_with_more_keys_old_syntax
assert_equal "max-age=60, public, max-stale=18000", @response.headers["Cache-Control"]
end
+
+ def test_expires_now
+ get :conditional_hello_with_expires_now
+ assert_equal "no-cache", @response.headers["Cache-Control"]
+ end
end

0 comments on commit e1786ee

Please sign in to comment.
Something went wrong with that request. Please try again.