rack-cachely 0.2.2 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +1 -1
- data/lib/rack-cachely/config.rb +1 -1
- data/lib/rack-cachely/context.rb +9 -2
- data/lib/rack-cachely/key.rb +2 -2
- data/lib/rack-cachely/store.rb +6 -2
- data/lib/rack-cachely/version.rb +1 -1
- metadata +2 -2
data/Gemfile.lock
CHANGED
data/lib/rack-cachely/config.rb
CHANGED
data/lib/rack-cachely/context.rb
CHANGED
@@ -13,6 +13,7 @@ module Rack
|
|
13
13
|
def call(env)
|
14
14
|
@env = env
|
15
15
|
if self.perform_caching?
|
16
|
+
handle_refresh_request
|
16
17
|
results = Rack::Cachely::Store.get(key)
|
17
18
|
if results
|
18
19
|
return results
|
@@ -25,13 +26,19 @@ module Rack
|
|
25
26
|
return results
|
26
27
|
end
|
27
28
|
|
29
|
+
def handle_refresh_request
|
30
|
+
if request.params["refresh-cachely"]
|
31
|
+
Rack::Cachely::Store.delete(key)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
28
35
|
def perform_caching?
|
29
|
-
|
36
|
+
perform_caching = if defined?(Rails)
|
30
37
|
Rails.application.config.action_controller.perform_caching
|
31
38
|
else
|
32
39
|
@env['rack-cachely.perform_caching'].to_s == 'true'
|
33
40
|
end
|
34
|
-
|
41
|
+
perform_caching && request.request_method == 'GET' && !request.params["no-cachely"]
|
35
42
|
end
|
36
43
|
|
37
44
|
def is_cacheable?(results)
|
data/lib/rack-cachely/key.rb
CHANGED
@@ -43,9 +43,9 @@ module Rack
|
|
43
43
|
# and applying consistent escaping.
|
44
44
|
def query_string
|
45
45
|
return nil if @request.query_string.nil?
|
46
|
-
|
46
|
+
ignore_query_params = ["no-cachely", "refresh-cachely", Rack::Cachely.config.ignore_query_params].flatten
|
47
47
|
query = @request.query_string.split(/[&;] */n).map { |p| unescape(p).split('=', 2) }.sort
|
48
|
-
query = query.reject{|k,v|
|
48
|
+
query = query.reject{|k,v| ignore_query_params.include?(k)}.map{ |k,v| "#{escape(k)}=#{escape(v)}" }
|
49
49
|
|
50
50
|
query.join('&')
|
51
51
|
end
|
data/lib/rack-cachely/store.rb
CHANGED
@@ -10,6 +10,9 @@ module Rack
|
|
10
10
|
def get(key)
|
11
11
|
remote do
|
12
12
|
url = "#{config.cachely_url}?_version=#{Rack::Cachely::VERSION}&url=#{CGI.escape(key.to_s)}"
|
13
|
+
if config.verbose
|
14
|
+
logger.debug "Cachely [URL]: #{url}"
|
15
|
+
end
|
13
16
|
uri = URI(url)
|
14
17
|
http = Net::HTTP.new(uri.host, uri.port)
|
15
18
|
request = Net::HTTP::Get.new(uri.request_uri)
|
@@ -25,7 +28,7 @@ module Rack
|
|
25
28
|
logger.info "Cachely [response.code]: #{response.code}"
|
26
29
|
logger.info "Cachely [response.body]: #{response.body}"
|
27
30
|
end
|
28
|
-
if response.code.to_i
|
31
|
+
if (200...300).include?(response.code.to_i)
|
29
32
|
headers = {}
|
30
33
|
response.each_header do |key, value|
|
31
34
|
headers[key] = value
|
@@ -67,8 +70,9 @@ module Rack
|
|
67
70
|
|
68
71
|
def remote(&block)
|
69
72
|
begin
|
70
|
-
Timeout::timeout(
|
73
|
+
Timeout::timeout(config.timeout, &block)
|
71
74
|
rescue Timeout::Error, Errno::ECONNREFUSED => e
|
75
|
+
# raise e
|
72
76
|
logger.error(e)
|
73
77
|
end
|
74
78
|
end
|
data/lib/rack-cachely/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rack-cachely
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-10-
|
12
|
+
date: 2012-10-30 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rack
|