h2ocube_rails_cache 0.0.9 → 0.0.10
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 +4 -4
- data/README.md +4 -0
- data/h2ocube_rails_cache.gemspec +1 -1
- data/lib/active_support/cache/h2ocube_rails_cache.rb +61 -39
- data/lib/h2ocube_rails_cache.rb +8 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d8035a1f77233f7ff3329e9c709e58053fb7b5e5
|
4
|
+
data.tar.gz: 2278ba3f53b73bdfe300a77a3b937007949f3140
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6ecad18d2d880acccbd9a3dfebb5d01df2e5a7c4d246a01775227157e254697b3a3317a532964cfdd6f4d1a6bb74a4a860996033ed35655f3357014619004617
|
7
|
+
data.tar.gz: 6cccea34813f6e1ffbc7e34bba2943a2857f364041665398c43451ee1d2f46e53545c2cfb0c1ad23a3af7a4aaa7d3cabbcd864440d19dc6e631beeeb06254f49
|
data/README.md
CHANGED
@@ -30,6 +30,10 @@ Disable default session_store in config/initializers/session_store.rb
|
|
30
30
|
* `clear`
|
31
31
|
* `info`
|
32
32
|
|
33
|
+
## Support Options
|
34
|
+
|
35
|
+
* `expires_in` # Rails.cache.write 'key', 'value', expires_in: 1.minute
|
36
|
+
|
33
37
|
## Task changed
|
34
38
|
|
35
39
|
rake tmp:sessions:clear # will clear redis session data too
|
data/h2ocube_rails_cache.gemspec
CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |gem|
|
6
6
|
gem.name = 'h2ocube_rails_cache'
|
7
|
-
gem.version = '0.0.
|
7
|
+
gem.version = '0.0.10'
|
8
8
|
gem.authors = ['Ben']
|
9
9
|
gem.email = ['ben@h2ocube.com']
|
10
10
|
gem.description = 'Just an redis cache.'
|
@@ -7,86 +7,97 @@ module ActiveSupport
|
|
7
7
|
def initialize(options = nil, &blk)
|
8
8
|
options ||= {}
|
9
9
|
super(options)
|
10
|
-
@data = Redis::Namespace.new("#{Rails.application.class.to_s.split(
|
10
|
+
@data = Redis::Namespace.new("#{Rails.application.class.to_s.split('::').first}:#{Rails.env}:Cache", redis: Redis::Store.new)
|
11
11
|
end
|
12
12
|
|
13
|
-
def keys
|
13
|
+
def keys(key = '*')
|
14
14
|
key = expanded_key key
|
15
15
|
@data.keys key
|
16
16
|
end
|
17
17
|
|
18
|
-
def fetch
|
18
|
+
def fetch(key, options = nil, &block)
|
19
19
|
key = expanded_key key
|
20
20
|
|
21
|
-
|
22
|
-
|
23
|
-
|
21
|
+
instrument :fetch, key, options do
|
22
|
+
exist?(key) ? read(key, options) : write(key, block, options)
|
23
|
+
end
|
24
24
|
end
|
25
25
|
|
26
|
-
def read
|
26
|
+
def read(key, options = nil)
|
27
27
|
key = expanded_key key
|
28
28
|
return nil if key.start_with?('http')
|
29
|
-
|
30
|
-
load_entry(@data.get
|
31
|
-
else
|
32
|
-
nil
|
29
|
+
instrument :read, key, options do
|
30
|
+
exist?(key) ? load_entry(@data.get(key)) : nil
|
33
31
|
end
|
34
32
|
end
|
35
33
|
|
36
|
-
def read_raw
|
34
|
+
def read_raw(key, _options = nil)
|
37
35
|
key = expanded_key key
|
38
36
|
@data.get key
|
39
37
|
end
|
40
38
|
|
41
|
-
|
42
|
-
def write key, entry, options = nil
|
39
|
+
def write(key, entry, options = nil)
|
43
40
|
key = expanded_key key
|
44
41
|
return false if key.start_with?('http')
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
nil
|
49
|
-
|
50
|
-
|
51
|
-
|
42
|
+
|
43
|
+
instrument :write, key, options do
|
44
|
+
entry = dump_entry entry
|
45
|
+
if entry.nil?
|
46
|
+
Rails.logger.warn "CacheWarn: '#{key}' is not cacheable!"
|
47
|
+
nil
|
48
|
+
else
|
49
|
+
@data.set key, entry, options
|
50
|
+
load_entry entry
|
51
|
+
end
|
52
52
|
end
|
53
53
|
end
|
54
54
|
|
55
|
-
def delete
|
55
|
+
def delete(key, options = nil)
|
56
56
|
key = expanded_key key
|
57
|
-
|
58
|
-
|
57
|
+
|
58
|
+
instrument :delete, key, options do
|
59
|
+
@data.keys(key).each { |k| @data.del k }
|
60
|
+
true
|
61
|
+
end
|
59
62
|
end
|
60
63
|
|
61
|
-
def exist?
|
64
|
+
def exist?(key, _options = nil)
|
62
65
|
key = expanded_key key
|
63
66
|
@data.exists key
|
64
67
|
end
|
65
68
|
|
66
69
|
def clear
|
67
|
-
|
68
|
-
|
70
|
+
instrument :clear, nil, nil do
|
71
|
+
@data.keys('*').each { |k| @data.del k }
|
72
|
+
true
|
73
|
+
end
|
69
74
|
end
|
70
75
|
|
71
76
|
def info
|
72
77
|
@data.info
|
73
78
|
end
|
74
79
|
|
75
|
-
def increment
|
80
|
+
def increment(key, amount = 1, _options = nil)
|
76
81
|
key = expanded_key key
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
82
|
+
|
83
|
+
instrument :increment, key, amount do
|
84
|
+
if amount == 1
|
85
|
+
@data.incr key
|
86
|
+
else
|
87
|
+
@data.incrby key, amount
|
88
|
+
end
|
81
89
|
end
|
82
90
|
end
|
83
91
|
|
84
|
-
def decrement
|
92
|
+
def decrement(key, amount = 1, _options = nil)
|
85
93
|
key = expanded_key key
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
94
|
+
|
95
|
+
instrument :decrement, key, amount do
|
96
|
+
if amount == 1
|
97
|
+
@data.decr key
|
98
|
+
else
|
99
|
+
@data.decrby key, amount
|
100
|
+
end
|
90
101
|
end
|
91
102
|
end
|
92
103
|
|
@@ -96,7 +107,18 @@ module ActiveSupport
|
|
96
107
|
|
97
108
|
private
|
98
109
|
|
99
|
-
def
|
110
|
+
def instrument(operation, key, options = nil)
|
111
|
+
payload = { key: key }
|
112
|
+
payload.merge!(options) if options.is_a?(Hash)
|
113
|
+
ActiveSupport::Notifications.instrument("cache_#{operation}.active_support", payload) { yield(payload) }
|
114
|
+
end
|
115
|
+
|
116
|
+
def log(operation, key, options = nil)
|
117
|
+
return unless logger && logger.debug? && !silence?
|
118
|
+
logger.debug(" \e[95mCACHE #{operation}\e[0m #{key}#{options.blank? ? "" : " (#{options.inspect})"}")
|
119
|
+
end
|
120
|
+
|
121
|
+
def dump_entry(entry)
|
100
122
|
entry = entry.call if entry.class.to_s == 'Proc'
|
101
123
|
|
102
124
|
case entry.class.to_s
|
@@ -112,7 +134,7 @@ module ActiveSupport
|
|
112
134
|
end
|
113
135
|
end
|
114
136
|
|
115
|
-
def load_entry
|
137
|
+
def load_entry(entry)
|
116
138
|
begin
|
117
139
|
Marshal.load entry
|
118
140
|
rescue
|
data/lib/h2ocube_rails_cache.rb
CHANGED
@@ -22,6 +22,14 @@ module H2ocubeRailsCache
|
|
22
22
|
app.config.session_store :h2ocube_rails_cache_session
|
23
23
|
end
|
24
24
|
|
25
|
+
config.after_initialize do
|
26
|
+
Rails.cache.logger = Rails.logger
|
27
|
+
|
28
|
+
ActiveSupport::Notifications.subscribe(/cache_[^.]+.active_support/) do |name, start, finish, id, payload|
|
29
|
+
Rails.cache.logger.debug " \e[95mCACHE #{name} (#{((finish - start) * 1000).round 2}ms)\e[0m #{payload[:key]} (#{payload[:options].inspect})"
|
30
|
+
end if Rails.cache.logger.debug? && !Rails.cache.silence?
|
31
|
+
end
|
32
|
+
|
25
33
|
rake_tasks do
|
26
34
|
load 'tasks/tmp.rake'
|
27
35
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: h2ocube_rails_cache
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-08-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: redis-namespace
|
@@ -111,7 +111,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
111
111
|
version: '0'
|
112
112
|
requirements: []
|
113
113
|
rubyforge_project:
|
114
|
-
rubygems_version: 2.
|
114
|
+
rubygems_version: 2.6.4
|
115
115
|
signing_key:
|
116
116
|
specification_version: 4
|
117
117
|
summary: Just an redis cache.
|