redis_dedupe 0.0.6 → 1.0.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/catalog-info.yaml +1 -1
- data/lib/redis_dedupe/version.rb +1 -1
- data/lib/redis_dedupe.rb +23 -4
- data/spec/redis_dedupe_spec.rb +62 -0
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 928d8664404df9c7da443d0ec2e4ddc11e20569ee37eeb2eda94c62723330d06
|
4
|
+
data.tar.gz: c8b0e008b6831d6b89818cedfb68a84f6a8e413431f36d3695519a072d653fb4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 964de1d9e1f0e0b0787815c227e679d4641bf0faa76f191507eb406c099a41620fa5aec579a33ba99e06401b5a78b0fc2c2ac000f257d9842ae46da66548ff40
|
7
|
+
data.tar.gz: 6cbae4131755eca8e11a5b233d8e2e2668ee374230fc5f6840205005fb52286a25405d6bdc7f37e2fcc542c4177a23595d45d414471c0e0c6ce7535c723399fb
|
data/catalog-info.yaml
CHANGED
data/lib/redis_dedupe/version.rb
CHANGED
data/lib/redis_dedupe.rb
CHANGED
@@ -7,12 +7,13 @@ module RedisDedupe
|
|
7
7
|
|
8
8
|
class Set
|
9
9
|
SEVEN_DAYS = 7 * 24 * 60 * 60
|
10
|
+
DEFAULT_EXPIRES_IN = SEVEN_DAYS
|
10
11
|
|
11
12
|
attr_reader :key, :expires_in
|
12
13
|
|
13
|
-
def initialize(redis, key, expires_in =
|
14
|
-
@redis
|
15
|
-
@key
|
14
|
+
def initialize(redis, key, expires_in = DEFAULT_EXPIRES_IN)
|
15
|
+
@redis = redis
|
16
|
+
@key = key
|
16
17
|
@expires_in = expires_in
|
17
18
|
end
|
18
19
|
|
@@ -42,7 +43,12 @@ module RedisDedupe
|
|
42
43
|
private
|
43
44
|
|
44
45
|
def dedupe
|
45
|
-
@dedupe ||=
|
46
|
+
@dedupe ||=
|
47
|
+
RedisDedupe::Set.new(
|
48
|
+
RedisDedupe.client,
|
49
|
+
[dedupe_namespace, dedupe_id].join(':'),
|
50
|
+
dedupe_expires_in,
|
51
|
+
)
|
46
52
|
end
|
47
53
|
|
48
54
|
# Implement in class, should return an integer or string:
|
@@ -57,6 +63,19 @@ module RedisDedupe
|
|
57
63
|
raise NotImplementedError
|
58
64
|
end
|
59
65
|
|
66
|
+
# Override in class if needed, should return an integer representing the
|
67
|
+
# number of seconds until expiry.
|
68
|
+
#
|
69
|
+
# Ex.
|
70
|
+
#
|
71
|
+
# def dedupe_expires in
|
72
|
+
# 24 * 60 * 60 # => Or can use e.g. `1.day` in Rails.
|
73
|
+
# end
|
74
|
+
#
|
75
|
+
def dedupe_expires_in
|
76
|
+
RedisDedupe::Set::DEFAULT_EXPIRES_IN
|
77
|
+
end
|
78
|
+
|
60
79
|
def dedupe_namespace
|
61
80
|
self.class.name
|
62
81
|
end
|
data/spec/redis_dedupe_spec.rb
CHANGED
@@ -54,3 +54,65 @@ describe RedisDedupe::Set, "#finish" do
|
|
54
54
|
expect(redis.exists 'spec_key:1').to be(0)
|
55
55
|
end
|
56
56
|
end
|
57
|
+
|
58
|
+
describe RedisDedupe::Helpers do
|
59
|
+
let(:receiver_class) do
|
60
|
+
Class.new do
|
61
|
+
include RedisDedupe::Helpers
|
62
|
+
|
63
|
+
def self.name
|
64
|
+
"ReceiverClass"
|
65
|
+
end
|
66
|
+
|
67
|
+
def call
|
68
|
+
dedupe
|
69
|
+
end
|
70
|
+
|
71
|
+
private
|
72
|
+
|
73
|
+
def dedupe_id
|
74
|
+
"spec_key:1"
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
it "builds a Set" do
|
80
|
+
dedupe = receiver_class.new.call
|
81
|
+
|
82
|
+
expect(dedupe.key).to eq("ReceiverClass:spec_key:1")
|
83
|
+
expect(dedupe.expires_in.to_i).to eq(RedisDedupe::Set::DEFAULT_EXPIRES_IN)
|
84
|
+
end
|
85
|
+
|
86
|
+
context "given an overridden expires in value" do
|
87
|
+
let(:receiver_class) do
|
88
|
+
Class.new do
|
89
|
+
include RedisDedupe::Helpers
|
90
|
+
|
91
|
+
def self.name
|
92
|
+
"ReceiverClass"
|
93
|
+
end
|
94
|
+
|
95
|
+
def call
|
96
|
+
dedupe
|
97
|
+
end
|
98
|
+
|
99
|
+
private
|
100
|
+
|
101
|
+
def dedupe_id
|
102
|
+
"spec_key:1"
|
103
|
+
end
|
104
|
+
|
105
|
+
def dedupe_expires_in
|
106
|
+
24 * 60 * 60 # => 1 day
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
it "builds a Set" do
|
112
|
+
dedupe = receiver_class.new.call
|
113
|
+
|
114
|
+
expect(dedupe.key).to eq("ReceiverClass:spec_key:1")
|
115
|
+
expect(dedupe.expires_in.to_i).to eq(24 * 60 * 60)
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: redis_dedupe
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andy Huynh
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2025-06-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -111,7 +111,7 @@ homepage: ''
|
|
111
111
|
licenses:
|
112
112
|
- MIT
|
113
113
|
metadata: {}
|
114
|
-
post_install_message:
|
114
|
+
post_install_message:
|
115
115
|
rdoc_options: []
|
116
116
|
require_paths:
|
117
117
|
- lib
|
@@ -126,8 +126,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
126
126
|
- !ruby/object:Gem::Version
|
127
127
|
version: '0'
|
128
128
|
requirements: []
|
129
|
-
rubygems_version: 3.
|
130
|
-
signing_key:
|
129
|
+
rubygems_version: 3.4.19
|
130
|
+
signing_key:
|
131
131
|
specification_version: 4
|
132
132
|
summary: A weak deduper to make things like bulk email run safer.
|
133
133
|
test_files: []
|