redisize 0.1.3 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f518b11244f545e6dbbd246a4953ee00e85315a9305200c52bfbc1d09359662c
4
- data.tar.gz: 00f2823251a2351b81cda954070794ad6473fcc0ff5b234ff156f326b991ffa5
3
+ metadata.gz: 354b2f1ac302400888ebd67b99b59177d615c685273b21ae4feb4ab3b1c6582f
4
+ data.tar.gz: 9475c6209ffb1c840bc1da7754dd996e100796e2d37979da9eeee479e97d311e
5
5
  SHA512:
6
- metadata.gz: f0041a03011688e066bc5725fc3cb78fb8c0b8bd32bd58b32560d3c9869382707932e5f31293691d21862fa82983bf40005ccbbacfc6fafadc12e046a10dde99
7
- data.tar.gz: 316bcd2d0ea078e320188b630b79f9c85e351643acb026ed4b9c460d5f5eb33715373f9188a2578e8f5d0461bf9a16db977e653e08146a7e1d7c771fd936d592
6
+ metadata.gz: 692729405db96ff8132a4ec0d2eb9bd655000cf5ccb1d39d791c66c2f258f92f2b2f2ae885c8716b5fdebdc322af6478b76119e47f9e2c3c69f09dd0b81678eb
7
+ data.tar.gz: 17fc2e30bc58f236675a439424c3c7b17a894861febd7595a6d267c9a7c7520cce877ae67a8f94d3ff6c4d8201bdaf3d5cd7d2f480c111787436f88b8c14ae60
data/README.md CHANGED
@@ -1,8 +1,6 @@
1
1
  # Redisize
