persistent-cache 1.0.2 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.gitignore +1 -1
- data/.travis.yml +4 -0
- data/Gemfile.lock +71 -0
- data/README.md +5 -6
- data/Rakefile +6 -2
- data/lib/persistent-cache.rb +9 -5
- data/lib/persistent-cache/version.rb +1 -1
- data/persistent-cache.gemspec +13 -13
- data/spec/persistent-cache_spec.rb +11 -5
- data/spec/spec_helper.rb +10 -7
- data/spec/storage/storage_sqlite_spec.rb +41 -85
- metadata +24 -22
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 51616e13f0a2e6eb6a4fd08b89ef091c50cf5bc07d6b78b332add7b78a3af518
|
4
|
+
data.tar.gz: f3fd41f6b063d40bc9447de48d272347182b584edf579ba8f85bea3e8e53de26
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f664e491cff6a926ea55b966b81155c5e2c64d158523d2e6bd6925ff653646e6e0f1f785c06e41b74509c2a8b73a64c1930c027a9f2de19a39f823705cdd7060
|
7
|
+
data.tar.gz: 715b226fa796a395568dbb74336e736fa884e6f45698162e6557fb16d0690e16da21b589d0a3e4348be3a2670a8a26a91b6ea34c678d49e23c6f089d65995eee
|
data/.gitignore
CHANGED
data/.travis.yml
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,71 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
persistent-cache (1.1.0)
|
5
|
+
eh (~> 1.0)
|
6
|
+
persistent-cache-storage-api (~> 0.1.4)
|
7
|
+
persistent-cache-storage-directory (~> 0.1.2)
|
8
|
+
persistent-cache-storage-ram (~> 0.1.2)
|
9
|
+
persistent-cache-storage-sqlite (~> 0.1.3)
|
10
|
+
|
11
|
+
GEM
|
12
|
+
remote: https://rubygems.org/
|
13
|
+
specs:
|
14
|
+
byebug (9.0.6)
|
15
|
+
coveralls (0.8.23)
|
16
|
+
json (>= 1.8, < 3)
|
17
|
+
simplecov (~> 0.16.1)
|
18
|
+
term-ansicolor (~> 1.3)
|
19
|
+
thor (>= 0.19.4, < 2.0)
|
20
|
+
tins (~> 1.6)
|
21
|
+
diff-lcs (1.3)
|
22
|
+
docile (1.3.2)
|
23
|
+
eh (1.0.0)
|
24
|
+
json (2.2.0)
|
25
|
+
persistent-cache-storage-api (0.1.5)
|
26
|
+
persistent-cache-storage-directory (0.1.2)
|
27
|
+
persistent-cache-storage-api
|
28
|
+
persistent-cache-storage-ram (0.1.2)
|
29
|
+
eh
|
30
|
+
persistent-cache-storage-api
|
31
|
+
persistent-cache-storage-sqlite (0.1.3)
|
32
|
+
eh (~> 1.0.0)
|
33
|
+
persistent-cache-storage-api (~> 0.1)
|
34
|
+
sqlite3 (~> 1.4)
|
35
|
+
rake (12.3.2)
|
36
|
+
rspec (3.8.0)
|
37
|
+
rspec-core (~> 3.8.0)
|
38
|
+
rspec-expectations (~> 3.8.0)
|
39
|
+
rspec-mocks (~> 3.8.0)
|
40
|
+
rspec-core (3.8.2)
|
41
|
+
rspec-support (~> 3.8.0)
|
42
|
+
rspec-expectations (3.8.4)
|
43
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
44
|
+
rspec-support (~> 3.8.0)
|
45
|
+
rspec-mocks (3.8.1)
|
46
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
47
|
+
rspec-support (~> 3.8.0)
|
48
|
+
rspec-support (3.8.2)
|
49
|
+
simplecov (0.16.1)
|
50
|
+
docile (~> 1.1)
|
51
|
+
json (>= 1.8, < 3)
|
52
|
+
simplecov-html (~> 0.10.0)
|
53
|
+
simplecov-html (0.10.2)
|
54
|
+
sqlite3 (1.4.1)
|
55
|
+
term-ansicolor (1.7.1)
|
56
|
+
tins (~> 1.0)
|
57
|
+
thor (0.20.3)
|
58
|
+
tins (1.20.3)
|
59
|
+
|
60
|
+
PLATFORMS
|
61
|
+
ruby
|
62
|
+
|
63
|
+
DEPENDENCIES
|
64
|
+
byebug (~> 9.0)
|
65
|
+
coveralls (~> 0.8)
|
66
|
+
persistent-cache!
|
67
|
+
rake (~> 12.3)
|
68
|
+
rspec
|
69
|
+
|
70
|
+
BUNDLED WITH
|
71
|
+
1.16.6
|
data/README.md
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
# Persistent::Cache
|
2
2
|
|
3
|
+
[![Gem Version](https://badge.fury.io/rb/persistent-cache.png)](https://badge.fury.io/rb/persistent-cache)
|
4
|
+
[![Build Status](https://travis-ci.org/evangraan/persistent-cache.svg?branch=master)](https://travis-ci.org/evangraan/persistent-cache)
|
5
|
+
[![Coverage Status](https://coveralls.io/repos/github/evangraan/persistent-cache/badge.svg?branch=master)](https://coveralls.io/github/evangraan/persistent-cache?branch=master)
|
6
|
+
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/4157799e2f2b4102bade0bd543e5cbbc)](https://www.codacy.com/app/ernst-van-graan/persistent-cache?utm_source=github.com&utm_medium=referral&utm_content=evangraan/persistent-cache&utm_campaign=Badge_Grade)
|
7
|
+
|
3
8
|
Persistent cache behaves like a hash, with a pluggable back-end. Currently sqlite3, file system directory and RAM back-ends are provided. The cache defaults to type STORAGE_SQLITE
|
4
9
|
|
5
10
|
Values in the cache have a default freshness period of 15465600 ms. This can be configured in the cache initializer. Setting fresh = nil indicates that data remains fresh for-ever. Each user of the cache may have his own independent freshness value. Not though that accessing a stale entry deletes it from the cache. You can use timestamp?(key) to read the timestamp of an entry. If stale data is requested from the cache, nil is returned. Data is marshalled before storage. If a key is not found in the cache, nil is returned. Setting the value of a key in the cache to nil deletes the entry. If required, creation time of an entry can be specified using set(key, value, timestamp)
|
@@ -114,9 +119,3 @@ If you'd like persistent cache to rather store keys using an encoding of your pr
|
|
114
119
|
Please send feedback and comments to the authors at:
|
115
120
|
|
116
121
|
Ernst van Graan <ernstvangraan@gmail.com>
|
117
|
-
|
118
|
-
1. Fork it
|
119
|
-
2. Create your feature branch (`git checkout -b my-new-feature`)
|
120
|
-
3. Commit your changes (`git commit -am 'Added some feature'`)
|
121
|
-
4. Push to the branch (`git push origin my-new-feature`)
|
122
|
-
5. Create new Pull Request
|
data/Rakefile
CHANGED
data/lib/persistent-cache.rb
CHANGED
@@ -21,9 +21,7 @@ module Persistent
|
|
21
21
|
def initialize(storage_details, fresh = FRESH, storage = STORAGE_SQLITE)
|
22
22
|
raise ArgumentError.new("No storage details provided") if storage_details.nil? or storage_details == ""
|
23
23
|
|
24
|
-
@storage =
|
25
|
-
@storage = StorageDirectory.new(storage_details) if storage == STORAGE_DIRECTORY
|
26
|
-
@storage = StorageRAM.new(storage_details) if storage == STORAGE_RAM
|
24
|
+
@storage = create_storage(storage, storage_details)
|
27
25
|
@fresh = fresh
|
28
26
|
@storage_details = storage_details
|
29
27
|
|
@@ -50,7 +48,7 @@ module Persistent
|
|
50
48
|
lookup_key(key)
|
51
49
|
end
|
52
50
|
|
53
|
-
def each(&
|
51
|
+
def each(&_block)
|
54
52
|
keys.each do |key|
|
55
53
|
yield key, lookup_key(key)
|
56
54
|
end
|
@@ -86,6 +84,12 @@ module Persistent
|
|
86
84
|
|
87
85
|
private
|
88
86
|
|
87
|
+
def create_storage(storage, storage_details)
|
88
|
+
return StorageSQLite.new(storage_details) if storage == STORAGE_SQLITE
|
89
|
+
return StorageDirectory.new(storage_details) if storage == STORAGE_DIRECTORY
|
90
|
+
return StorageRAM.new(storage_details) if storage == STORAGE_RAM
|
91
|
+
end
|
92
|
+
|
89
93
|
def encode_if_requested(key)
|
90
94
|
return key.encode(@encoding) if (not @encoding.nil?) and (key.is_a?(String))
|
91
95
|
key
|
@@ -119,7 +123,7 @@ module Persistent
|
|
119
123
|
|
120
124
|
def delete_entry(key)
|
121
125
|
k = encode_if_requested(key)
|
122
|
-
@storage.delete_entry(
|
126
|
+
@storage.delete_entry(k)
|
123
127
|
end
|
124
128
|
|
125
129
|
def nil_result?(result)
|
data/persistent-cache.gemspec
CHANGED
@@ -4,26 +4,26 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
require 'persistent-cache/version'
|
5
5
|
|
6
6
|
Gem::Specification.new do |gem|
|
7
|
-
gem.authors = [
|
8
|
-
gem.email = [
|
7
|
+
gem.authors = ['Hetzner Pty Ltd']
|
8
|
+
gem.email = ['kernels@hetzner.co.za']
|
9
9
|
gem.description = %q{Persistent Cache using a pluggable back-end (e.g. SQLite)}
|
10
10
|
gem.summary = %q{Persistent Cache has a default freshness threshold of 179 days after which entries are no longer returned}
|
11
|
-
gem.homepage =
|
11
|
+
gem.homepage = 'https://github.com/hetznerZA/persistent-cache.git'
|
12
12
|
|
13
13
|
gem.files = `git ls-files`.split($\)
|
14
14
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
15
15
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
16
|
-
gem.name =
|
17
|
-
gem.require_paths = [
|
16
|
+
gem.name = 'persistent-cache'
|
17
|
+
gem.require_paths = ['lib']
|
18
18
|
gem.required_ruby_version = '~> 2.0'
|
19
19
|
gem.version = Persistent::VERSION
|
20
20
|
gem.add_development_dependency 'rspec', '2.12.0'
|
21
|
-
gem.add_development_dependency '
|
22
|
-
gem.add_development_dependency '
|
23
|
-
gem.add_development_dependency 'byebug'
|
24
|
-
gem.add_dependency
|
25
|
-
gem.add_dependency
|
26
|
-
gem.add_dependency
|
27
|
-
gem.add_dependency
|
28
|
-
gem.add_dependency
|
21
|
+
gem.add_development_dependency 'coveralls', '~> 0.8'
|
22
|
+
gem.add_development_dependency 'rake', '~> 12.3'
|
23
|
+
gem.add_development_dependency 'byebug', '~> 9.0'
|
24
|
+
gem.add_dependency 'eh', '~> 1.0'
|
25
|
+
gem.add_dependency 'persistent-cache-storage-api', '~> 0.1.4'
|
26
|
+
gem.add_dependency 'persistent-cache-storage-sqlite', '~> 0.1.3'
|
27
|
+
gem.add_dependency 'persistent-cache-storage-directory', '~> 0.1.2'
|
28
|
+
gem.add_dependency 'persistent-cache-storage-ram', '~> 0.1.2'
|
29
29
|
end
|
@@ -137,7 +137,10 @@ describe Persistent::Cache do
|
|
137
137
|
|
138
138
|
it "should return the list of keys when asked" do
|
139
139
|
setup_cache
|
140
|
-
expect(@pcache.keys).to eq(
|
140
|
+
expect(@pcache.keys.size).to eq(3)
|
141
|
+
expect(@pcache.keys.include?("one")).to eq(true)
|
142
|
+
expect(@pcache.keys.include?("two")).to eq(true)
|
143
|
+
expect(@pcache.keys.include?("three")).to eq(true)
|
141
144
|
end
|
142
145
|
|
143
146
|
it "should allow iteration through each" do
|
@@ -146,7 +149,10 @@ describe Persistent::Cache do
|
|
146
149
|
@pcache.each do |key, value|
|
147
150
|
test << "#{key} => #{value}"
|
148
151
|
end
|
149
|
-
expect(test).to eq(
|
152
|
+
expect(test.size).to eq(3)
|
153
|
+
expect(test.include?("one => value one")).to eq(true)
|
154
|
+
expect(test.include?("two => value two")).to eq(true)
|
155
|
+
expect(test.include?("three => value three")).to eq(true)
|
150
156
|
end
|
151
157
|
|
152
158
|
it "should delete all entries in the database when asked to clear" do
|
@@ -156,14 +162,13 @@ describe Persistent::Cache do
|
|
156
162
|
end
|
157
163
|
|
158
164
|
it "should be able to handle multiple accesses to the same db" do
|
159
|
-
#pending "find a better way to test this, currently you need to spawn multiple rspecs running this test to hit the error if the busy_timeout is not specified"
|
160
165
|
pcache = Persistent::Cache.new("multidb")
|
161
166
|
pcache["multi_test"] = 0
|
162
167
|
|
163
168
|
threads = []
|
164
|
-
100.times do
|
169
|
+
100.times do
|
165
170
|
threads << Thread.new do
|
166
|
-
Thread.current['pcache'] = Persistent::Cache.new("multidb")
|
171
|
+
Thread.current['pcache'] = Persistent::Cache.new("multidb")
|
167
172
|
if (!Thread.current['pcache'].nil? && !Thread.current['pcache']["multi_test"].nil?)
|
168
173
|
Thread.current['pcache']["multi_test"] += 1
|
169
174
|
end
|
@@ -229,6 +234,7 @@ describe Persistent::Cache do
|
|
229
234
|
def setup_cache(encoding = nil)
|
230
235
|
FileUtils.rm_f(@db_name)
|
231
236
|
@pcache = Persistent::Cache.new(@db_name, 1)
|
237
|
+
@pcache.encoding = encoding if encoding
|
232
238
|
end
|
233
239
|
end
|
234
240
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,8 +1,11 @@
|
|
1
|
+
require 'coveralls'
|
2
|
+
Coveralls.wear!
|
3
|
+
|
1
4
|
require 'rspec'
|
2
5
|
require 'rspec/mocks'
|
3
6
|
require 'tempfile'
|
4
|
-
require 'simplecov'
|
5
|
-
require 'simplecov-rcov'
|
7
|
+
# require 'simplecov'
|
8
|
+
# require 'simplecov-rcov'
|
6
9
|
require 'byebug'
|
7
10
|
require "persistent-cache"
|
8
11
|
require "persistent-cache/storage_sqlite"
|
@@ -21,7 +24,7 @@ $:.unshift(File.join(File.dirname(__FILE__), '..', 'persistent-cache'))
|
|
21
24
|
RSpec.configure do |config|
|
22
25
|
config.run_all_when_everything_filtered = true
|
23
26
|
config.filter_run :focus
|
24
|
-
#config.expect_with(:rspec) { |c| c.syntax = :should }
|
27
|
+
# config.expect_with(:rspec) { |c| c.syntax = :should }
|
25
28
|
|
26
29
|
# Run specs in random order to surface order dependencies. If you find an
|
27
30
|
# order dependency and want to debug it, you can fix the order by providing
|
@@ -30,10 +33,10 @@ RSpec.configure do |config|
|
|
30
33
|
config.order = 'random'
|
31
34
|
end
|
32
35
|
|
33
|
-
SimpleCov.formatter = SimpleCov::Formatter::RcovFormatter
|
34
|
-
SimpleCov.start do
|
35
|
-
|
36
|
-
end
|
36
|
+
# SimpleCov.formatter = SimpleCov::Formatter::RcovFormatter
|
37
|
+
# SimpleCov.start do
|
38
|
+
# add_filter "/spec/"
|
39
|
+
# end
|
37
40
|
|
38
41
|
def get_database_name
|
39
42
|
path = Tempfile.new("persistent-cache-spec-testdb").path
|
@@ -67,90 +67,55 @@ describe Persistent::StorageSQLite do
|
|
67
67
|
|
68
68
|
context "when asked to store a key value pair" do
|
69
69
|
it "should store the key/value pair in the db, with the current time as timestamp" do
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
expect(test_time).to be > start_time
|
81
|
-
expect(test_time).to be < start_time + 600
|
82
|
-
rescue SQLite3::IOException
|
83
|
-
attempts = attempts + 1
|
84
|
-
raise if attempts > 3
|
85
|
-
retry
|
86
|
-
end
|
70
|
+
start_time = Time.now - 1
|
71
|
+
@iut.save_key_value_pair(@test_key, @test_value)
|
72
|
+
handle = SQLite3::Database.open(@db_name)
|
73
|
+
result = handle.execute "select value, timestamp from #{Persistent::StorageSQLite::DB_TABLE} where key=?", serialize(@test_key)
|
74
|
+
expect(result.nil?).to eq(false)
|
75
|
+
expect(result[0].nil?).to eq(false)
|
76
|
+
expect(result[0][0]).to eq(serialize(@test_value))
|
77
|
+
test_time = Time.parse(result[0][1])
|
78
|
+
expect(test_time).to be > start_time
|
79
|
+
expect(test_time).to be < start_time + 600
|
87
80
|
end
|
88
81
|
|
89
82
|
it "should store the key/value pair in the db, with a timestamp specified" do
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
time_retrieved = Time.parse(result[0][1])
|
100
|
-
expect(time_retrieved.to_s).to eq(test_time.to_s)
|
101
|
-
rescue SQLite3::IOException
|
102
|
-
attempts = attempts + 1
|
103
|
-
raise if attempts > 3
|
104
|
-
retry
|
105
|
-
end
|
83
|
+
test_time = (Time.now - 2500)
|
84
|
+
@iut.save_key_value_pair(@test_key, @test_value, test_time)
|
85
|
+
handle = SQLite3::Database.open(@db_name)
|
86
|
+
result = handle.execute "select value, timestamp from #{Persistent::StorageSQLite::DB_TABLE} where key=?", serialize(@test_key)
|
87
|
+
expect(result.nil?).to eq(false)
|
88
|
+
expect(result[0].nil?).to eq(false)
|
89
|
+
expect(result[0][0]).to eq(serialize(@test_value))
|
90
|
+
time_retrieved = Time.parse(result[0][1])
|
91
|
+
expect(time_retrieved.to_s).to eq(test_time.to_s)
|
106
92
|
end
|
107
93
|
|
108
94
|
it "should overwrite the existing key/value pair if they already exist" do
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
expect(result.size).to eq(1)
|
118
|
-
expect(result[0][0]).to eq(serialize("testvalue2"))
|
119
|
-
rescue SQLite3::IOException
|
120
|
-
attempts = attempts + 1
|
121
|
-
raise if attempts > 3
|
122
|
-
retry
|
123
|
-
end
|
95
|
+
@iut.save_key_value_pair(@test_key, @test_value)
|
96
|
+
@iut.save_key_value_pair(@test_key, "testvalue2")
|
97
|
+
handle = SQLite3::Database.open(@db_name)
|
98
|
+
result = handle.execute "select value from #{Persistent::StorageSQLite::DB_TABLE} where key=?", serialize(@test_key)
|
99
|
+
expect(result.nil?).to eq(false)
|
100
|
+
expect(result[0].nil?).to eq(false)
|
101
|
+
expect(result.size).to eq(1)
|
102
|
+
expect(result[0][0]).to eq(serialize("testvalue2"))
|
124
103
|
end
|
125
104
|
end
|
126
105
|
|
127
106
|
context "When looking up a value given its key" do
|
128
107
|
it "should retrieve the value from the database" do
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
result = @iut.lookup_key(@test_key)
|
133
|
-
expect(result[0]).to eq(@test_value)
|
134
|
-
rescue SQLite3::IOException
|
135
|
-
attempts = attempts + 1
|
136
|
-
raise if attempts > 3
|
137
|
-
retry
|
138
|
-
end
|
108
|
+
@iut.save_key_value_pair(@test_key, @test_value)
|
109
|
+
result = @iut.lookup_key(@test_key)
|
110
|
+
expect(result[0]).to eq(@test_value)
|
139
111
|
end
|
140
112
|
|
141
113
|
it "should retrieve the timestamp when the value was stored from the database" do
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
result = @iut.lookup_key(@test_key)
|
148
|
-
expect(result[1]).to eq(now)
|
149
|
-
rescue SQLite3::IOException
|
150
|
-
attempts = attempts + 1
|
151
|
-
raise if attempts > 3
|
152
|
-
retry
|
153
|
-
end
|
114
|
+
now = Time.now.to_s
|
115
|
+
@iut.save_key_value_pair(@test_key, @test_value)
|
116
|
+
sleep 1
|
117
|
+
result = @iut.lookup_key(@test_key)
|
118
|
+
expect(result[1]).to eq(now)
|
154
119
|
end
|
155
120
|
|
156
121
|
it "should return an empty array if a key is not in the database" do
|
@@ -166,19 +131,12 @@ describe Persistent::StorageSQLite do
|
|
166
131
|
end
|
167
132
|
|
168
133
|
it "should delete the entry if it is present" do
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
result = @iut.lookup_key(@test_key)
|
176
|
-
expect(result).to eq(nil)
|
177
|
-
rescue SQLite3::IOException
|
178
|
-
attempts = attempts + 1
|
179
|
-
raise if attempts > 3
|
180
|
-
retry
|
181
|
-
end
|
134
|
+
@iut.save_key_value_pair(@test_key, @test_value)
|
135
|
+
result = @iut.lookup_key(@test_key)
|
136
|
+
expect(result[0]).to eq(@test_value)
|
137
|
+
@iut.delete_entry(@test_key)
|
138
|
+
result = @iut.lookup_key(@test_key)
|
139
|
+
expect(result).to eq(nil)
|
182
140
|
end
|
183
141
|
end
|
184
142
|
|
@@ -234,8 +192,6 @@ describe Persistent::StorageSQLite do
|
|
234
192
|
iut.save_key_value_pair("one", "one")
|
235
193
|
iut.save_key_value_pair("two", "two")
|
236
194
|
iut.save_key_value_pair("three", "three")
|
237
|
-
rescue SQLite3::IOException
|
238
|
-
retry
|
239
195
|
end
|
240
196
|
|
241
197
|
def delete_database
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: persistent-cache
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
7
|
+
- Hetzner Pty Ltd
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-07-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -25,61 +25,61 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 2.12.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: coveralls
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.
|
33
|
+
version: '0.8'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0.
|
40
|
+
version: '0.8'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
47
|
+
version: '12.3'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: '12.3'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: byebug
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
61
|
+
version: '9.0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '0'
|
68
|
+
version: '9.0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: eh
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: 1.0
|
75
|
+
version: '1.0'
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: 1.0
|
82
|
+
version: '1.0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: persistent-cache-storage-api
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -100,14 +100,14 @@ dependencies:
|
|
100
100
|
requirements:
|
101
101
|
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: 0.1.
|
103
|
+
version: 0.1.3
|
104
104
|
type: :runtime
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: 0.1.
|
110
|
+
version: 0.1.3
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: persistent-cache-storage-directory
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -138,7 +138,7 @@ dependencies:
|
|
138
138
|
version: 0.1.2
|
139
139
|
description: Persistent Cache using a pluggable back-end (e.g. SQLite)
|
140
140
|
email:
|
141
|
-
-
|
141
|
+
- kernels@hetzner.co.za
|
142
142
|
executables: []
|
143
143
|
extensions: []
|
144
144
|
extra_rdoc_files: []
|
@@ -147,7 +147,9 @@ files:
|
|
147
147
|
- ".rspec"
|
148
148
|
- ".ruby-gemset"
|
149
149
|
- ".ruby-version"
|
150
|
+
- ".travis.yml"
|
150
151
|
- Gemfile
|
152
|
+
- Gemfile.lock
|
151
153
|
- LICENSE
|
152
154
|
- README.md
|
153
155
|
- Rakefile
|
@@ -159,7 +161,7 @@ files:
|
|
159
161
|
- spec/storage/storage_directory_spec.rb
|
160
162
|
- spec/storage/storage_ram_spec.rb
|
161
163
|
- spec/storage/storage_sqlite_spec.rb
|
162
|
-
homepage: https://github.com/
|
164
|
+
homepage: https://github.com/hetznerZA/persistent-cache.git
|
163
165
|
licenses: []
|
164
166
|
metadata: {}
|
165
167
|
post_install_message:
|
@@ -178,7 +180,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
178
180
|
version: '0'
|
179
181
|
requirements: []
|
180
182
|
rubyforge_project:
|
181
|
-
rubygems_version: 2.
|
183
|
+
rubygems_version: 2.7.10
|
182
184
|
signing_key:
|
183
185
|
specification_version: 4
|
184
186
|
summary: Persistent Cache has a default freshness threshold of 179 days after which
|