rack-cachely 0.2.2 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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