remove rack cache, it has been causing trouble

instead implement an aggressive anonymous cache that is stored in redis
this cache is sitting in the front of the middleware stack enabled only in production
TODO: expire it more intelligently when stuff is created
This commit is contained in:
Sam
2013-10-16 16:39:18 +11:00
parent ff966e3276
commit 3d647a4b41
12 changed files with 180 additions and 115 deletions

View File

@@ -0,0 +1,41 @@
require "spec_helper"
require_dependency "middleware/anonymous_cache"
describe Middleware::AnonymousCache::Helper do
def new_helper(env={})
Middleware::AnonymousCache::Helper.new({
"HTTP_HOST" => "http://test.com",
"REQUEST_URI" => "/path?bla=1",
"REQUEST_METHOD" => "GET"
}.merge(env))
end
context "cachable?" do
it "true by default" do
new_helper.cacheable?.should be_true
end
it "is false for non GET" do
new_helper("ANON_CACHE_DURATION" => 10, "REQUEST_METHOD" => "POST").cacheable?.should be_false
end
end
context "cached" do
let!(:helper) do
new_helper("ANON_CACHE_DURATION" => 10)
end
after do
helper.clear_cache
end
it "returns cached data for cached requests" do
helper.cached.should be_nil
helper.cache([200, {"HELLO" => "WORLD"}, ["hello ", "world"]])
helper.cached.should == [200, {"HELLO" => "WORLD"}, ["hello world"]]
end
end
end