coffee_table 0.1.3 → 0.2.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.
- checksums.yaml +7 -0
- data/.ruby-version +1 -1
- data/Gemfile.lock +5 -2
- data/lib/coffee_table/object_definition.rb +4 -0
- data/lib/coffee_table/version.rb +1 -1
- data/lib/coffee_table.rb +22 -19
- metadata +24 -38
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 5096de8fb62f3418eb4a02a02d460245b828ce4d
|
4
|
+
data.tar.gz: dee65858546fbc737b5340a821203dcc3309e0d6
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 36db338c9a66794aaf55b9ae72f2cb9d2d9a01aafd23919947fbde22d907ce2cc8a7fe84b0a555e509cf19ee9677a725916aea7358333946c7b417603e5c223e
|
7
|
+
data.tar.gz: 2ab2325828a57a1be2a1666fd03ae6fb8e79b1bbb00f33c219c91c506bcf21bee3fe6cbcd08167675eb9dcf26a452dff6ce1a2f6844f4beb2f5302b91ccf803e
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
ruby-
|
1
|
+
ruby-2.3.0
|
data/Gemfile.lock
CHANGED
@@ -11,7 +11,7 @@ GIT
|
|
11
11
|
PATH
|
12
12
|
remote: .
|
13
13
|
specs:
|
14
|
-
coffee_table (0.1.
|
14
|
+
coffee_table (0.1.3)
|
15
15
|
activesupport
|
16
16
|
gzip
|
17
17
|
redis
|
@@ -40,7 +40,7 @@ GEM
|
|
40
40
|
mime-types (1.23)
|
41
41
|
mock_redis (0.9.0)
|
42
42
|
multi_json (1.7.8)
|
43
|
-
redis (3.
|
43
|
+
redis (3.2.2)
|
44
44
|
rest-client (1.6.7)
|
45
45
|
mime-types (>= 1.16)
|
46
46
|
rspec (2.14.1)
|
@@ -82,3 +82,6 @@ DEPENDENCIES
|
|
82
82
|
rufus-scheduler
|
83
83
|
sourcify!
|
84
84
|
spork
|
85
|
+
|
86
|
+
BUNDLED WITH
|
87
|
+
1.11.2
|
data/lib/coffee_table/version.rb
CHANGED
data/lib/coffee_table.rb
CHANGED
@@ -7,7 +7,6 @@ require "coffee_table/object_definition"
|
|
7
7
|
require "redis"
|
8
8
|
require 'rufus/scheduler'
|
9
9
|
require 'active_support/inflector'
|
10
|
-
require 'sourcify'
|
11
10
|
require 'digest/md5'
|
12
11
|
require 'gzip'
|
13
12
|
|
@@ -29,11 +28,15 @@ module CoffeeTable
|
|
29
28
|
default_compress_content_to true
|
30
29
|
default_compress_min_size_to 10240
|
31
30
|
@redis = Redis.new({:server => @options[:redis_server], :port => @options[:redis_port]})
|
32
|
-
|
33
|
-
|
31
|
+
rufus_version = Gem::Version.new(Rufus::Scheduler::VERSION)
|
32
|
+
if rufus_version >= Gem::Version.new('3.0.0')
|
33
|
+
@scheduler = Rufus::Scheduler.new
|
34
|
+
else
|
35
|
+
@scheduler = Rufus::Scheduler.start_new
|
36
|
+
end
|
34
37
|
end
|
35
38
|
|
36
|
-
|
39
|
+
|
37
40
|
def fetch(initial_key, *related_objects, &block)
|
38
41
|
raise CoffeeTable::BlockMissingError, "No block given to generate cache from" unless block_given?
|
39
42
|
|
@@ -47,11 +50,11 @@ module CoffeeTable
|
|
47
50
|
# check objects are valid
|
48
51
|
related_objects.flatten.map{|o| raise CoffeeTable::InvalidObjectError, "Objects passed in must have an id method or be a class" unless object_valid?(o)}
|
49
52
|
|
50
|
-
if @options[:ignore_code_changes]
|
53
|
+
# if @options[:ignore_code_changes]
|
51
54
|
block_key = ""
|
52
|
-
else
|
53
|
-
|
54
|
-
end
|
55
|
+
# else
|
56
|
+
# block_key = Digest::MD5.hexdigest(block.to_source)
|
57
|
+
# end
|
55
58
|
|
56
59
|
flags = {}
|
57
60
|
|
@@ -59,14 +62,14 @@ module CoffeeTable
|
|
59
62
|
|
60
63
|
# if first related_object is integer or fixnum it is used as an expiry time for the cache object
|
61
64
|
key = CoffeeTable::Key.new(initial_key, block_key, flags, related_objects)
|
62
|
-
|
65
|
+
|
63
66
|
if @options[:enable_cache]
|
64
67
|
if options.has_key?(:expiry)
|
65
68
|
expiry = options[:expiry]
|
66
69
|
else
|
67
70
|
expiry = nil
|
68
71
|
end
|
69
|
-
|
72
|
+
|
70
73
|
@redis.sadd "cache_keys", key unless @redis.sismember "cache_keys", key.to_s
|
71
74
|
if @redis.exists(key.to_s)
|
72
75
|
if key.options[:compressed]
|
@@ -98,22 +101,22 @@ module CoffeeTable
|
|
98
101
|
end
|
99
102
|
result
|
100
103
|
end
|
101
|
-
|
104
|
+
|
102
105
|
def expire_key(key_value)
|
103
106
|
keys.map{|k| CoffeeTable::Key.parse(k)}.select{|key| key.has_element?(key_value) || key.to_s == key_value }.each do |key|
|
104
107
|
@redis.del(key.to_s)
|
105
108
|
@redis.srem "cache_keys", key.to_s
|
106
109
|
end
|
107
110
|
end
|
108
|
-
|
111
|
+
|
109
112
|
def expire_all
|
110
113
|
keys.map{|key| expire_key(key)}
|
111
114
|
end
|
112
|
-
|
115
|
+
|
113
116
|
def keys
|
114
117
|
@redis.smembers("cache_keys")
|
115
|
-
end
|
116
|
-
|
118
|
+
end
|
119
|
+
|
117
120
|
def expire_for(*objects)
|
118
121
|
if defined? Rails
|
119
122
|
perform_caching = Rails.application.configure do
|
@@ -122,7 +125,7 @@ module CoffeeTable
|
|
122
125
|
else
|
123
126
|
perform_caching = true
|
124
127
|
end
|
125
|
-
|
128
|
+
|
126
129
|
if perform_caching
|
127
130
|
deleted_keys = []
|
128
131
|
unless objects.count == 0
|
@@ -143,7 +146,7 @@ module CoffeeTable
|
|
143
146
|
unless key.has_element?("#{object_type.to_sym}[#{object.id}]") or key.has_element?(object_type)
|
144
147
|
expire = false
|
145
148
|
end
|
146
|
-
end
|
149
|
+
end
|
147
150
|
end
|
148
151
|
if expire
|
149
152
|
expire_key(key.to_s)
|
@@ -156,7 +159,7 @@ module CoffeeTable
|
|
156
159
|
end
|
157
160
|
|
158
161
|
alias :get_cache :fetch
|
159
|
-
|
162
|
+
|
160
163
|
private
|
161
164
|
def marshal_value(value)
|
162
165
|
begin
|
@@ -172,4 +175,4 @@ module CoffeeTable
|
|
172
175
|
o.respond_to?(:id) || o.class == Class
|
173
176
|
end
|
174
177
|
end
|
175
|
-
end
|
178
|
+
end
|
metadata
CHANGED
@@ -1,110 +1,97 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: coffee_table
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.2.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Stewart McKee
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2016-03-31 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rspec
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ">="
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - ">="
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '0'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: redis
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - ">="
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - ">="
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '0'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: rufus-scheduler
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - ">="
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '0'
|
54
48
|
type: :runtime
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - ">="
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '0'
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: activesupport
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- -
|
59
|
+
- - ">="
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: '0'
|
70
62
|
type: :runtime
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- -
|
66
|
+
- - ">="
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: '0'
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: sourcify
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
|
-
- -
|
73
|
+
- - ">="
|
84
74
|
- !ruby/object:Gem::Version
|
85
75
|
version: '0'
|
86
76
|
type: :runtime
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
|
-
- -
|
80
|
+
- - ">="
|
92
81
|
- !ruby/object:Gem::Version
|
93
82
|
version: '0'
|
94
83
|
- !ruby/object:Gem::Dependency
|
95
84
|
name: gzip
|
96
85
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
86
|
requirements:
|
99
|
-
- -
|
87
|
+
- - ">="
|
100
88
|
- !ruby/object:Gem::Version
|
101
89
|
version: '0'
|
102
90
|
type: :runtime
|
103
91
|
prerelease: false
|
104
92
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
93
|
requirements:
|
107
|
-
- -
|
94
|
+
- - ">="
|
108
95
|
- !ruby/object:Gem::Version
|
109
96
|
version: '0'
|
110
97
|
description: rails cache gem to fragment cache with smart cache key management
|
@@ -114,11 +101,11 @@ executables: []
|
|
114
101
|
extensions: []
|
115
102
|
extra_rdoc_files: []
|
116
103
|
files:
|
117
|
-
- .gitignore
|
118
|
-
- .rspec
|
119
|
-
- .ruby-gemset
|
120
|
-
- .ruby-version
|
121
|
-
- .travis.yml
|
104
|
+
- ".gitignore"
|
105
|
+
- ".rspec"
|
106
|
+
- ".ruby-gemset"
|
107
|
+
- ".ruby-version"
|
108
|
+
- ".travis.yml"
|
122
109
|
- Gemfile
|
123
110
|
- Gemfile.lock
|
124
111
|
- README.textile
|
@@ -139,27 +126,26 @@ files:
|
|
139
126
|
- spec/spec_helper.rb
|
140
127
|
homepage: ''
|
141
128
|
licenses: []
|
129
|
+
metadata: {}
|
142
130
|
post_install_message:
|
143
131
|
rdoc_options: []
|
144
132
|
require_paths:
|
145
133
|
- lib
|
146
134
|
required_ruby_version: !ruby/object:Gem::Requirement
|
147
|
-
none: false
|
148
135
|
requirements:
|
149
|
-
- -
|
136
|
+
- - ">="
|
150
137
|
- !ruby/object:Gem::Version
|
151
138
|
version: '0'
|
152
139
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
153
|
-
none: false
|
154
140
|
requirements:
|
155
|
-
- -
|
141
|
+
- - ">="
|
156
142
|
- !ruby/object:Gem::Version
|
157
143
|
version: '0'
|
158
144
|
requirements: []
|
159
145
|
rubyforge_project: coffee_table
|
160
|
-
rubygems_version:
|
146
|
+
rubygems_version: 2.5.1
|
161
147
|
signing_key:
|
162
|
-
specification_version:
|
148
|
+
specification_version: 4
|
163
149
|
summary: Gem to manage cache stored in redis
|
164
150
|
test_files:
|
165
151
|
- spec/lib/coffee_table_spec.rb
|