truemail 2.5.2 → 2.6.1

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: d8654d41d2c02eb0fc2e8519425c89e9fb761bcdbc2aee01f9b2043c167ab9a3
4
- data.tar.gz: 02ae00188163c899b4f18ea9b176025f851b76063ab96844d71f45fbcd538984
3
+ metadata.gz: 1499bcd186c7d733fc168a7167b5e171fb2617a37c041e9372a644fc1ecff09a
4
+ data.tar.gz: 6c9320d328da028de9f2e4b3241a91457d1984bc6f5b9e4325fe0c52b1a8f2b4
5
5
  SHA512:
6
- metadata.gz: '070814d64890b1257e731a63c560396589327e93c0e9c69afff84ba392a527684b7397b659a04533ff9fca4388fe0aec598dc38b42be0269bec35f8193352a02'
7
- data.tar.gz: 90159401dbcee96037cb14173e8feda4cd9c998162d10b18ef701b4102d1252532968d2a75d66eb8b097bd8db4d91ae4fefd2b40d48cce9c82f99470c9cad241
6
+ metadata.gz: '08e5b9f6fb5d6cc628058925401ea80cfc4f0614f16ffce25044b7c3965cbf5eb6560b88faac0732e80eb09d3711a15b2122c29ce623371cf30cb62477952420'
7
+ data.tar.gz: 4e18f42b916c4994f48b9cc4742ba80473934e9c15c41ef2d34d40b0e69e5f31058a45d78ffdd350040d25d4346b5e4e5c11e91edba0c34a8433c1e2bafaacf7
data/.circleci/config.yml CHANGED
@@ -4,18 +4,11 @@ defaults: &defaults
4
4
  working_directory: ~/truemail
5
5
  docker:
6
6
  - image: cimg/ruby:<< parameters.ruby-version >>
7
- environment:
8
- CC_TEST_REPORTER_ID: 693272a1328521f6f7c09d7ffd419b21c00410da26e98e94c687fdd38b26e2cb
9
7
 
10
8
  orbs:
11
- ruby: circleci/ruby@1.1.3
9
+ ruby: circleci/ruby@1.2.0
12
10
 
13
11
  references:
14
- install_bundler: &install_bundler
15
- run:
16
- name: Installing Bundler
17
- command: gem i bundler -v $(tail -1 Gemfile.lock | tr -d ' ')
18
-
19
12
  restore_bundle_cache: &restore_bundle_cache
20
13
  restore_cache:
21
14
  keys:
@@ -24,7 +17,9 @@ references:
24
17
  bundle_install: &bundle_install
25
18
  run:
26
19
  name: Installing gems
27
- command: bundle install --path vendor/bundle
20
+ command: |
21
+ bundle config set --local path 'vendor/bundle'
22
+ bundle install
28
23
 
29
24
  save_bundle_cache: &save_bundle_cache
30
25
  save_cache:
@@ -50,7 +45,6 @@ jobs:
50
45
  steps:
51
46
  - checkout
52
47
 
53
- - <<: *install_bundler
54
48
  - <<: *restore_bundle_cache
55
49
  - <<: *bundle_install
56
50
  - <<: *save_bundle_cache
@@ -71,7 +65,6 @@ jobs:
71
65
  steps:
72
66
  - checkout
73
67
 
74
- - <<: *install_bundler
75
68
  - <<: *restore_bundle_cache
76
69
  - <<: *bundle_install
77
70
  - <<: *save_bundle_cache
@@ -107,6 +100,7 @@ jobs:
107
100
  steps:
108
101
  - checkout
109
102
  - ruby/install-deps:
103
+ bundler-version: "2.3.3"
110
104
  with-cache: false
111
105
  path: './vendor/custom_bundle'
112
106
  - run:
@@ -127,4 +121,4 @@ workflows:
127
121
  - compatibility-ruby:
128
122
  matrix:
129
123
  parameters:
130
- ruby-version: ["2.6", "2.7", "3.0"]
124
+ ruby-version: ["2.6", "2.7", "3.0", "3.1"]
data/.codeclimate.yml CHANGED
@@ -7,7 +7,7 @@ checks:
7
7
  plugins:
8
8
  rubocop:
9
9
  enabled: true
10
- channel: rubocop-1-22
10
+ channel: rubocop-1-24
11
11
 
12
12
  reek:
13
13
  enabled: true
data/.gitignore CHANGED
@@ -1,3 +1,4 @@
1
1
  /.rspec_status
2
2
  /pkg
3
3
  /coverage/
4
+ Gemfile.lock
data/.reek.yml CHANGED
@@ -14,6 +14,7 @@ detectors:
14
14
  - Truemail::Validate::Mx#hosts_from_cname_records
15
15
  - Truemail::Configuration#logger=
16
16
  - Truemail::Validate::Smtp::Request#initialize
17
+ - Truemail::Validate::Smtp::Request::Session#initialize
17
18
 
18
19
  TooManyInstanceVariables:
19
20
  exclude:
@@ -47,6 +48,7 @@ detectors:
47
48
  - Truemail::Validate::Mx#null_mx?
48
49
  - Truemail::Validate::Mx#a_record
49
50
  - Truemail::Validate::Smtp::Request#compose_from
51
+ - Truemail::Validate::Smtp::Request::Session#old_net_smtp?
50
52
 
51
53
  ControlParameter:
52
54
  exclude:
data/.rubocop.yml CHANGED
@@ -31,6 +31,9 @@ Naming/RescuedExceptionsVariableName:
31
31
  Naming/InclusiveLanguage:
32
32
  Enabled: false
33
33
 
34
+ Naming/BlockForwarding:
35
+ Enabled: true
36
+
34
37
  Style/Documentation:
35
38
  Enabled: false
36
39
 
@@ -178,6 +181,18 @@ Style/NumberedParametersLimit:
178
181
  Style/SelectByRegexp:
179
182
  Enabled: true
180
183
 
184
+ Style/OpenStructUse:
185
+ Enabled: true
186
+
187
+ Style/FileRead:
188
+ Enabled: true
189
+
190
+ Style/FileWrite:
191
+ Enabled: true
192
+
193
+ Style/MapToHash:
194
+ Enabled: true
195
+
181
196
  Layout/LineLength:
182
197
  Max: 140
183
198
 
@@ -350,9 +365,18 @@ Lint/IncompatibleIoSelectWithFiberScheduler:
350
365
  Lint/RequireRelativeSelfPath:
351
366
  Enabled: true
352
367
 
368
+ Lint/UselessRuby2Keywords:
369
+ Enabled: true
370
+
353
371
  Gemspec/DateAssignment:
354
372
  Enabled: true
355
373
 
374
+ Gemspec/RequireMFA:
375
+ Enabled: false
376
+
377
+ Gemspec/RubyVersionGlobalsUsage:
378
+ Enabled: false
379
+
356
380
  Security/IoMethods:
357
381
  Enabled: true
358
382
 
@@ -404,6 +428,12 @@ Performance/RedundantSplitRegexpArgument:
404
428
  Performance/MapCompact:
405
429
  Enabled: true
406
430
 
431
+ Performance/ConcurrentMonotonicTime:
432
+ Enabled: true
433
+
434
+ Performance/StringIdentifierArgument:
435
+ Enabled: true
436
+
407
437
  RSpec/ExampleLength:
408
438
  Enabled: false
409
439
 
@@ -445,3 +475,6 @@ RSpec/ExcessiveDocstringSpacing:
445
475
 
446
476
  RSpec/SubjectDeclaration:
447
477
  Enabled: true
478
+
479
+ RSpec/FactoryBot/SyntaxMethods:
480
+ Enabled: true
data/CHANGELOG.md CHANGED
@@ -2,6 +2,57 @@
2
2
 
3
3
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
4
4
 
