kredis 1.0.1 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of kredis might be problematic. Click here for more details.

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c1cd3c7afcd05236cdb9ed3980d0969077f594da2fe1ca0be383610be4a4b37c
4
- data.tar.gz: 912cd1ed2ff7d0b05df1fcacb07e0272ba098b86645a0607a80aa69e65107223
3
+ metadata.gz: 4960df7b832b98970196c71cff95825187bbc49e7457ee13436a5408b841ef96
4
+ data.tar.gz: 3e6bf39db78519fd2a15e405a46d59cc20d0b789581487f968e7b32efd4c173f
5
5
  SHA512:
6
- metadata.gz: 8d7fa6004370d1d75c8b2567397ab88d65351af3d42d381cfc602d3db2a12eb10cdf0e42d190c802dea9d02fee112130cd6786ef60a125581924d82630191ebc
7
- data.tar.gz: '07286763861b342cb8dd67c55f1df2e84d2496aa41a626bf23bd186ab7b8c698018cc7cb42bf65128cfb2a88eb22a9f73c84fa8a8a0516aaedb56d8c18624b19'
6
+ metadata.gz: 4f5bf3d8078530a6a28a2f4f34e85f384ea3e452777902831b0bb144d28dfaa7d95c2bf7d8646c4e1eab427d5f3c293ef351eb069ca23f6bebce8a644ba6df85
7
+ data.tar.gz: b6a0eaa250c74167473ade0f3ea77636d19faf3dd0c26a563fb22f3adf9602d98fb159fb352a188ad1abb08f3b5f6c805a1fd5657f4b16e3484b4a8703ed3839
data/README.md CHANGED
@@ -171,6 +171,7 @@ class Person < ApplicationRecord
171
171
  kredis_list :names_with_custom_key, key: ->(p) { "person:#{p.id}:names_customized" }
172
172
  kredis_unique_list :skills, limit: 2
173
173
  kredis_enum :morning, values: %w[ bright blue black ], default: "bright"
174
+ kredis_counter :steps, expires_in: 1.hour
174
175
  end
175
176
 
176
177
  person = Person.find(5)
@@ -231,7 +232,7 @@ The above code could be added to either `config/environments/production.rb` or a
231
232
 
232
233
  ### Configure how the redis client is created
233
234
 
234
- You can configure how the redis client is created by setting `config.connector` in your `application.rb`:
235
+ You can configure how the redis client is created by setting `config.kredis.connector` in your `application.rb`:
235
236
 
236
237
  ```ruby
237
238
  config.kredis.connector = ->(config) { SomeRedisProxy.new(config) }
@@ -62,14 +62,18 @@ module Kredis::Attributes
62
62
  kredis_connection_with __method__, name, key, available: available, config: config, after_change: after_change
63
63
  end
64
64
 
65
- def kredis_counter(name, key: nil, config: :shared, after_change: nil)
66
- kredis_connection_with __method__, name, key, config: config, after_change: after_change
65
+ def kredis_counter(name, key: nil, config: :shared, after_change: nil, expires_in: nil)
66
+ kredis_connection_with __method__, name, key, config: config, after_change: after_change, expires_in: expires_in
67
67
  end
68
68
 
69
69
  def kredis_hash(name, key: nil, typed: :string, config: :shared, after_change: nil)
70
70
  kredis_connection_with __method__, name, key, typed: typed, config: config, after_change: after_change
71
71
  end
72
72
 
73
+ def kredis_boolean(name, key: nil, config: :shared, after_change: nil, expires_in: nil)
74
+ kredis_connection_with __method__, name, key, config: config, after_change: after_change, expires_in: expires_in
75
+ end
76
+
73
77
  private
74
78
  def kredis_connection_with(method, name, key, **options)
75
79
  ivar_symbol = :"@#{name}_#{method}"
@@ -11,7 +11,8 @@ class Kredis::Types::CallbacksProxy
11
11
  Kredis::Types::List => %i[ remove prepend append << ],
12
12
  Kredis::Types::Scalar => %i[ value= clear ],
13
13
  Kredis::Types::Set => %i[ add << remove replace take clear ],
14
- Kredis::Types::Slots => %i[ reserve release reset ]
14
+ Kredis::Types::Slots => %i[ reserve release reset ],
15
+ Kredis::Types::UniqueList => %i[ remove prepend append << ]
15
16
  }
16
17
 
17
18
  def initialize(type, callback)
@@ -28,6 +28,7 @@ class Kredis::Types::Hash < Kredis::Types::Proxying
28
28
  def remove
29
29
  del
30
30
  end
31
+ alias clear remove
31
32
 
32
33
  def entries
33
34
  (hgetall || {}).transform_values { |val| string_to_type(val, typed) }.with_indifferent_access
@@ -1,5 +1,5 @@
1
1
  class Kredis::Types::List < Kredis::Types::Proxying
2
- proxying :lrange, :lrem, :lpush, :rpush, :exists?
2
+ proxying :lrange, :lrem, :lpush, :rpush, :exists?, :del
3
3
 
4
4
  attr_accessor :typed
5
5
 
@@ -20,4 +20,8 @@ class Kredis::Types::List < Kredis::Types::Proxying
20
20
  rpush types_to_strings(elements, typed) if elements.flatten.any?
21
21
  end
22
22
  alias << append
23
+
24
+ def clear
25
+ del
26
+ end
23
27
  end
@@ -5,19 +5,25 @@ class Kredis::Types::UniqueList < Kredis::Types::List
5
5
  attr_accessor :typed, :limit
6
6
 
7
7
  def prepend(elements)
8
+ elements = Array(elements).uniq
9
+ return if elements.empty?
10
+
8
11
  multi do
9
12
  remove elements
10
13
  super
11
14
  ltrim 0, (limit - 1) if limit
12
- end if Array(elements).flatten.any?
15
+ end
13
16
  end
14
17
 
15
18
  def append(elements)
19
+ elements = Array(elements).uniq
20
+ return if elements.empty?
21
+
16
22
  multi do
17
23
  remove elements
18
24
  super
19
25
  ltrim -limit, -1 if limit
20
- end if Array(elements).flatten.any?
26
+ end
21
27
  end
22
28
  alias << append
23
29
  end
@@ -1,3 +1,3 @@
1
1
  module Kredis
2
- VERSION = "1.0.1"
2
+ VERSION = "1.1.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kredis
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kasper Timm Hansen
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2021-12-02 00:00:00.000000000 Z
12
+ date: 2022-02-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -109,7 +109,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  requirements: []
112
- rubygems_version: 3.2.30
112
+ rubygems_version: 3.2.32
113
113
  signing_key:
114
114
  specification_version: 4
115
115
  summary: Higher-level data structures built on Redis.