valid_email2 7.0.0 → 7.0.11

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.
data/valid_email2.gemspec CHANGED
@@ -1,5 +1,4 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
1
+ lib = File.expand_path('lib', __dir__)
3
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
3
  require "valid_email2/version"
5
4
 
@@ -8,8 +7,8 @@ Gem::Specification.new do |spec|
8
7
  spec.version = ValidEmail2::VERSION
9
8
  spec.authors = ["Micke Lisinge"]
10
9
  spec.email = ["hi@micke.me"]
11
- spec.description = %q{ActiveModel validation for email. Including MX lookup and disposable email deny list}
12
- spec.summary = %q{ActiveModel validation for email. Including MX lookup and disposable email deny list}
10
+ spec.description = 'ActiveModel validation for email. Including MX lookup and disposable email deny list'
11
+ spec.summary = 'ActiveModel validation for email. Including MX lookup and disposable email deny list'
13
12
  spec.homepage = "https://github.com/micke/valid_email2"
14
13
  spec.license = "MIT"
15
14
 
@@ -22,10 +21,12 @@ Gem::Specification.new do |spec|
22
21
 
23
22
  spec.add_development_dependency "bundler", "~> 2.0"
24
23
  spec.add_development_dependency "rake", "~> 12.3"
24
+ spec.add_development_dependency "securerandom", "0.3.1" # https://github.com/micke/valid_email2/actions/runs/13325070756/job/37216488894
25
25
  spec.add_development_dependency "rspec", "~> 3.5"
26
26
  spec.add_development_dependency "rspec-benchmark", "~> 0.6"
27
27
  spec.add_development_dependency "net-smtp"
28
- spec.add_development_dependency "pry"
28
+ spec.add_development_dependency "debug"
29
+ spec.add_development_dependency "rubocop"
29
30
  spec.add_runtime_dependency "mail", "~> 2.5"
30
31
  spec.add_runtime_dependency "activemodel", ">= 6.0"
31
32
  end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: valid_email2
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.0.0
4
+ version: 7.0.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Micke Lisinge
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2024-11-19 00:00:00.000000000 Z
10
+ date: 2025-02-28 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: bundler
@@ -38,6 +37,20 @@ dependencies:
38
37
  - - "~>"
39
38
  - !ruby/object:Gem::Version
40
39
  version: '12.3'
40
+ - !ruby/object:Gem::Dependency
41
+ name: securerandom
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - '='
45
+ - !ruby/object:Gem::Version
46
+ version: 0.3.1
47
+ type: :development
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - '='
52
+ - !ruby/object:Gem::Version
53
+ version: 0.3.1
41
54
  - !ruby/object:Gem::Dependency
42
55
  name: rspec
43
56
  requirement: !ruby/object:Gem::Requirement
@@ -81,7 +94,21 @@ dependencies:
81
94
  - !ruby/object:Gem::Version
82
95
  version: '0'
83
96
  - !ruby/object:Gem::Dependency
84
- name: pry
97
+ name: debug
98
+ requirement: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ type: :development
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: rubocop
85
112
  requirement: !ruby/object:Gem::Requirement
86
113
  requirements:
87
114
  - - ">="
@@ -134,6 +161,8 @@ files:
134
161
  - ".github/workflows/release.yaml"
135
162
  - ".gitignore"
136
163
  - ".release-please-manifest.json"
164
+ - ".rubocop.yml"
165
+ - ".rubocop_todo.yml"
137
166
  - ".ruby-version"
138
167
  - CHANGELOG.md
139
168
  - Gemfile
@@ -144,15 +173,17 @@ files:
144
173
  - config/disposable_email_domains.txt
145
174
  - gemfiles/activemodel6.gemfile
146
175
  - gemfiles/activemodel7.gemfile
176
+ - gemfiles/activemodel8.gemfile
147
177
  - lib/valid_email2.rb
148
178
  - lib/valid_email2/address.rb
149
- - lib/valid_email2/dns_records_cache.rb
179
+ - lib/valid_email2/dns.rb
150
180
  - lib/valid_email2/email_validator.rb
151
181
  - lib/valid_email2/version.rb
152
182
  - pull_mailchecker_emails.rb
153
183
  - release-please-config.json
154
184
  - spec/address_spec.rb
155
185
  - spec/benchmark_spec.rb
186
+ - spec/dns_spec.rb
156
187
  - spec/spec_helper.rb
157
188
  - spec/valid_email2_spec.rb
158
189
  - valid_email2.gemspec
@@ -160,7 +191,6 @@ homepage: https://github.com/micke/valid_email2
160
191
  licenses:
161
192
  - MIT
162
193
  metadata: {}
163
- post_install_message:
164
194
  rdoc_options: []
165
195
  require_paths:
166
196
  - lib
@@ -175,13 +205,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
175
205
  - !ruby/object:Gem::Version
176
206
  version: '0'
177
207
  requirements: []
178
- rubygems_version: 3.5.3
179
- signing_key:
208
+ rubygems_version: 3.6.5
180
209
  specification_version: 4
181
210
  summary: ActiveModel validation for email. Including MX lookup and disposable email
182
211
  deny list
183
212
  test_files:
184
213
  - spec/address_spec.rb
185
214
  - spec/benchmark_spec.rb
215
+ - spec/dns_spec.rb
186
216
  - spec/spec_helper.rb
187
217
  - spec/valid_email2_spec.rb
@@ -1,37 +0,0 @@
1
- module ValidEmail2
2
- class DnsRecordsCache
3
- MAX_CACHE_SIZE = 1_000
4
-
5
- def initialize
6
- # Cache structure: { domain (String): { records: [], cached_at: Time, ttl: Integer } }
7
- @cache = {}
8
- end
9
-
10
- def fetch(domain, &block)
11
- prune_cache if @cache.size > MAX_CACHE_SIZE
12
-
13
- cache_entry = @cache[domain]
14
-
15
- if cache_entry && (Time.now - cache_entry[:cached_at]) < cache_entry[:ttl]
16
- return cache_entry[:records]
17
- else
18
- @cache.delete(domain)
19
- end
20
-
21
- records = block.call
22
-
23
- if records.any?
24
- ttl = records.map(&:ttl).min
25
- @cache[domain] = { records: records, cached_at: Time.now, ttl: ttl }
26
- end
27
-
28
- records
29
- end
30
-
31
- def prune_cache
32
- entries_sorted_by_cached_at_asc = (@cache.sort_by { |_domain, data| data[:cached_at] }).flatten
33
- entries_to_remove = entries_sorted_by_cached_at_asc.first(@cache.size - MAX_CACHE_SIZE)
34
- entries_to_remove.each { |domain| @cache.delete(domain) }
35
- end
36
- end
37
- end