5
+ ## [2.6.1] - 2022.01.04
6
+
7
+ ### Fixed
8
+
9
+ - Fixed redefining builtin implementations caused using stdlib as external dependencies. Thanks [@allard](https://github.com/allard) for report.
10
+
11
+ ### Updated
12
+
13
+ - Updated `Truemail::Validate::Smtp::Request::Session#initialize`, `Truemail::Validate::Smtp::Request::Session#start`, tests
14
+ - Updated rubocop/reek configs
15
+ - Updated gem docs, version
16
+
17
+ ## [2.6.0] - 2021.12.28
18
+
19
+ ### Added
20
+
21
+ - Added Ruby 3.1.x compatibility
22
+ - Added `Truemail::Validate::Smtp::Request::Session` - `Net::SMTP` wrapper, tests
23
+
24
+ ### Updated
25
+
26
+ - Updated `Truemail::Validate::Smtp::Request#session`, `Truemail::Validate::Smtp::Request#run`, tests
27
+ - Updated rubocop/reek/codeclimate/circleci configs
28
+ - Updated gem runtime/development dependencies
29
+ - Updated gem docs, version
30
+
31
+ ## [2.5.4] - 2021.12.03
32
+
33
+ ### Fixed
34
+
35
+ - `Net::SMTP#start` Ruby 2.x compatibility. Thanks [@evserykh](https://github.com/evserykh) for bug report.
36
+
37
+ ### Updated
38
+
39
+ - Updated `Truemail::Validate::Smtp::Request#run`
40
+ - Updated rubocop/codeclimate configs
41
+ - Updated gem development dependencies
42
+ - Updated gem docs, version
43
+
44
+ ## [2.5.3] - 2021.11.08
45
+
46
+ ### Fixed
47
+
48
+ - Fixed Ruby 3.0 stdlib SMTP client SSL certificate verification issues for cases when IP address uses as MX host. Thanks [@esb](https://github.com/esb) for bug report.
49
+
50
+ ### Updated
51
+
52
+ - Updated `Truemail::Validate::Smtp::Request#run`
53
+ - Updated gem development dependencies
54
+ - Updated gem version
55
+
5
56
  ## [2.5.2] - 2021.10.06
6
57
 
7
58
  ### Fixed
data/README.md CHANGED
@@ -5,7 +5,7 @@
5
5
  [![CircleCI](https://circleci.com/gh/truemail-rb/truemail/tree/master.svg?style=svg)](https://circleci.com/gh/truemail-rb/truemail/tree/master)
6
6
  [![Gem Version](https://badge.fury.io/rb/truemail.svg)](https://badge.fury.io/rb/truemail)
7
7
  [![Downloads](https://img.shields.io/gem/dt/truemail.svg?colorA=004d99&colorB=0073e6)](https://rubygems.org/gems/truemail)
8
- [![SemVer compatibility](https://api.dependabot.com/badges/compatibility_score?dependency-name=truemail&package-manager=bundler&version-scheme=semver)](https://dependabot.com/compatibility-score.html?dependency-name=truemail&package-manager=bundler&version-scheme=semver)
8
+ [![In Awesome Ruby](https://raw.githubusercontent.com/sindresorhus/awesome/main/media/mentioned-badge.svg)](https://github.com/markets/awesome-ruby)
9
9
  [![Gitter](https://badges.gitter.im/truemail-rb/community.svg)](https://gitter.im/truemail-rb/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
10
10
  [![GitHub](https://img.shields.io/github/license/truemail-rb/truemail)](LICENSE.txt)
11
11
  [![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-v1.4%20adopted-ff69b4.svg)](CODE_OF_CONDUCT.md)
@@ -81,7 +81,6 @@ Also Truemail gem allows performing an audit of the host in which runs.
81
81
  ## Features
82
82
 
83
83
  - Configurable validator, validate only what you need
84
- - Only one runtime dependency
85
84
  - Supporting of internationalized emails ([EAI](https://en.wikipedia.org/wiki/Email_address#Internationalization))
86
85
  - Whitelist/blacklist validation layers
87
86
  - Ability to configure different MX/SMTP validation flows
@@ -4,8 +4,6 @@ module Truemail
4
4
  module Validate
5
5
  class Smtp
6
6
  class Request
7
- require 'net/smtp'
8
-
9
7
  SMTP_PORT = 25
10
8
  CONNECTION_TIMEOUT_ERROR = 'connection timed out'
11
9
  RESPONSE_TIMEOUT_ERROR = 'server response timeout'
@@ -35,10 +33,7 @@ module Truemail
35
33
  end
36
34
 
37
35
  def run
38
- session.start(configuration.verifier_domain) do |smtp_request|
39
- response.connection = response.helo = true
40
- smtp_handshakes(smtp_request, response)
41
- end
36
+ session.start(verifier_domain, &session_actions)
42
37
  rescue => error
43
38
  retry if attempts_exist?
44
39
  assign_error(attribute: :connection, message: compose_from(error))
@@ -57,6 +52,40 @@ module Truemail
57
52
  end
58
53
  end
59
54
 
55
+ class Session
56
+ require 'net/smtp'
57
+
58
+ UNDEFINED_VERSION = '0.0.0'
59
+
60
+ def initialize(host, port, connection_timeout, response_timeout, net_class = ::Net::SMTP)
61
+ @net_class = net_class
62
+ @net_smtp_version = resolve_net_smtp_version
63
+ @net_smtp = (old_net_smtp? ? net_class.new(host, port) : net_class.new(host, port, tls_verify: false)).tap do |settings|
64
+ settings.open_timeout = connection_timeout
65
+ settings.read_timeout = response_timeout
66
+ end
67
+ end
68
+
69
+ def start(helo_domain, &block)
70
+ return net_smtp.start(helo_domain, &block) if net_smtp_version < '0.2.0'
71
+ return net_smtp.start(helo_domain, tls_verify: false, &block) if old_net_smtp?
72
+ net_smtp.start(helo: helo_domain, &block)
73
+ end
74
+
75
+ private
76
+
77
+ attr_reader :net_class, :net_smtp_version, :net_smtp
78
+
79
+ def resolve_net_smtp_version
80
+ return net_class::VERSION if net_class.const_defined?(:VERSION)
81
+ Truemail::Validate::Smtp::Request::Session::UNDEFINED_VERSION
82
+ end
83
+
84
+ def old_net_smtp?
85
+ net_smtp_version < '0.3.0'
86
+ end
87
+ end
88
+
60
89
  attr_reader :attempts, :port_open_status
61
90
 
62
91
  def attempts_exist?
@@ -65,10 +94,12 @@ module Truemail
65
94
  end
66
95
 
67
96
  def session
68
- ::Net::SMTP.new(host, Truemail::Validate::Smtp::Request::SMTP_PORT).tap do |settings|
69
- settings.open_timeout = configuration.connection_timeout
70
- settings.read_timeout = configuration.response_timeout
71
- end
97
+ Truemail::Validate::Smtp::Request::Session.new(
98
+ host,
99
+ Truemail::Validate::Smtp::Request::SMTP_PORT,
100
+ configuration.connection_timeout,
101
+ configuration.response_timeout
102
+ )
72
103
  end
73
104
 
74
105
  def compose_from(error)
@@ -86,10 +117,7 @@ module Truemail
86
117
  end
87
118
 
88
119
  def session_data
89
- {
90
- mailfrom: configuration.verifier_email,
91
- rcptto: email
92
- }
120
+ { mailfrom: configuration.verifier_email, rcptto: email }
93
121
  end
94
122
 
95
123
  def smtp_resolver(smtp_request, method, value)
@@ -98,6 +126,17 @@ module Truemail
98
126
  assign_error(attribute: method, message: compose_from(error))
99
127
  end
100
128
 
129
+ def verifier_domain
130
+ configuration.verifier_domain
131
+ end
132
+
133
+ def session_actions
134
+ lambda { |smtp_request|
135
+ response.connection = response.helo = true
136
+ smtp_handshakes(smtp_request, response)
137
+ }
138
+ end
139
+
101
140
  def smtp_handshakes(smtp_request, smtp_response)
102
141
  session_data.all? do |method, value|
103
142
  smtp_response.public_send(:"#{method}=", smtp_resolver(smtp_request, method, value))
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Truemail
4
- VERSION = '2.5.2'
4
+ VERSION = '2.6.1'
5
5
  end
data/truemail.gemspec CHANGED
@@ -31,11 +31,11 @@ Gem::Specification.new do |spec|
31
31
  spec.executables = spec.files.grep(%r{^exe/}) { |f| ::File.basename(f) }
32
32
  spec.require_paths = ['lib']
33
33
 
34
+ spec.add_runtime_dependency 'net-smtp', '~> 0.3' if ::RUBY_VERSION >= '3.1.0'
34
35
  spec.add_runtime_dependency 'simpleidn', '~> 0.2.1'
35
36
 
36
- spec.add_development_dependency 'bundler', '~> 2.2', '>= 2.2.28'
37
37
  spec.add_development_dependency 'bundler-audit', '~> 0.9.0.1'
38
- spec.add_development_dependency 'dns_mock', '~> 1.4', '>= 1.4.2'
38
+ spec.add_development_dependency 'dns_mock', '~> 1.4', '>= 1.4.4'
39
39
  spec.add_development_dependency 'fasterer', '~> 0.9.0'
40
40
  spec.add_development_dependency 'ffaker', '~> 2.20'
41
41
  spec.add_development_dependency 'json_matchers', '~> 0.11.1'
@@ -44,9 +44,9 @@ Gem::Specification.new do |spec|
44
44
  spec.add_development_dependency 'rake', '~> 13.0', '>= 13.0.6'
45
45
  spec.add_development_dependency 'reek', '~> 6.0', '>= 6.0.6'
46
46
  spec.add_development_dependency 'rspec', '~> 3.10'
47
- spec.add_development_dependency 'rubocop', '~> 1.22', '>= 1.22.1'
48
- spec.add_development_dependency 'rubocop-performance', '~> 1.11', '>= 1.11.5'
49
- spec.add_development_dependency 'rubocop-rspec', '~> 2.5'
47
+ spec.add_development_dependency 'rubocop', '~> 1.24'
48
+ spec.add_development_dependency 'rubocop-performance', '~> 1.13'
49
+ spec.add_development_dependency 'rubocop-rspec', '~> 2.7'
50
50
  spec.add_development_dependency 'simplecov', '~> 0.17.1'
51
51
  spec.add_development_dependency 'truemail-rspec', '~> 0.7.0'
52
52
  spec.add_development_dependency 'webmock', '~> 3.14'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: truemail
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.2
4
+ version: 2.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vladislav Trotsenko
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-10-06 00:00:00.000000000 Z
11
+ date: 2022-01-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: simpleidn
@@ -24,26 +24,6 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 0.2.1
27
- - !ruby/object:Gem::Dependency
28
- name: bundler
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '2.2'
34
- - - ">="
35
- - !ruby/object:Gem::Version
36
- version: 2.2.28
37
- type: :development
38
- prerelease: false
39
- version_requirements: !ruby/object:Gem::Requirement
40
- requirements:
41
- - - "~>"
42
- - !ruby/object:Gem::Version
43
- version: '2.2'
44
- - - ">="
45
- - !ruby/object:Gem::Version
46
- version: 2.2.28
47
27
  - !ruby/object:Gem::Dependency
48
28
  name: bundler-audit
49
29
  requirement: !ruby/object:Gem::Requirement
@@ -67,7 +47,7 @@ dependencies:
67
47
  version: '1.4'
68
48
  - - ">="
69
49
  - !ruby/object:Gem::Version
70
- version: 1.4.2
50
+ version: 1.4.4
71
51
  type: :development
72
52
  prerelease: false
73
53
  version_requirements: !ruby/object:Gem::Requirement
@@ -77,7 +57,7 @@ dependencies:
77
57
  version: '1.4'
78
58
  - - ">="
79
59
  - !ruby/object:Gem::Version
80
- version: 1.4.2
60
+ version: 1.4.4
81
61
  - !ruby/object:Gem::Dependency
82
62
  name: fasterer
83
63
  requirement: !ruby/object:Gem::Requirement
@@ -208,54 +188,42 @@ dependencies:
208
188
  requirements:
209
189
  - - "~>"
210
190
  - !ruby/object:Gem::Version
211
- version: '1.22'
212
- - - ">="
213
- - !ruby/object:Gem::Version
214
- version: 1.22.1
191
+ version: '1.24'
215
192
  type: :development
216
193
  prerelease: false
217
194
  version_requirements: !ruby/object:Gem::Requirement
218
195
  requirements:
219
196
  - - "~>"
220
197
  - !ruby/object:Gem::Version
221
- version: '1.22'
222
- - - ">="
223
- - !ruby/object:Gem::Version
224
- version: 1.22.1
198
+ version: '1.24'
225
199
  - !ruby/object:Gem::Dependency
226
200
  name: rubocop-performance
227
201
  requirement: !ruby/object:Gem::Requirement
228
202
  requirements:
229
203
  - - "~>"
230
204
  - !ruby/object:Gem::Version
231
- version: '1.11'
232
- - - ">="
233
- - !ruby/object:Gem::Version
234
- version: 1.11.5
205
+ version: '1.13'
235
206
  type: :development
236
207
  prerelease: false
237
208
  version_requirements: !ruby/object:Gem::Requirement
238
209
  requirements:
239
210
  - - "~>"
240
211
  - !ruby/object:Gem::Version
241
- version: '1.11'
242
- - - ">="
243
- - !ruby/object:Gem::Version
244
- version: 1.11.5
212
+ version: '1.13'
245
213
  - !ruby/object:Gem::Dependency
246
214
  name: rubocop-rspec
247
215
  requirement: !ruby/object:Gem::Requirement
248
216
  requirements:
249
217
  - - "~>"
250
218
  - !ruby/object:Gem::Version
251
- version: '2.5'
219
+ version: '2.7'
252
220
  type: :development
253
221
  prerelease: false
254
222
  version_requirements: !ruby/object:Gem::Requirement
255
223
  requirements:
256
224
  - - "~>"
257
225
  - !ruby/object:Gem::Version
258
- version: '2.5'
226
+ version: '2.7'
259
227
  - !ruby/object:Gem::Dependency
260
228
  name: simplecov
261
229
  requirement: !ruby/object:Gem::Requirement
@@ -325,7 +293,6 @@ files:
325
293
  - CODE_OF_CONDUCT.md
326
294
  - CONTRIBUTING.md
327
295
  - Gemfile
328
- - Gemfile.lock
329
296
  - LICENSE.txt
330
297
  - README.md
331
298
  - Rakefile
data/Gemfile.lock DELETED
@@ -1,138 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- truemail (2.5.2)
5
- simpleidn (~> 0.2.1)
6
-
7
- GEM
8
- remote: https://rubygems.org/
9
- specs:
10
- addressable (2.8.0)
11
- public_suffix (>= 2.0.2, < 5.0)
12
- ast (2.4.2)
13
- bundler-audit (0.9.0.1)
14
- bundler (>= 1.2.0, < 3)
15
- thor (~> 1.0)
16
- byebug (11.1.3)
17
- childprocess (4.1.0)
18
- coderay (1.1.3)
19
- colorize (0.8.1)
20
- crack (0.4.5)
21
- rexml
22
- diff-lcs (1.4.4)
23
- dns_mock (1.4.2)
24
- simpleidn (~> 0.2.1)
25
- docile (1.4.0)
26
- fasterer (0.9.0)
27
- colorize (~> 0.7)
28
- ruby_parser (>= 3.14.1)
29
- ffaker (2.20.0)
30
- hashdiff (1.0.1)
31
- iniparse (1.5.0)
32
- json (2.5.1)
33
- json_matchers (0.11.1)
34
- json_schema
35
- json_schema (0.21.0)
36
- kwalify (0.7.2)
37
- method_source (1.0.0)
38
- overcommit (0.58.0)
39
- childprocess (>= 0.6.3, < 5)
40
- iniparse (~> 1.4)
41
- rexml (~> 3.2)
42
- parallel (1.21.0)
43
- parser (3.0.2.0)
44
- ast (~> 2.4.1)
45
- pry (0.13.1)
46
- coderay (~> 1.1)
47
- method_source (~> 1.0)
48
- pry-byebug (3.9.0)
49
- byebug (~> 11.0)
50
- pry (~> 0.13.0)
51
- public_suffix (4.0.6)
52
- rainbow (3.0.0)
53
- rake (13.0.6)
54
- reek (6.0.6)
55
- kwalify (~> 0.7.0)
56
- parser (~> 3.0.0)
57
- rainbow (>= 2.0, < 4.0)
58
- regexp_parser (2.1.1)
59
- rexml (3.2.5)
60
- rspec (3.10.0)
61
- rspec-core (~> 3.10.0)
62
- rspec-expectations (~> 3.10.0)
63
- rspec-mocks (~> 3.10.0)
64
- rspec-core (3.10.1)
65
- rspec-support (~> 3.10.0)
66
- rspec-expectations (3.10.1)
67
- diff-lcs (>= 1.2.0, < 2.0)
68
- rspec-support (~> 3.10.0)
69
- rspec-mocks (3.10.2)
70
- diff-lcs (>= 1.2.0, < 2.0)
71
- rspec-support (~> 3.10.0)
72
- rspec-support (3.10.2)
73
- rubocop (1.22.1)
74
- parallel (~> 1.10)
75
- parser (>= 3.0.0.0)
76
- rainbow (>= 2.2.2, < 4.0)
77
- regexp_parser (>= 1.8, < 3.0)
78
- rexml
79
- rubocop-ast (>= 1.12.0, < 2.0)
80
- ruby-progressbar (~> 1.7)
81
- unicode-display_width (>= 1.4.0, < 3.0)
82
- rubocop-ast (1.12.0)
83
- parser (>= 3.0.1.1)
84
- rubocop-performance (1.11.5)
85
- rubocop (>= 1.7.0, < 2.0)
86
- rubocop-ast (>= 0.4.0)
87
- rubocop-rspec (2.5.0)
88
- rubocop (~> 1.19)
89
- ruby-progressbar (1.11.0)
90
- ruby_parser (3.17.0)
91
- sexp_processor (~> 4.15, >= 4.15.1)
92
- sexp_processor (4.15.3)
93
- simplecov (0.17.1)
94
- docile (~> 1.1)
95
- json (>= 1.8, < 3)
96
- simplecov-html (~> 0.10.0)
97
- simplecov-html (0.10.2)
98
- simpleidn (0.2.1)
99
- unf (~> 0.1.4)
100
- thor (1.1.0)
101
- truemail-rspec (0.7.0)
102
- ffaker (~> 2.18)
103
- rspec (~> 3.10)
104
- truemail (>= 2.4)
105
- unf (0.1.4)
106
- unf_ext
107
- unf_ext (0.0.8)
108
- unicode-display_width (2.1.0)
109
- webmock (3.14.0)
110
- addressable (>= 2.8.0)
111
- crack (>= 0.3.2)
112
- hashdiff (>= 0.4.0, < 2.0.0)
113
-
114
- PLATFORMS
115
- x86_64-darwin-20
116
-
117
- DEPENDENCIES
118
- bundler (~> 2.2, >= 2.2.28)
119
- bundler-audit (~> 0.9.0.1)
120
- dns_mock (~> 1.4, >= 1.4.2)
121
- fasterer (~> 0.9.0)
122
- ffaker (~> 2.20)
123
- json_matchers (~> 0.11.1)
124
- overcommit (~> 0.58.0)
125
- pry-byebug (~> 3.9)
126
- rake (~> 13.0, >= 13.0.6)
127
- reek (~> 6.0, >= 6.0.6)
128
- rspec (~> 3.10)
129
- rubocop (~> 1.22, >= 1.22.1)
130
- rubocop-performance (~> 1.11, >= 1.11.5)
131
- rubocop-rspec (~> 2.5)
132
- simplecov (~> 0.17.1)
133
- truemail!
134
- truemail-rspec (~> 0.7.0)
135
- webmock (~> 3.14)
136
-
137
- BUNDLED WITH
138
- 2.2.28