redisize 0.1.5 → 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 +4 -4
- data/lib/redisize/support/enumerable.rb +20 -0
- data/lib/redisize/version.rb +1 -1
- data/lib/redisize.rb +57 -4
- data/redisize.gemspec +3 -3
- metadata +7 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 71df00d9c001e09d06c90fc75ea318e50330dd6cebf2d804b0fd91ed329bb11b
|
4
|
+
data.tar.gz: caa72c28e9750012bccd1fc59caedfd27b5eb10bba75c38ba1f325e7e1527c94
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 17a578a95fdeb9a8c70fbea3d73c0642fa04ea37de713b8f386ad9b26e2ebd5802e2d66430f5e1698a16f227467bdf01abc6d7fd2cdf1b2479e3fadfd8acc515
|
7
|
+
data.tar.gz: fddd7a97b499514ac78a21168dfb5af6e21b10d5f28cdcc3001ec081812b565670fb8571e3a358e8759dae7bc929ab72825f16b437bae6398b8bfcb85ab3bc8f
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Redisize
|
2
|
+
module Support
|
3
|
+
module Enumerable
|
4
|
+
def self.included kls
|
5
|
+
kls.class_eval do
|
6
|
+
def redisize
|
7
|
+
case self
|
8
|
+
when Hash
|
9
|
+
redisize_hash { map { |x| x.jsonize } }
|
10
|
+
when Array
|
11
|
+
redisize_array { map { |x| x.jsonize } }
|
12
|
+
else
|
13
|
+
x.jsonize
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
data/lib/redisize/version.rb
CHANGED
data/lib/redisize.rb
CHANGED
@@ -16,6 +16,9 @@ module Redisize
|
|
16
16
|
module ORM
|
17
17
|
autoload :ActiveRecord, File.join(__dir__, 'redisize/orm/active_record.rb')
|
18
18
|
end
|
19
|
+
module Support
|
20
|
+
autoload :Enumerable, File.join(__dir__, 'redisize/support/enumerable.rb')
|
21
|
+
end
|
19
22
|
|
20
23
|
class << self
|
21
24
|
attr_writer :adapter
|
@@ -30,6 +33,10 @@ module Redisize
|
|
30
33
|
ActiveRecord: 'active_record'
|
31
34
|
}
|
32
35
|
|
36
|
+
SUPPORTS = {
|
37
|
+
Enumerable: 'enumerable'
|
38
|
+
}
|
39
|
+
|
33
40
|
LOGS = {
|
34
41
|
Rails: 'rails'
|
35
42
|
}
|
@@ -42,10 +49,11 @@ module Redisize
|
|
42
49
|
def included kls
|
43
50
|
kls.extend(Redisize::ClassMethods)
|
44
51
|
|
45
|
-
# init orm, log, and
|
52
|
+
# init orm, log, cache, and support classes
|
46
53
|
init_orm_for(kls)
|
47
54
|
init_log_for(kls)
|
48
55
|
init_cache_for(kls)
|
56
|
+
init_support_for(kls)
|
49
57
|
end
|
50
58
|
|
51
59
|
def init_orm_for kls
|
@@ -57,6 +65,17 @@ module Redisize
|
|
57
65
|
end
|
58
66
|
end
|
59
67
|
|
68
|
+
def init_support_for kls
|
69
|
+
sup = Object.constants.reduce(nil) { |res, anc| res || SUPPORTS.keys.find {|re| /#{re}/ =~ anc.to_s } }
|
70
|
+
|
71
|
+
if sup
|
72
|
+
require("redisize/support/#{SUPPORTS[sup]}")
|
73
|
+
cls = sup.to_s.constantize
|
74
|
+
cls.include(Redisize::Support.const_get(sup))
|
75
|
+
cls.include(Redisize::ClassMethods)
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
60
79
|
def init_log_for kls
|
61
80
|
log = Object.constants.reduce(nil) { |res, anc| res || LOGS.keys.find {|re| /#{re}/ =~ anc.to_s } }
|
62
81
|
|
@@ -75,6 +94,7 @@ module Redisize
|
|
75
94
|
require("redisize/cache/#{CACHES[cache]}")
|
76
95
|
Redisize.include(Redisize::Cache.const_get(cache))
|
77
96
|
Redisize.extend(Redisize::Cache.const_get(cache))
|
97
|
+
Enumerable.include(Redisize::Cache.const_get(cache))
|
78
98
|
kls.extend(Redisize::Cache.const_get(cache))
|
79
99
|
end
|
80
100
|
end
|
@@ -185,9 +205,9 @@ module Redisize
|
|
185
205
|
assign_reverse_key(metakey, key)
|
186
206
|
end
|
187
207
|
|
188
|
-
# +
|
208
|
+
# +redisize_array_metas+ updates all the meta keys for the result array value
|
189
209
|
#
|
190
|
-
def
|
210
|
+
def redisize_array_metas key, attres
|
191
211
|
model_name = key[1]
|
192
212
|
primary_key = key[2]
|
193
213
|
|
@@ -296,15 +316,48 @@ module Redisize
|
|
296
316
|
end
|
297
317
|
end
|
298
318
|
|
319
|
+
def primary_key_with key_name_in = nil
|
320
|
+
key_name_in || self.respond_to?(:primary_key) && self.primary_key || case self
|
321
|
+
when ActiveRecord
|
322
|
+
self.map.first&.class&.primary_key
|
323
|
+
when ActiveRecord::Scoping, ActiveRecord::Reflection, ActiveRecord::Associations
|
324
|
+
self.values.map.first&.class&.primary_key
|
325
|
+
end
|
326
|
+
end
|
327
|
+
|
299
328
|
# self -> model class
|
300
329
|
def redisize_sql &block
|
301
330
|
key = ["sql", self.name, self.primary_key, self.all.to_sql]
|
302
331
|
|
332
|
+
redisize_by_key(key, &block)
|
333
|
+
end
|
334
|
+
|
335
|
+
# self -> model class
|
336
|
+
def redisize_hash key_name_in = nil, &block
|
337
|
+
key_name = primary_key_with(key_name_in)
|
338
|
+
|
339
|
+
key = ["by_key", *self.values.map do |x|
|
340
|
+
key_name && x.respond_to?(key_name) ? x.send(key_name).to_s : x.to_s
|
341
|
+
end ]
|
342
|
+
|
343
|
+
redisize_by_key(key, &block)
|
344
|
+
end
|
345
|
+
|
346
|
+
# self -> model class
|
347
|
+
def redisize_array key_name_in = nil, &block
|
348
|
+
key_name = primary_key_with(key_name_in)
|
349
|
+
|
350
|
+
key = ["by_key", *self.map { |x| key_name ? x.send(key_name).to_s : x.to_s } ]
|
351
|
+
|
352
|
+
redisize_by_key(key, &block)
|
353
|
+
end
|
354
|
+
|
355
|
+
def redisize_by_key key, &block
|
303
356
|
# binding.pry
|
304
357
|
redisize_cache_fetch(key, expires_in: 1.day) do
|
305
358
|
value = block.call
|
306
359
|
|
307
|
-
Redisize.enqueue(:
|
360
|
+
Redisize.enqueue(:redisize_array_metas, key, value)
|
308
361
|
|
309
362
|
value
|
310
363
|
end
|
data/redisize.gemspec
CHANGED
@@ -8,15 +8,15 @@ Gem::Specification.new do |spec|
|
|
8
8
|
|
9
9
|
spec.summary = %q{Make json record cacheable to redis}
|
10
10
|
spec.description = %q{Make json record cacheable to redis via various adapters like Resque, Sidekiq, etc}
|
11
|
-
spec.homepage = "https://
|
11
|
+
spec.homepage = "https://codeberg.org/majioa/redisize"
|
12
12
|
spec.license = "MIT"
|
13
13
|
spec.required_ruby_version = Gem::Requirement.new(">= 2.3.0")
|
14
14
|
|
15
15
|
spec.metadata["allowed_push_host"] = "https://rubygems.org"
|
16
16
|
|
17
17
|
spec.metadata["homepage_uri"] = spec.homepage
|
18
|
-
spec.metadata["source_code_uri"] = "https://
|
19
|
-
spec.metadata["changelog_uri"] = "https://
|
18
|
+
spec.metadata["source_code_uri"] = "https://codeberg.org/majioa/redisize"
|
19
|
+
spec.metadata["changelog_uri"] = "https://codeberg.org/majioa/redisize/CHANGELOG.md"
|
20
20
|
|
21
21
|
# Specify which files should be added to the gem when it is released.
|
22
22
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: redisize
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pavel «Malo» Skrylev
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-05-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pry
|
@@ -48,16 +48,17 @@ files:
|
|
48
48
|
- lib/redisize/cache/rails.rb
|
49
49
|
- lib/redisize/log/rails.rb
|
50
50
|
- lib/redisize/orm/active_record.rb
|
51
|
+
- lib/redisize/support/enumerable.rb
|
51
52
|
- lib/redisize/version.rb
|
52
53
|
- redisize.gemspec
|
53
|
-
homepage: https://
|
54
|
+
homepage: https://codeberg.org/majioa/redisize
|
54
55
|
licenses:
|
55
56
|
- MIT
|
56
57
|
metadata:
|
57
58
|
allowed_push_host: https://rubygems.org
|
58
|
-
homepage_uri: https://
|
59
|
-
source_code_uri: https://
|
60
|
-
changelog_uri: https://
|
59
|
+
homepage_uri: https://codeberg.org/majioa/redisize
|
60
|
+
source_code_uri: https://codeberg.org/majioa/redisize
|
61
|
+
changelog_uri: https://codeberg.org/majioa/redisize/CHANGELOG.md
|
61
62
|
post_install_message:
|
62
63
|
rdoc_options: []
|
63
64
|
require_paths:
|