cachebar 1.1.0 → 1.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/Gemfile +2 -2
- data/HISTORY +10 -0
- data/README.md +13 -0
- data/Rakefile +11 -8
- data/VERSION +1 -1
- data/{CacheBar.gemspec → cachebar.gemspec} +18 -17
- data/lib/cachebar.rb +1 -1
- data/lib/httparty/httpcache.rb +12 -4
- data/test/test_cachebar.rb +10 -0
- metadata +57 -50
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
OGIwMWMwMDhlNjhkZTRkMGVjNDA3OTg4NzA3YzBkODFlYzMyY2I4ZQ==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
MDZlOGQ1ZjM3OTQ5MzU4Yjc0MzdiNTJjZTYxNWQ5ZWFkMTA0NjZmYQ==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
NGQ3N2Y0Y2ZkZmU0YTMwMTUwY2Y5M2RhOWFkMjAxMjM1MTVhZDA4Y2FhMmYx
|
10
|
+
MzIzMGQ2ZmM5MmFmYjVmNjY1MGQ3ZGI1MjU3YjNiZDcyZGUzOWViYjVkZDIz
|
11
|
+
MDNkMTc2YTFhMjFjNzU0MzI0NzE5MjdmZDk4YTk4NWJlYzc3Yjk=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
YTBlYTNkN2MwMjdlM2JiYTJlMmYzMzkwMmQ1ZjY1ZTkwYzc4NjYyMzVhY2Q3
|
14
|
+
NTRjZDIxY2ExYzI1ZWIzMGYxY2M1ZDQ3M2M3YjhlZTYzM2VjOTI3NGVmMzVl
|
15
|
+
NmJlZmRmZWI3NGM2YzQ4MzM3OGY1ZTExNzM2OWUzZTJmY2QzZWY=
|
data/Gemfile
CHANGED
@@ -9,9 +9,9 @@ group :development do
|
|
9
9
|
gem "shoulda"
|
10
10
|
gem "bundler", "~> 1.0"
|
11
11
|
gem "jeweler", "~> 1.6"
|
12
|
-
gem "rcov"
|
12
|
+
gem "rcov", :platforms => :ruby_18
|
13
13
|
gem "webmock"
|
14
|
-
gem 'vcr'
|
14
|
+
gem 'vcr', '~> 1.11'
|
15
15
|
gem 'mocha'
|
16
16
|
gem 'rake', '~> 0.8.7'
|
17
17
|
gem 'SystemTimer', :platforms => :ruby_18
|
data/HISTORY
CHANGED
@@ -5,3 +5,13 @@
|
|
5
5
|
* Store a backup of responses incase the API service goes down.
|
6
6
|
* If an exception or timeout occurs and there is no backup an exception is raised.
|
7
7
|
* If a bad response is received the backup will be used if available otherwise the bad response will be returned
|
8
|
+
== 1.0.1 / 2011-06-01
|
9
|
+
* Include gemspec in release
|
10
|
+
* Allow non-required keys via `require_keys` method
|
11
|
+
== 1.0.2 / 2011-11-17
|
12
|
+
* Only cache get requests requests
|
13
|
+
* SystemTimer is no longer a hard dep because it's not needed or available on ruby 1.9
|
14
|
+
* Don't extend core classes
|
15
|
+
== 1.1.0 / 2012-4-23
|
16
|
+
* Update to work with latest version of HTTParty
|
17
|
+
* Change name of gem (gem names should be all lowercase)
|
data/README.md
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# CacheBar
|
2
2
|
|
3
|
+
[![Code Climate](https://codeclimate.com/github/vigetlabs/cachebar.png)](https://codeclimate.com/github/vigetlabs/cachebar)
|
4
|
+
|
3
5
|
CacheBar is a simple API caching layer built on top of Redis and HTTParty.
|
4
6
|
|
5
7
|
When a good request is made to the API through an HTTParty module or class configured to be cached, it caches the response body in Redis. The cache is set to expire in the configured length of time. All following identical requests use the cache in Redis. When the cache expires it will attempt to refill the cache with a new good response. If though the response that comes back is bad (there was timeout, a 404, or some other problem), then CacheBar will fetch a backup response we also store in Redis (in a separate non-expiring hash). When it pulls this backup response out it inserts it into the standard cache and sets it to expire in 5 minutes. This way we won't look for a new good response for another 5 minutes.
|
@@ -58,6 +60,17 @@ By default when we fallback to using a backup response, we then hold off looking
|
|
58
60
|
|
59
61
|
HTTParty::HTTPCache.cache_stale_backup_time = 120 # 2 minutes
|
60
62
|
|
63
|
+
If you want to perform an action (say notify an error tracking service) when an exception happens while performing or processing a request you can specify a callback. The only requirement is that it responds to `call` and that `call` accepts 3 parameters. Those 3 in order will be the exception, the redis key name of the API, and the URL endpoint:
|
64
|
+
|
65
|
+
HTTParty::HTTPCache.exception_callback = lambda { |exception, api_name, url|
|
66
|
+
Airbrake.notify_or_ignore(exception, {
|
67
|
+
:component => api_name,
|
68
|
+
:url => url,
|
69
|
+
:cgi_data => ENV
|
70
|
+
})
|
71
|
+
}
|
72
|
+
|
73
|
+
|
61
74
|
### 2. Configuring an HTTParty module or class
|
62
75
|
|
63
76
|
If you already have HTTParty included then you just need to use the `caches_api_responses` method to register that API for caching, and your done. The `caches_api_responses` takes a hash of options:
|
data/Rakefile
CHANGED
@@ -32,14 +32,17 @@ Rake::TestTask.new(:test) do |test|
|
|
32
32
|
test.verbose = true
|
33
33
|
end
|
34
34
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
35
|
+
begin
|
36
|
+
require 'rcov/rcovtask'
|
37
|
+
Rcov::RcovTask.new do |test|
|
38
|
+
test.libs << 'test'
|
39
|
+
test.pattern = 'test/**/test_*.rb'
|
40
|
+
test.verbose = true
|
41
|
+
test.rcov_opts << '--exclude "gems/*"'
|
42
|
+
test.rcov_opts << '--sort coverage'
|
43
|
+
test.rcov_opts << '--only-uncovered'
|
44
|
+
end
|
45
|
+
rescue Exception
|
43
46
|
end
|
44
47
|
|
45
48
|
task :default => :test
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.1.
|
1
|
+
1.1.1
|
@@ -2,29 +2,31 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
+
# stub: cachebar 1.1.1 ruby lib
|
5
6
|
|
6
7
|
Gem::Specification.new do |s|
|
7
|
-
s.name =
|
8
|
-
s.version = "1.
|
8
|
+
s.name = "cachebar"
|
9
|
+
s.version = "1.1.1"
|
9
10
|
|
10
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
|
+
s.require_paths = ["lib"]
|
11
13
|
s.authors = ["Brian Landau", "David Eisinger"]
|
12
|
-
s.date =
|
13
|
-
s.description =
|
14
|
-
s.email =
|
14
|
+
s.date = "2014-10-24"
|
15
|
+
s.description = "A simple API caching layer built on top of HTTParty and Redis"
|
16
|
+
s.email = "brian.landau@viget.com"
|
15
17
|
s.extra_rdoc_files = [
|
16
18
|
"LICENSE.txt",
|
17
19
|
"README.md"
|
18
20
|
]
|
19
21
|
s.files = [
|
20
22
|
".document",
|
21
|
-
"CacheBar.gemspec",
|
22
23
|
"Gemfile",
|
23
24
|
"HISTORY",
|
24
25
|
"LICENSE.txt",
|
25
26
|
"README.md",
|
26
27
|
"Rakefile",
|
27
28
|
"VERSION",
|
29
|
+
"cachebar.gemspec",
|
28
30
|
"lib/cachebar.rb",
|
29
31
|
"lib/httparty/httpcache.rb",
|
30
32
|
"test/fixtures/user_timeline.json",
|
@@ -36,40 +38,39 @@ Gem::Specification.new do |s|
|
|
36
38
|
"test/test_cachebar.rb",
|
37
39
|
"test/twitter_api.rb"
|
38
40
|
]
|
39
|
-
s.homepage =
|
41
|
+
s.homepage = "http://github.com/vigetlabs/cachebar"
|
40
42
|
s.licenses = ["MIT"]
|
41
|
-
s.
|
42
|
-
s.
|
43
|
-
s.summary = %q{A simple API caching layer built on top of HTTParty and Redis}
|
43
|
+
s.rubygems_version = "2.4.1"
|
44
|
+
s.summary = "A simple API caching layer built on top of HTTParty and Redis"
|
44
45
|
|
45
46
|
if s.respond_to? :specification_version then
|
46
|
-
s.specification_version =
|
47
|
+
s.specification_version = 4
|
47
48
|
|
48
49
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
49
50
|
s.add_runtime_dependency(%q<redis>, [">= 0"])
|
50
51
|
s.add_runtime_dependency(%q<redis-namespace>, [">= 0"])
|
51
|
-
s.add_runtime_dependency(%q<httparty>, ["~> 0.
|
52
|
+
s.add_runtime_dependency(%q<httparty>, ["~> 0.8.3"])
|
52
53
|
s.add_runtime_dependency(%q<activesupport>, [">= 0"])
|
53
54
|
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
54
55
|
s.add_development_dependency(%q<bundler>, ["~> 1.0"])
|
55
56
|
s.add_development_dependency(%q<jeweler>, ["~> 1.6"])
|
56
57
|
s.add_development_dependency(%q<rcov>, [">= 0"])
|
57
58
|
s.add_development_dependency(%q<webmock>, [">= 0"])
|
58
|
-
s.add_development_dependency(%q<vcr>, ["
|
59
|
+
s.add_development_dependency(%q<vcr>, ["~> 1.11"])
|
59
60
|
s.add_development_dependency(%q<mocha>, [">= 0"])
|
60
61
|
s.add_development_dependency(%q<rake>, ["~> 0.8.7"])
|
61
62
|
s.add_development_dependency(%q<SystemTimer>, [">= 0"])
|
62
63
|
else
|
63
64
|
s.add_dependency(%q<redis>, [">= 0"])
|
64
65
|
s.add_dependency(%q<redis-namespace>, [">= 0"])
|
65
|
-
s.add_dependency(%q<httparty>, ["~> 0.
|
66
|
+
s.add_dependency(%q<httparty>, ["~> 0.8.3"])
|
66
67
|
s.add_dependency(%q<activesupport>, [">= 0"])
|
67
68
|
s.add_dependency(%q<shoulda>, [">= 0"])
|
68
69
|
s.add_dependency(%q<bundler>, ["~> 1.0"])
|
69
70
|
s.add_dependency(%q<jeweler>, ["~> 1.6"])
|
70
71
|
s.add_dependency(%q<rcov>, [">= 0"])
|
71
72
|
s.add_dependency(%q<webmock>, [">= 0"])
|
72
|
-
s.add_dependency(%q<vcr>, ["
|
73
|
+
s.add_dependency(%q<vcr>, ["~> 1.11"])
|
73
74
|
s.add_dependency(%q<mocha>, [">= 0"])
|
74
75
|
s.add_dependency(%q<rake>, ["~> 0.8.7"])
|
75
76
|
s.add_dependency(%q<SystemTimer>, [">= 0"])
|
@@ -77,14 +78,14 @@ Gem::Specification.new do |s|
|
|
77
78
|
else
|
78
79
|
s.add_dependency(%q<redis>, [">= 0"])
|
79
80
|
s.add_dependency(%q<redis-namespace>, [">= 0"])
|
80
|
-
s.add_dependency(%q<httparty>, ["~> 0.
|
81
|
+
s.add_dependency(%q<httparty>, ["~> 0.8.3"])
|
81
82
|
s.add_dependency(%q<activesupport>, [">= 0"])
|
82
83
|
s.add_dependency(%q<shoulda>, [">= 0"])
|
83
84
|
s.add_dependency(%q<bundler>, ["~> 1.0"])
|
84
85
|
s.add_dependency(%q<jeweler>, ["~> 1.6"])
|
85
86
|
s.add_dependency(%q<rcov>, [">= 0"])
|
86
87
|
s.add_dependency(%q<webmock>, [">= 0"])
|
87
|
-
s.add_dependency(%q<vcr>, ["
|
88
|
+
s.add_dependency(%q<vcr>, ["~> 1.11"])
|
88
89
|
s.add_dependency(%q<mocha>, [">= 0"])
|
89
90
|
s.add_dependency(%q<rake>, ["~> 0.8.7"])
|
90
91
|
s.add_dependency(%q<SystemTimer>, [">= 0"])
|
data/lib/cachebar.rb
CHANGED
@@ -5,7 +5,7 @@ require 'active_support'
|
|
5
5
|
require 'active_support/core_ext/module/aliasing'
|
6
6
|
require 'active_support/core_ext/module/attribute_accessors'
|
7
7
|
require 'active_support/core_ext/object/blank'
|
8
|
-
if RUBY_VERSION
|
8
|
+
if RUBY_VERSION < '1.9'
|
9
9
|
begin
|
10
10
|
require 'system_timer'
|
11
11
|
rescue LoadError
|
data/lib/httparty/httpcache.rb
CHANGED
@@ -7,7 +7,8 @@ module HTTParty
|
|
7
7
|
:logger,
|
8
8
|
:redis,
|
9
9
|
:timeout_length,
|
10
|
-
:cache_stale_backup_time
|
10
|
+
:cache_stale_backup_time,
|
11
|
+
:exception_callback
|
11
12
|
|
12
13
|
self.perform_caching = false
|
13
14
|
self.apis = {}
|
@@ -40,7 +41,10 @@ module HTTParty
|
|
40
41
|
else
|
41
42
|
retrieve_and_store_backup(httparty_response)
|
42
43
|
end
|
43
|
-
rescue *exceptions
|
44
|
+
rescue *exceptions => e
|
45
|
+
if exception_callback && exception_callback.respond_to?(:call)
|
46
|
+
exception_callback.call(e, redis_key_name, normalized_uri)
|
47
|
+
end
|
44
48
|
retrieve_and_store_backup
|
45
49
|
end
|
46
50
|
end
|
@@ -89,7 +93,7 @@ module HTTParty
|
|
89
93
|
end
|
90
94
|
|
91
95
|
def cache_key_name
|
92
|
-
@cache_key_name ||= "api-cache:#{
|
96
|
+
@cache_key_name ||= "api-cache:#{redis_key_name}:#{uri_hash}"
|
93
97
|
end
|
94
98
|
|
95
99
|
def uri_hash
|
@@ -101,7 +105,7 @@ module HTTParty
|
|
101
105
|
end
|
102
106
|
|
103
107
|
def backup_key
|
104
|
-
"api-cache:#{
|
108
|
+
"api-cache:#{redis_key_name}"
|
105
109
|
end
|
106
110
|
|
107
111
|
def backup_response
|
@@ -124,6 +128,10 @@ module HTTParty
|
|
124
128
|
def store_backup(response_body)
|
125
129
|
redis.hset(backup_key, uri_hash, response_body)
|
126
130
|
end
|
131
|
+
|
132
|
+
def redis_key_name
|
133
|
+
HTTPCache.apis[uri.host][:key_name]
|
134
|
+
end
|
127
135
|
|
128
136
|
def log_message(message)
|
129
137
|
logger.info("[HTTPCache]: #{message} for #{normalized_uri} - #{uri_hash.inspect}") if logger
|
data/test/test_cachebar.rb
CHANGED
@@ -101,6 +101,16 @@ class TestCacheBar < Test::Unit::TestCase
|
|
101
101
|
end
|
102
102
|
end
|
103
103
|
|
104
|
+
should 'call exception callback if defined' do
|
105
|
+
exception_callback = mock('exception_callback')
|
106
|
+
exception_callback.expects(:call).with(instance_of(MultiJson::DecodeError), 'twitter', 'https://api.twitter.com/1/user_timeline.json').returns(true)
|
107
|
+
HTTParty::HTTPCache.exception_callback = exception_callback
|
108
|
+
mock_response_in_backup(@uri_hash)
|
109
|
+
|
110
|
+
TwitterAPI.bogus_resource
|
111
|
+
HTTParty::HTTPCache.exception_callback = nil
|
112
|
+
end
|
113
|
+
|
104
114
|
teardown do
|
105
115
|
VCR.eject_cassette
|
106
116
|
end
|
metadata
CHANGED
@@ -1,21 +1,47 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cachebar
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
5
|
-
prerelease:
|
4
|
+
version: 1.1.1
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Brian Landau
|
9
8
|
- David Eisinger
|
10
9
|
autorequire:
|
11
10
|
bindir: bin
|
12
|
-
cert_chain:
|
13
|
-
|
11
|
+
cert_chain:
|
12
|
+
- !binary |-
|
13
|
+
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURPakNDQWlLZ0F3SUJB
|
14
|
+
Z0lCQURBTkJna3Foa2lHOXcwQkFRVUZBREJETVJVd0V3WURWUVFEREF4aWNt
|
15
|
+
bGgKYm1wc1lXNWtZWFV4RlRBVEJnb0praWFKay9Jc1pBRVpGZ1ZuYldGcGJE
|
16
|
+
RVRNQkVHQ2dtU0pvbVQ4aXhrQVJrVwpBMk52YlRBZUZ3MHdOekV5TURVd016
|
17
|
+
QTVOVEJhRncwd09ERXlNRFF3TXpBNU5UQmFNRU14RlRBVEJnTlZCQU1NCkRH
|
18
|
+
SnlhV0Z1YW14aGJtUmhkVEVWTUJNR0NnbVNKb21UOGl4a0FSa1dCV2R0WVds
|
19
|
+
c01STXdFUVlLQ1pJbWlaUHkKTEdRQkdSWURZMjl0TUlJQklqQU5CZ2txaGtp
|
20
|
+
Rzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF2aXpLNWJWNApOUUFSY2JQ
|
21
|
+
Z1pwTGtTYWFzaFRZMkpnTHFRYnh3OWVuNkY0SkZRc0FsYWxXdm1QcWFDNjVO
|
22
|
+
VXhwVitZYjdtSzFlClJ4LzZIQmxuOFFleXdWTXdZVFJ2cVlYWFZuMU1UTHhu
|
23
|
+
WUxwTGpRUXJzTTB2Wkl4d05zbVF6ck5xdnZkR0pSb2sKZ1NySng4bG5iM0xr
|
24
|
+
bU82OE42bUcxbEVUYXZpYVB3V2hsQjhtdTNrY0RHOWREWExXYlBMRE80d0hJ
|
25
|
+
SU1sKzBOYgp3cHlsN2Q0dnRlUkFYT0htQStJcjVLa1dsb0VocFBKL1d6VUw0
|
26
|
+
a3htdmNxVlNvMDRhRUdzR2VjZ2tnU1dmeUlECjdaNEtjRTFkcWpBMVJqbWVS
|
27
|
+
SHd4UWlsVzQ5R2t0aEIzQ1FoZmhzallKM0lZdlVmaVFJekRkcldMYkpweHpT
|
28
|
+
aGsKRTFJcFNMTWlQNHN2QlFJREFRQUJvemt3TnpBSkJnTlZIUk1FQWpBQU1B
|
29
|
+
c0dBMVVkRHdRRUF3SUVzREFkQmdOVgpIUTRFRmdRVTAwYnhVTkFTL1c1dFNX
|
30
|
+
UER2blNsbTNUZjlWWXdEUVlKS29aSWh2Y05BUUVGQlFBRGdnRUJBS1VDCjY2
|
31
|
+
OUhzWkJ5UmphYW5hM3NFNVR5bzU5L0NiOEx4cGhBUzBzOXJNdGlReWgyc1BJ
|
32
|
+
bm8wMi9wQUtyQzdTMnFud1oKOFc3MVZLcVJPR25CaGFTaldzaHdVMEJqYmND
|
33
|
+
cE5EQUU0WVBMUDNsVWxQNjlGdUdYYnNxdjlzWUgxR0tqZ0ZIaQpPQ00vdWg5
|
34
|
+
UEx0VU9RMGdSS2l4aTgvZWRuMTFzVXhZTE1qcFRoYWdJVS9rencySi94UW9V
|
35
|
+
cE9nekh6ckRuTjAwCjhWV0UyN013NEJNY2tSelRqZ3lFYkdCNitqMU5ZYWFR
|
36
|
+
NzZhMXExeUZjM1hpUjljclpoeVRtWFQ4ODdsUENlM0IKUUhqeW00ZTR5L0Zt
|
37
|
+
WEJKanBPL1R0Um9ZZDhhNVlUQ2FPc01MN00vbmIvWHJBcnZFM2w1SmFORVhr
|
38
|
+
aEgvbkdzNwp3UjlodWlzVE1sRVNYM1JlR0tVPQotLS0tLUVORCBDRVJUSUZJ
|
39
|
+
Q0FURS0tLS0tCg==
|
40
|
+
date: 2014-10-24 00:00:00.000000000 Z
|
14
41
|
dependencies:
|
15
42
|
- !ruby/object:Gem::Dependency
|
16
43
|
name: redis
|
17
44
|
requirement: !ruby/object:Gem::Requirement
|
18
|
-
none: false
|
19
45
|
requirements:
|
20
46
|
- - ! '>='
|
21
47
|
- !ruby/object:Gem::Version
|
@@ -23,7 +49,6 @@ dependencies:
|
|
23
49
|
type: :runtime
|
24
50
|
prerelease: false
|
25
51
|
version_requirements: !ruby/object:Gem::Requirement
|
26
|
-
none: false
|
27
52
|
requirements:
|
28
53
|
- - ! '>='
|
29
54
|
- !ruby/object:Gem::Version
|
@@ -31,7 +56,6 @@ dependencies:
|
|
31
56
|
- !ruby/object:Gem::Dependency
|
32
57
|
name: redis-namespace
|
33
58
|
requirement: !ruby/object:Gem::Requirement
|
34
|
-
none: false
|
35
59
|
requirements:
|
36
60
|
- - ! '>='
|
37
61
|
- !ruby/object:Gem::Version
|
@@ -39,7 +63,6 @@ dependencies:
|
|
39
63
|
type: :runtime
|
40
64
|
prerelease: false
|
41
65
|
version_requirements: !ruby/object:Gem::Requirement
|
42
|
-
none: false
|
43
66
|
requirements:
|
44
67
|
- - ! '>='
|
45
68
|
- !ruby/object:Gem::Version
|
@@ -47,23 +70,22 @@ dependencies:
|
|
47
70
|
- !ruby/object:Gem::Dependency
|
48
71
|
name: httparty
|
49
72
|
requirement: !ruby/object:Gem::Requirement
|
50
|
-
none: false
|
51
73
|
requirements:
|
52
74
|
- - ~>
|
53
75
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
76
|
+
version: !binary |-
|
77
|
+
MC44LjM=
|
55
78
|
type: :runtime
|
56
79
|
prerelease: false
|
57
80
|
version_requirements: !ruby/object:Gem::Requirement
|
58
|
-
none: false
|
59
81
|
requirements:
|
60
82
|
- - ~>
|
61
83
|
- !ruby/object:Gem::Version
|
62
|
-
version:
|
84
|
+
version: !binary |-
|
85
|
+
MC44LjM=
|
63
86
|
- !ruby/object:Gem::Dependency
|
64
87
|
name: activesupport
|
65
88
|
requirement: !ruby/object:Gem::Requirement
|
66
|
-
none: false
|
67
89
|
requirements:
|
68
90
|
- - ! '>='
|
69
91
|
- !ruby/object:Gem::Version
|
@@ -71,7 +93,6 @@ dependencies:
|
|
71
93
|
type: :runtime
|
72
94
|
prerelease: false
|
73
95
|
version_requirements: !ruby/object:Gem::Requirement
|
74
|
-
none: false
|
75
96
|
requirements:
|
76
97
|
- - ! '>='
|
77
98
|
- !ruby/object:Gem::Version
|
@@ -79,7 +100,6 @@ dependencies:
|
|
79
100
|
- !ruby/object:Gem::Dependency
|
80
101
|
name: shoulda
|
81
102
|
requirement: !ruby/object:Gem::Requirement
|
82
|
-
none: false
|
83
103
|
requirements:
|
84
104
|
- - ! '>='
|
85
105
|
- !ruby/object:Gem::Version
|
@@ -87,7 +107,6 @@ dependencies:
|
|
87
107
|
type: :development
|
88
108
|
prerelease: false
|
89
109
|
version_requirements: !ruby/object:Gem::Requirement
|
90
|
-
none: false
|
91
110
|
requirements:
|
92
111
|
- - ! '>='
|
93
112
|
- !ruby/object:Gem::Version
|
@@ -95,39 +114,38 @@ dependencies:
|
|
95
114
|
- !ruby/object:Gem::Dependency
|
96
115
|
name: bundler
|
97
116
|
requirement: !ruby/object:Gem::Requirement
|
98
|
-
none: false
|
99
117
|
requirements:
|
100
118
|
- - ~>
|
101
119
|
- !ruby/object:Gem::Version
|
102
|
-
version:
|
120
|
+
version: !binary |-
|
121
|
+
MS4w
|
103
122
|
type: :development
|
104
123
|
prerelease: false
|
105
124
|
version_requirements: !ruby/object:Gem::Requirement
|
106
|
-
none: false
|
107
125
|
requirements:
|
108
126
|
- - ~>
|
109
127
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
128
|
+
version: !binary |-
|
129
|
+
MS4w
|
111
130
|
- !ruby/object:Gem::Dependency
|
112
131
|
name: jeweler
|
113
132
|
requirement: !ruby/object:Gem::Requirement
|
114
|
-
none: false
|
115
133
|
requirements:
|
116
134
|
- - ~>
|
117
135
|
- !ruby/object:Gem::Version
|
118
|
-
version:
|
136
|
+
version: !binary |-
|
137
|
+
MS42
|
119
138
|
type: :development
|
120
139
|
prerelease: false
|
121
140
|
version_requirements: !ruby/object:Gem::Requirement
|
122
|
-
none: false
|
123
141
|
requirements:
|
124
142
|
- - ~>
|
125
143
|
- !ruby/object:Gem::Version
|
126
|
-
version:
|
144
|
+
version: !binary |-
|
145
|
+
MS42
|
127
146
|
- !ruby/object:Gem::Dependency
|
128
147
|
name: rcov
|
129
148
|
requirement: !ruby/object:Gem::Requirement
|
130
|
-
none: false
|
131
149
|
requirements:
|
132
150
|
- - ! '>='
|
133
151
|
- !ruby/object:Gem::Version
|
@@ -135,7 +153,6 @@ dependencies:
|
|
135
153
|
type: :development
|
136
154
|
prerelease: false
|
137
155
|
version_requirements: !ruby/object:Gem::Requirement
|
138
|
-
none: false
|
139
156
|
requirements:
|
140
157
|
- - ! '>='
|
141
158
|
- !ruby/object:Gem::Version
|
@@ -143,7 +160,6 @@ dependencies:
|
|
143
160
|
- !ruby/object:Gem::Dependency
|
144
161
|
name: webmock
|
145
162
|
requirement: !ruby/object:Gem::Requirement
|
146
|
-
none: false
|
147
163
|
requirements:
|
148
164
|
- - ! '>='
|
149
165
|
- !ruby/object:Gem::Version
|
@@ -151,7 +167,6 @@ dependencies:
|
|
151
167
|
type: :development
|
152
168
|
prerelease: false
|
153
169
|
version_requirements: !ruby/object:Gem::Requirement
|
154
|
-
none: false
|
155
170
|
requirements:
|
156
171
|
- - ! '>='
|
157
172
|
- !ruby/object:Gem::Version
|
@@ -159,23 +174,22 @@ dependencies:
|
|
159
174
|
- !ruby/object:Gem::Dependency
|
160
175
|
name: vcr
|
161
176
|
requirement: !ruby/object:Gem::Requirement
|
162
|
-
none: false
|
163
177
|
requirements:
|
164
|
-
- -
|
178
|
+
- - ~>
|
165
179
|
- !ruby/object:Gem::Version
|
166
|
-
version:
|
180
|
+
version: !binary |-
|
181
|
+
MS4xMQ==
|
167
182
|
type: :development
|
168
183
|
prerelease: false
|
169
184
|
version_requirements: !ruby/object:Gem::Requirement
|
170
|
-
none: false
|
171
185
|
requirements:
|
172
|
-
- -
|
186
|
+
- - ~>
|
173
187
|
- !ruby/object:Gem::Version
|
174
|
-
version:
|
188
|
+
version: !binary |-
|
189
|
+
MS4xMQ==
|
175
190
|
- !ruby/object:Gem::Dependency
|
176
191
|
name: mocha
|
177
192
|
requirement: !ruby/object:Gem::Requirement
|
178
|
-
none: false
|
179
193
|
requirements:
|
180
194
|
- - ! '>='
|
181
195
|
- !ruby/object:Gem::Version
|
@@ -183,7 +197,6 @@ dependencies:
|
|
183
197
|
type: :development
|
184
198
|
prerelease: false
|
185
199
|
version_requirements: !ruby/object:Gem::Requirement
|
186
|
-
none: false
|
187
200
|
requirements:
|
188
201
|
- - ! '>='
|
189
202
|
- !ruby/object:Gem::Version
|
@@ -191,23 +204,22 @@ dependencies:
|
|
191
204
|
- !ruby/object:Gem::Dependency
|
192
205
|
name: rake
|
193
206
|
requirement: !ruby/object:Gem::Requirement
|
194
|
-
none: false
|
195
207
|
requirements:
|
196
208
|
- - ~>
|
197
209
|
- !ruby/object:Gem::Version
|
198
|
-
version:
|
210
|
+
version: !binary |-
|
211
|
+
MC44Ljc=
|
199
212
|
type: :development
|
200
213
|
prerelease: false
|
201
214
|
version_requirements: !ruby/object:Gem::Requirement
|
202
|
-
none: false
|
203
215
|
requirements:
|
204
216
|
- - ~>
|
205
217
|
- !ruby/object:Gem::Version
|
206
|
-
version:
|
218
|
+
version: !binary |-
|
219
|
+
MC44Ljc=
|
207
220
|
- !ruby/object:Gem::Dependency
|
208
221
|
name: SystemTimer
|
209
222
|
requirement: !ruby/object:Gem::Requirement
|
210
|
-
none: false
|
211
223
|
requirements:
|
212
224
|
- - ! '>='
|
213
225
|
- !ruby/object:Gem::Version
|
@@ -215,7 +227,6 @@ dependencies:
|
|
215
227
|
type: :development
|
216
228
|
prerelease: false
|
217
229
|
version_requirements: !ruby/object:Gem::Requirement
|
218
|
-
none: false
|
219
230
|
requirements:
|
220
231
|
- - ! '>='
|
221
232
|
- !ruby/object:Gem::Version
|
@@ -229,13 +240,13 @@ extra_rdoc_files:
|
|
229
240
|
- README.md
|
230
241
|
files:
|
231
242
|
- .document
|
232
|
-
- CacheBar.gemspec
|
233
243
|
- Gemfile
|
234
244
|
- HISTORY
|
235
245
|
- LICENSE.txt
|
236
246
|
- README.md
|
237
247
|
- Rakefile
|
238
248
|
- VERSION
|
249
|
+
- cachebar.gemspec
|
239
250
|
- lib/cachebar.rb
|
240
251
|
- lib/httparty/httpcache.rb
|
241
252
|
- test/fixtures/user_timeline.json
|
@@ -249,29 +260,25 @@ files:
|
|
249
260
|
homepage: http://github.com/vigetlabs/cachebar
|
250
261
|
licenses:
|
251
262
|
- MIT
|
263
|
+
metadata: {}
|
252
264
|
post_install_message:
|
253
265
|
rdoc_options: []
|
254
266
|
require_paths:
|
255
267
|
- lib
|
256
268
|
required_ruby_version: !ruby/object:Gem::Requirement
|
257
|
-
none: false
|
258
269
|
requirements:
|
259
270
|
- - ! '>='
|
260
271
|
- !ruby/object:Gem::Version
|
261
272
|
version: '0'
|
262
|
-
segments:
|
263
|
-
- 0
|
264
|
-
hash: -4078844821069531998
|
265
273
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
266
|
-
none: false
|
267
274
|
requirements:
|
268
275
|
- - ! '>='
|
269
276
|
- !ruby/object:Gem::Version
|
270
277
|
version: '0'
|
271
278
|
requirements: []
|
272
279
|
rubyforge_project:
|
273
|
-
rubygems_version:
|
280
|
+
rubygems_version: 2.4.1
|
274
281
|
signing_key:
|
275
|
-
specification_version:
|
282
|
+
specification_version: 4
|
276
283
|
summary: A simple API caching layer built on top of HTTParty and Redis
|
277
284
|
test_files: []
|