2
2
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/redisize`. To experiment with that code, run `bin/console` for an interactive prompt.
4
-
5
- TODO: Delete this and the text above, and describe your gem
3
+ The gem allows to use asynchonous way to cache or just store in redis or any other cache mechanism. For asynchronous caching the Resque or Sidekiq adapters can be used, for synchronous - inline.
6
4
 
7
5
  ## Installation
8
6
 
@@ -22,7 +20,54 @@ Or install it yourself as:
22
20
 
23
21
  ## Usage
24
22
 
25
- TODO: Write usage instructions here
23
+ ### Initialization
24
+ Usually adapter can'be defined automatically of presently installed gems. Curretly are supported sidekiq and resque gems to ansyncronous caching (redisizing). If no such gems are installed, the synchronous **inline** adapter is used. You can redefine manually an adapter as follows:
25
+
26
+ ```ruby
27
+ Redisize.adapter_kind = :inline
28
+ ```
29
+
30
+ Other values are ```:resque```, and ```:sidekiq```.
31
+ And then to use the gem just define in the target object:
32
+
33
+ ```ruby
34
+ include(Redisize)
35
+ ```
36
+
37
+ ### In Rails
38
+
39
+ To use the cache feature with Rails (and ActiveRecord) you have just to wrap a method accessing DB either a record or a relation to a block like this. So to redisize a record value as a json use the follwing:
40
+
41
+ ```ruby
42
+ redisize_json(attrs) do
43
+ # <JSON generation code>
44
+ # generate_json(attrs, options)
45
+ end
46
+ ```
47
+
48
+ to drop a JSON value use:
49
+
50
+ ```ruby
51
+ deredisize_json(attrs)
52
+ ```
53
+
54
+ to redisize an SQL:
55
+
56
+ ```ruby
57
+ redisize_sql do
58
+ relation.as_json(context)
59
+ end
60
+ ```
61
+
62
+ to redisize an record instance use:
63
+
64
+ ```ruby
65
+ redisize_model(slug, by_key: :slug) do
66
+ self.joins(:slug).where(slugs: {text: slug}).first
67
+ end
68
+ ```
69
+
70
+ Next calls to the block will return a cached value. Updating the record will drop cache for sql or record itself.
26
71
 
27
72
  ## Development
28
73
 
@@ -32,7 +77,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
32
77
 
33
78
  ## Contributing
34
79
 
35
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/redisize. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/[USERNAME]/redisize/blob/master/CODE_OF_CONDUCT.md).
80
+ Bug reports and pull requests are welcome on GitHub at https://github.com/majioa/redisize. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/majioa/redisize/blob/master/CODE_OF_CONDUCT.md).
36
81
 
37
82
 
38
83
  ## License
@@ -41,4 +86,4 @@ The gem is available as open source under the terms of the [MIT License](https:/
41
86
 
42
87
  ## Code of Conduct
43
88
 
44
- Everyone interacting in the Redisize project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/[USERNAME]/redisize/blob/master/CODE_OF_CONDUCT.md).
89
+ Everyone interacting in the Redisize project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/majioa/redisize/blob/master/CODE_OF_CONDUCT.md).
@@ -1,3 +1,3 @@
1
1
  module Redisize
2
- VERSION = "0.1.3"
2
+ VERSION = "0.1.5"
3
3
  end
data/lib/redisize.rb CHANGED
@@ -175,10 +175,6 @@ module Redisize
175
175
  end
176
176
  end
177
177
 
178
- def as_json_for instance
179
- instance.attribute_names.map {|x|[x, instance.read_attribute(x)] }.to_h
180
- end
181
-
182
178
  ### internal methods for enqueued proceeds
183
179
  #
184
180
  def redisize_model_metas metakey, model_name, attrs, key
@@ -272,7 +268,7 @@ module Redisize
272
268
 
273
269
  # self -> model instance
274
270
  def reredisize_instance
275
- attrs = Redisize.as_json_for(self)
271
+ attrs = self.as_json
276
272
  key = Redisize.key_name_for(self.class.polymorphic_base_name, attrs, "instance")
277
273
 
278
274
  # binding.pry
@@ -282,7 +278,7 @@ module Redisize
282
278
 
283
279
  # self -> model instance
284
280
  def deredisize_instance
285
- attrs = Redisize.as_json_for(self)
281
+ attrs = self.as_json
286
282
  key = Redisize.key_name_for(self.class.polymorphic_base_name, attrs, "instance")
287
283
 
288
284
  # binding.pry
@@ -291,7 +287,13 @@ module Redisize
291
287
 
292
288
  module ClassMethods
293
289
  def polymorphic_base_name
294
- (base_class.to_s.split("::")[0...-1] + [polymorphic_name]).join("::")
290
+ base_name = base_class.to_s
291
+
292
+ if base_name == polymorphic_name
293
+ polymorphic_name
294
+ else
295
+ (base_class.to_s.split("::")[0...-1] + [polymorphic_name]).join("::")
296
+ end
295
297
  end
296
298
 
297
299
  # self -> model class
@@ -312,12 +314,12 @@ module Redisize
312
314
  def redisize_model value, options = {}, &block
313
315
  primary_key = options.fetch(:by_key, self.primary_key).to_s
314
316
  key = ["instance", name, primary_key, value]
315
- metakey = ["meta", self.class.polymorphic_base_name, primary_key, value]
317
+ metakey = ["meta", self.polymorphic_base_name, primary_key, value]
316
318
 
317
319
  # binding.pry
318
320
  redisize_cache_fetch(key, expires_in: 1.week) do
319
321
  if result = block.call
320
- Redisize.enqueue(:redisize_model_metas, metakey, self.name, Redisize.as_json_for(result), key)
322
+ Redisize.enqueue(:redisize_model_metas, metakey, self.name, result.as_json, key)
321
323
  end
322
324
 
323
325
  result
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.1.3
4
+ version: 0.1.5
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: 2022-11-19 00:00:00.000000000 Z
11
+ date: 2023-12-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pry
@@ -73,7 +73,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
73
73
  - !ruby/object:Gem::Version
74
74
  version: '0'
75
75
  requirements: []
76
- rubygems_version: 3.1.6
76
+ rubygems_version: 3.3.26
77
77
  signing_key:
78
78
  specification_version: 4
79
79
  summary: Make json record cacheable to redis