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 CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rack-cachely (0.2.2)
4
+ rack-cachely (0.3.0)
5
5
  rack
6
6
 
7
7
  GEM
@@ -5,7 +5,7 @@ module Rack
5
5
  attr_accessor :options
6
6
 
7
7
  def initialize(options = {})
8
- self.options = {ignore_query_params: []}
8
+ self.options = {ignore_query_params: [], timeout: 1.0}
9
9
  options.each do |key, value|
10
10
  self.send("#{key}=", value)
11
11
  end
@@ -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
- config = if Kernel.const_defined?(:Rails)
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
- config && request.request_method == 'GET' && !request.params["no-cachely"]
41
+ perform_caching && request.request_method == 'GET' && !request.params["no-cachely"]
35
42
  end
36
43
 
37
44
  def is_cacheable?(results)
@@ -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| Rack::Cachely.config.ignore_query_params.include?(k)}.map{ |k,v| "#{escape(k)}=#{escape(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
@@ -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 == 200
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(0.5, &block)
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
@@ -1,5 +1,5 @@
1
1
  module Rack
2
2
  class Cachely
3
- VERSION = "0.2.2"
3
+ VERSION = "0.3.0"
4
4
  end
5
5
  end
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.2.2
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-27 00:00:00.000000000 Z
12
+ date: 2012-10-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rack