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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e7e1bf24e46a051a088620a2ffb0e52ab8ee16e545eb493d9aa8165535653404
4
- data.tar.gz: 669458cb3c1a3970409babf024ebfb327f97bdc30171a5fc89e833bfe5168528
3
+ metadata.gz: 928d8664404df9c7da443d0ec2e4ddc11e20569ee37eeb2eda94c62723330d06
4
+ data.tar.gz: c8b0e008b6831d6b89818cedfb68a84f6a8e413431f36d3695519a072d653fb4
5
5
  SHA512:
6
- metadata.gz: a7c337626bb5e7e52da2f7023f6bf1ac815c5ec4920016eb7fda230d38c180f0d8b1801a27dabdce42eba7983253e99bbe4c65dad0acf6971333b59ac007ae06
7
- data.tar.gz: 115a49bb415bf73cc85311421f400ed35cf50a059d354ad3aa0f2b41641d8a21a40870c92e1e6b47c5cee9fcc3ae6eed11b4e008f8d3bc28ca65368dda765fbc
6
+ metadata.gz: 964de1d9e1f0e0b0787815c227e679d4641bf0faa76f191507eb406c099a41620fa5aec579a33ba99e06401b5a78b0fc2c2ac000f257d9842ae46da66548ff40
7
+ data.tar.gz: 6cbae4131755eca8e11a5b233d8e2e2668ee374230fc5f6840205005fb52286a25405d6bdc7f37e2fcc542c4177a23595d45d414471c0e0c6ce7535c723399fb
data/catalog-info.yaml CHANGED
@@ -16,5 +16,5 @@ metadata:
16
16
  spec:
17
17
  system: kajabi-products
18
18
  type: gem
19
- owner: standard-model
19
+ owner: production-engineering
20
20
  lifecycle: production
@@ -1,3 +1,3 @@
1
1
  module RedisDedupe
2
- VERSION = "0.0.6"
2
+ VERSION = "1.0.0"
3
3
  end
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 = SEVEN_DAYS)
14
- @redis = redis
15
- @key = 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 ||= RedisDedupe::Set.new(RedisDedupe.client, [dedupe_namespace, dedupe_id].join(':'))
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
@@ -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.6
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: 2024-10-22 00:00:00.000000000 Z
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.0.3.1
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: []