validators 3.4.1 → 3.4.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +0 -17
- data/bin/sync-reserved-subdomains +96 -0
- data/data/reserved_subdomains.txt +4 -22
- data/lib/validators/disposable_emails.rb +1 -1
- data/lib/validators/ip.rb +6 -6
- data/lib/validators/locale/en.yml +5 -4
- data/lib/validators/locale/pt-BR.yml +7 -3
- data/lib/validators/validates_datetime.rb +3 -2
- data/lib/validators/validates_email_format_of.rb +2 -2
- data/lib/validators/version.rb +1 -1
- data/test/validators/disposable_email_test.rb +0 -2
- data/validators.gemspec +2 -2
- metadata +10 -38
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d0f693875b0571922e182c06e57d4710dc698506a3859d943973706a4565fa3a
|
4
|
+
data.tar.gz: 36729706a9f37dec4243a16bd7e1a2e77007e07e03077413a78d04fba2607d53
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ee2529d3bf6c418fff9f38c104c9f8d3df27121213472ef15b12ae19c37f4dbbeb527b821f1d48b4d803a06810efd1fbb7b3807f3cdec574c76ea1d547840def
|
7
|
+
data.tar.gz: 278ff5305f827bf8f097426de34ab0543b57474dc731586b6c278e199b8c7c8ac1499c8d0c875dd54378ab292009a9a8e8bc44f8ea16ba75f317fcdaa9b682eb
|
data/.rubocop.yml
CHANGED
@@ -10,15 +10,6 @@ AllCops:
|
|
10
10
|
Style/AsciiComments:
|
11
11
|
Enabled: false
|
12
12
|
|
13
|
-
Metrics/AbcSize:
|
14
|
-
Enabled: false
|
15
|
-
|
16
|
-
Metrics/CyclomaticComplexity:
|
17
|
-
Enabled: false
|
18
|
-
|
19
|
-
Metrics/PerceivedComplexity:
|
20
|
-
Enabled: false
|
21
|
-
|
22
13
|
Style/Alias:
|
23
14
|
Enabled: false
|
24
15
|
|
@@ -28,13 +19,5 @@ Layout/LineLength:
|
|
28
19
|
Style/IfUnlessModifier:
|
29
20
|
Enabled: false
|
30
21
|
|
31
|
-
Metrics/MethodLength:
|
32
|
-
Enabled: false
|
33
|
-
|
34
|
-
Metrics/BlockLength:
|
35
|
-
Exclude:
|
36
|
-
- bin/**/*
|
37
|
-
- "*.gemspec"
|
38
|
-
|
39
22
|
Layout/EmptyLinesAroundAttributeAccessor:
|
40
23
|
Enabled: false
|
@@ -0,0 +1,96 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
require "bundler/setup"
|
5
|
+
require "open-uri"
|
6
|
+
require "json"
|
7
|
+
require "yaml"
|
8
|
+
require "email_data"
|
9
|
+
require "aitch"
|
10
|
+
|
11
|
+
def fetch_nkkollaw
|
12
|
+
matchers = YAML.safe_load(Aitch.get("https://github.com/nkkollaw/reserved-subdomains/raw/master/reserved-subdomains.yaml").body).map(&:to_s)
|
13
|
+
matchers.map do |matcher|
|
14
|
+
next matcher unless matcher.start_with?("/")
|
15
|
+
|
16
|
+
matcher.gsub(%r{/(.*?)/}) do |_m, _group|
|
17
|
+
new_matcher = Regexp.last_match(1).gsub("[0-9]+", "[0-9-]*")
|
18
|
+
"/^#{new_matcher}$/"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def fetch_mottie
|
24
|
+
data = JSON.parse(Aitch.get("https://github.com/Mottie/github-reserved-names/raw/master/oddballs.json").body, symbolize_names: true)
|
25
|
+
data.keys.map(&:to_s)
|
26
|
+
end
|
27
|
+
|
28
|
+
def fetch_jedireza
|
29
|
+
data = JSON.parse(Aitch.get("https://github.com/jedireza/reserved-subdomains/raw/master/names.json").body, symbolize_names: true)
|
30
|
+
data.map(&:to_s)
|
31
|
+
end
|
32
|
+
|
33
|
+
def fetch_mvila
|
34
|
+
data = JSON.parse(Aitch.get("https://github.com/mvila/reserved-usernames/raw/master/data.json").body)
|
35
|
+
data.map(&:to_s)
|
36
|
+
end
|
37
|
+
|
38
|
+
def fetch_lukes
|
39
|
+
data = JSON.parse(Aitch.get("https://github.com/lukes/ISO-3166-Countries-with-Regional-Codes/raw/master/all/all.json").body)
|
40
|
+
data.map do |info|
|
41
|
+
info["alpha-2"].downcase
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def fetch_dominicsayers
|
46
|
+
%w[
|
47
|
+
https://github.com/dominicsayers/reserved_subdomain/raw/master/lib/reserved_subdomain/literals/miscellaneous.txt
|
48
|
+
].each_with_object([]) do |url, buffer|
|
49
|
+
data = Aitch.get(url).body.lines
|
50
|
+
buffer.push(*data.map(&:chomp))
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
subdomains = []
|
55
|
+
subdomains << fetch_nkkollaw
|
56
|
+
subdomains << fetch_mottie
|
57
|
+
subdomains << fetch_jedireza
|
58
|
+
subdomains << fetch_mvila
|
59
|
+
subdomains << fetch_lukes
|
60
|
+
subdomains << fetch_dominicsayers
|
61
|
+
subdomains << ("a".."z").to_a
|
62
|
+
subdomains << EmailData.tlds
|
63
|
+
subdomains << %w[
|
64
|
+
/^db[0-9-]*$/
|
65
|
+
/^dc[0-9-]*$/
|
66
|
+
/^dev[0-9-]*$/
|
67
|
+
/^dns[0-9-]*$/
|
68
|
+
/^ftp[0-9-]*$/
|
69
|
+
/^host[0-9-]*$/
|
70
|
+
/^mail[0-9-]*$/
|
71
|
+
/^mx[0-9-]*$/
|
72
|
+
/^ns[0-9-]*$/
|
73
|
+
/^ntp[0-9-]*$/
|
74
|
+
/^server[0-9-]*$/
|
75
|
+
/^smtp[0-9-]*$/
|
76
|
+
/^static[0-9-]*$/
|
77
|
+
/^support[0-9-]*$/
|
78
|
+
/^test[0-9-]*$/
|
79
|
+
/^vpn[0-9-]*$/
|
80
|
+
/^web[0-9-]*$/
|
81
|
+
/^www[0-9-]*$/
|
82
|
+
/^your.+$/
|
83
|
+
/^[0-9-]+$/
|
84
|
+
eu
|
85
|
+
us
|
86
|
+
]
|
87
|
+
|
88
|
+
subdomains = subdomains.flatten.map do |subdomain|
|
89
|
+
next subdomain if subdomain.start_with?("/")
|
90
|
+
|
91
|
+
subdomain.gsub(/[-_]/, "")
|
92
|
+
end
|
93
|
+
|
94
|
+
File.open("./data/reserved_subdomains.txt", "w") do |file|
|
95
|
+
file << subdomains.flatten.uniq.sort.map(&:downcase).join("\n")
|
96
|
+
end
|
@@ -136,6 +136,7 @@ adult
|
|
136
136
|
adv
|
137
137
|
advanceautoparts
|
138
138
|
advertising
|
139
|
+
advisories
|
139
140
|
ae
|
140
141
|
aecom
|
141
142
|
aeg
|
@@ -144,7 +145,6 @@ aero
|
|
144
145
|
aes
|
145
146
|
aetna
|
146
147
|
af
|
147
|
-
afamilycompany
|
148
148
|
affiliate
|
149
149
|
affiliates
|
150
150
|
afginc
|
@@ -398,7 +398,6 @@ brother
|
|
398
398
|
brussels
|
399
399
|
bs
|
400
400
|
bt
|
401
|
-
budapest
|
402
401
|
bug
|
403
402
|
bugatti
|
404
403
|
bugs
|
@@ -451,7 +450,6 @@ cars
|
|
451
450
|
cart
|
452
451
|
casa
|
453
452
|
case
|
454
|
-
caseih
|
455
453
|
casestudies
|
456
454
|
caseys
|
457
455
|
cash
|
@@ -472,7 +470,6 @@ cc
|
|
472
470
|
cd
|
473
471
|
cdn
|
474
472
|
cdw
|
475
|
-
ceb
|
476
473
|
celanese
|
477
474
|
celgene
|
478
475
|
centene
|
@@ -743,7 +740,6 @@ drupal
|
|
743
740
|
dteenergy
|
744
741
|
dtv
|
745
742
|
dubai
|
746
|
-
duck
|
747
743
|
dukeenergy
|
748
744
|
dunlop
|
749
745
|
dupont
|
@@ -950,7 +946,6 @@ fs
|
|
950
946
|
ftp
|
951
947
|
ftr
|
952
948
|
fujitsu
|
953
|
-
fujixerox
|
954
949
|
fun
|
955
950
|
fund
|
956
951
|
furniture
|
@@ -1008,7 +1003,6 @@ github
|
|
1008
1003
|
gives
|
1009
1004
|
giving
|
1010
1005
|
gl
|
1011
|
-
glade
|
1012
1006
|
glass
|
1013
1007
|
gle
|
1014
1008
|
global
|
@@ -1230,7 +1224,6 @@ item
|
|
1230
1224
|
items
|
1231
1225
|
itv
|
1232
1226
|
itw
|
1233
|
-
iveco
|
1234
1227
|
j
|
1235
1228
|
jabber
|
1236
1229
|
jabil
|
@@ -1243,7 +1236,6 @@ javanese
|
|
1243
1236
|
javascript
|
1244
1237
|
jbhunt
|
1245
1238
|
jcb
|
1246
|
-
jcp
|
1247
1239
|
jcpenney
|
1248
1240
|
je
|
1249
1241
|
jeep
|
@@ -1292,6 +1284,7 @@ kg
|
|
1292
1284
|
kh
|
1293
1285
|
ki
|
1294
1286
|
kia
|
1287
|
+
kids
|
1295
1288
|
kiewit
|
1296
1289
|
kim
|
1297
1290
|
kimberlyclark
|
@@ -1397,7 +1390,6 @@ live
|
|
1397
1390
|
livejournal
|
1398
1391
|
livenation
|
1399
1392
|
living
|
1400
|
-
lixil
|
1401
1393
|
lj
|
1402
1394
|
lk
|
1403
1395
|
lkqcorp
|
@@ -1435,7 +1427,6 @@ ltd
|
|
1435
1427
|
ltda
|
1436
1428
|
lu
|
1437
1429
|
lundbeck
|
1438
|
-
lupin
|
1439
1430
|
luxe
|
1440
1431
|
luxury
|
1441
1432
|
lv
|
@@ -1631,7 +1622,6 @@ networkip
|
|
1631
1622
|
neustar
|
1632
1623
|
new
|
1633
1624
|
newellbrands
|
1634
|
-
newholland
|
1635
1625
|
newmont
|
1636
1626
|
news
|
1637
1627
|
newscorp
|
@@ -1709,7 +1699,6 @@ oauth
|
|
1709
1699
|
oauthclients
|
1710
1700
|
obi
|
1711
1701
|
observer
|
1712
|
-
off
|
1713
1702
|
offer
|
1714
1703
|
offers
|
1715
1704
|
office
|
@@ -1732,7 +1721,6 @@ oneok
|
|
1732
1721
|
ong
|
1733
1722
|
onl
|
1734
1723
|
online
|
1735
|
-
onyourside
|
1736
1724
|
ooo
|
1737
1725
|
open
|
1738
1726
|
openid
|
@@ -1924,11 +1912,9 @@ query
|
|
1924
1912
|
quest
|
1925
1913
|
questdiagnostics
|
1926
1914
|
quintiles
|
1927
|
-
qvc
|
1928
1915
|
r
|
1929
1916
|
racing
|
1930
1917
|
radio
|
1931
|
-
raid
|
1932
1918
|
ralphlauren
|
1933
1919
|
random
|
1934
1920
|
ranking
|
@@ -1999,7 +1985,6 @@ ril
|
|
1999
1985
|
rio
|
2000
1986
|
rip
|
2001
1987
|
riteaid
|
2002
|
-
rmit
|
2003
1988
|
ro
|
2004
1989
|
rocher
|
2005
1990
|
rocks
|
@@ -2071,7 +2056,6 @@ schools
|
|
2071
2056
|
schule
|
2072
2057
|
schwarz
|
2073
2058
|
science
|
2074
|
-
scjohnson
|
2075
2059
|
scot
|
2076
2060
|
script
|
2077
2061
|
scripts
|
@@ -2128,7 +2112,6 @@ shopping
|
|
2128
2112
|
shouji
|
2129
2113
|
show
|
2130
2114
|
showtime
|
2131
|
-
shriram
|
2132
2115
|
si
|
2133
2116
|
signin
|
2134
2117
|
signout
|
@@ -2176,6 +2159,7 @@ southerncompany
|
|
2176
2159
|
southwest
|
2177
2160
|
soy
|
2178
2161
|
sp
|
2162
|
+
spa
|
2179
2163
|
space
|
2180
2164
|
spam
|
2181
2165
|
spanish
|
@@ -2189,7 +2173,6 @@ spiritaero
|
|
2189
2173
|
sport
|
2190
2174
|
sports
|
2191
2175
|
spot
|
2192
|
-
spreadbetting
|
2193
2176
|
sql
|
2194
2177
|
sr
|
2195
2178
|
src
|
@@ -2262,7 +2245,6 @@ suzuki
|
|
2262
2245
|
sv
|
2263
2246
|
svn
|
2264
2247
|
swatch
|
2265
|
-
swiftcover
|
2266
2248
|
swiss
|
2267
2249
|
sx
|
2268
2250
|
sy
|
@@ -2646,12 +2628,12 @@ xn3bst00m
|
|
2646
2628
|
xn3ds443g
|
2647
2629
|
xn3e0b707e
|
2648
2630
|
xn3hcrj9c
|
2649
|
-
xn3oq18vl8pn36a
|
2650
2631
|
xn3pxu8k
|
2651
2632
|
xn42c2d9a
|
2652
2633
|
xn45br5cyl
|
2653
2634
|
xn45brj9c
|
2654
2635
|
xn45q11c
|
2636
|
+
xn4dbrk0ce
|
2655
2637
|
xn4gbrim
|
2656
2638
|
xn54b7fta0cc
|
2657
2639
|
xn55qw42g
|
data/lib/validators/ip.rb
CHANGED
@@ -11,13 +11,13 @@ module Validators
|
|
11
11
|
# Extracted from Ruby 1.8.7
|
12
12
|
def v6?(addr)
|
13
13
|
# IPv6 (normal)
|
14
|
-
return true if /\A[\da-f]{1,4}(:[\da-f]{1,4})*\Z/i
|
15
|
-
return true if /\A[\da-f]{1,4}(:[\da-f]{1,4})*::([\da-f]{1,4}(:[\da-f]{1,4})*)?\Z/i
|
16
|
-
return true if /\A::([\da-f]{1,4}(:[\da-f]{1,4})*)?\Z/i
|
14
|
+
return true if /\A[\da-f]{1,4}(:[\da-f]{1,4})*\Z/i.match?(addr)
|
15
|
+
return true if /\A[\da-f]{1,4}(:[\da-f]{1,4})*::([\da-f]{1,4}(:[\da-f]{1,4})*)?\Z/i.match?(addr)
|
16
|
+
return true if /\A::([\da-f]{1,4}(:[\da-f]{1,4})*)?\Z/i.match?(addr)
|
17
17
|
# IPv6 (IPv4 compat)
|
18
|
-
return true if /\A[\da-f]{1,4}(:[\da-f]{1,4})*:/i =~ addr && v4?(
|
19
|
-
return true if /\A[\da-f]{1,4}(:[\da-f]{1,4})*::([\da-f]{1,4}(:[\da-f]{1,4})*:)?/i =~ addr && v4?(
|
20
|
-
return true if /\A::([\da-f]{1,4}(:[\da-f]{1,4})*:)?/i =~ addr && v4?(
|
18
|
+
return true if /\A[\da-f]{1,4}(:[\da-f]{1,4})*:/i =~ addr && v4?(Regexp.last_match.post_match)
|
19
|
+
return true if /\A[\da-f]{1,4}(:[\da-f]{1,4})*::([\da-f]{1,4}(:[\da-f]{1,4})*:)?/i =~ addr && v4?(Regexp.last_match.post_match)
|
20
|
+
return true if /\A::([\da-f]{1,4}(:[\da-f]{1,4})*:)?/i =~ addr && v4?(Regexp.last_match.post_match)
|
21
21
|
|
22
22
|
false
|
23
23
|
end
|
@@ -3,8 +3,8 @@ en:
|
|
3
3
|
activemodel: &activemodel
|
4
4
|
errors:
|
5
5
|
messages:
|
6
|
-
disposable_email: "is not allowed (high-bounce email)"
|
7
6
|
disposable_domain: "is not allowed (high-bounce domain)"
|
7
|
+
disposable_email: "is not allowed (high-bounce email)"
|
8
8
|
invalid_cnpj: "is not a valid CNPJ"
|
9
9
|
invalid_cpf: "is not a valid CPF"
|
10
10
|
invalid_date: "is not a valid date"
|
@@ -17,14 +17,15 @@ en:
|
|
17
17
|
invalid_ipv6_address: "is not a valid IPv6 address"
|
18
18
|
invalid_owner: "is not associated with your user"
|
19
19
|
invalid_ssh_private_key: "is not a valid private SSH key"
|
20
|
-
invalid_ssh_private_key_bits:
|
20
|
+
invalid_ssh_private_key_bits:
|
21
|
+
"needs to be at least %{required} bits; got %{value} bits instead"
|
21
22
|
invalid_ssh_private_key_type: "must be a %{value} key"
|
22
23
|
invalid_ssh_public_key: "is not a valid public SSH key"
|
24
|
+
invalid_subdomain: "is invalid"
|
23
25
|
invalid_url: "is not a valid address"
|
26
|
+
invalid_username: "is invalid"
|
24
27
|
reserved_subdomain: "%{value} is a reserved subdomain"
|
25
|
-
invalid_subdomain: "is invalid"
|
26
28
|
reserved_username: "%{value} is a reserved username"
|
27
|
-
invalid_username: "is invalid"
|
28
29
|
|
29
30
|
activerecord:
|
30
31
|
<<: *activemodel
|
@@ -3,8 +3,8 @@ pt-BR:
|
|
3
3
|
activemodel: &activemodel
|
4
4
|
errors:
|
5
5
|
messages:
|
6
|
-
disposable_email: "não é permitido (e-mail temporário)"
|
7
6
|
disposable_domain: "não é permitido (e-mail temporário)"
|
7
|
+
disposable_email: "não é permitido (e-mail temporário)"
|
8
8
|
invalid_cnpj: "não é um CNPJ válido"
|
9
9
|
invalid_cpf: "não é um CPF válido"
|
10
10
|
invalid_date: "não é uma data válida"
|
@@ -17,11 +17,15 @@ pt-BR:
|
|
17
17
|
invalid_ipv6_address: "não é um endereço IPv6 válido"
|
18
18
|
invalid_owner: "não está associado ao seu usuário"
|
19
19
|
invalid_ssh_private_key: "não é uma chave privada de SSH válida"
|
20
|
-
invalid_ssh_private_key_bits:
|
20
|
+
invalid_ssh_private_key_bits:
|
21
|
+
"precisa ter pelo menos %{required} bits; a sua chave tem %{value}
|
22
|
+
bits"
|
21
23
|
invalid_ssh_private_key_type: "precisa ser uma chave %{value}"
|
22
24
|
invalid_ssh_public_key: "não é uma chave pública de SSH válida"
|
25
|
+
invalid_subdomain: "é inválido"
|
23
26
|
invalid_url: "não parece ser uma URL válida"
|
24
|
-
|
27
|
+
invalid_username: "não é válido"
|
28
|
+
reserved_subdomain: "%{value} é um subdomínio reservado"
|
25
29
|
reserved_username: "%{value} é nome de usuário reservado"
|
26
30
|
|
27
31
|
activerecord:
|
@@ -19,8 +19,8 @@ module ActiveModel
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def validate_email_format(record, attribute, value, options)
|
22
|
-
return if value.to_s
|
23
|
-
return if value.to_s
|
22
|
+
return if Validators::EMAIL_FORMAT.match?(value.to_s)
|
23
|
+
return if Validators::MICROSOFT_EMAIL_FORMAT.match?(value.to_s)
|
24
24
|
|
25
25
|
record.errors.add(
|
26
26
|
attribute,
|
data/lib/validators/version.rb
CHANGED
@@ -13,9 +13,7 @@ class DisposableEmailTest < Minitest::Test
|
|
13
13
|
assert_includes user.errors[:email],
|
14
14
|
I18n.t("activerecord.errors.messages.disposable_domain")
|
15
15
|
end
|
16
|
-
end
|
17
16
|
|
18
|
-
DISPOSABLE_DOMAINS.each do |domain|
|
19
17
|
test "rejects disposable e-mail with subdomain (custom.#{domain})" do
|
20
18
|
User.validates_email_format_of :email
|
21
19
|
|
data/validators.gemspec
CHANGED
@@ -12,10 +12,10 @@ Gem::Specification.new do |s|
|
|
12
12
|
s.summary = "Add some nice ActiveModel/ActiveRecord validators."
|
13
13
|
s.description = s.summary
|
14
14
|
s.license = "MIT"
|
15
|
-
s.required_ruby_version = Gem::Requirement.new(">= 2.
|
15
|
+
s.required_ruby_version = Gem::Requirement.new(">= 2.5.0")
|
16
|
+
s.metadata = {"rubygems_mfa_required" => "true"}
|
16
17
|
|
17
18
|
s.files = `git ls-files`.split("\n")
|
18
|
-
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
19
19
|
s.executables = `git ls-files -- bin/*`
|
20
20
|
.split("\n")
|
21
21
|
.map {|f| File.basename(f) }
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: validators
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.4.
|
4
|
+
version: 3.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nando Vieira
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-07-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -279,7 +279,8 @@ dependencies:
|
|
279
279
|
description: Add some nice ActiveModel/ActiveRecord validators.
|
280
280
|
email:
|
281
281
|
- fnando.vieira@gmail.com
|
282
|
-
executables:
|
282
|
+
executables:
|
283
|
+
- sync-reserved-subdomains
|
283
284
|
extensions: []
|
284
285
|
extra_rdoc_files: []
|
285
286
|
files:
|
@@ -290,6 +291,7 @@ files:
|
|
290
291
|
- Gemfile
|
291
292
|
- README.md
|
292
293
|
- Rakefile
|
294
|
+
- bin/sync-reserved-subdomains
|
293
295
|
- data/reserved_subdomains.txt
|
294
296
|
- lib/validators.rb
|
295
297
|
- lib/validators/constants.rb
|
@@ -349,7 +351,8 @@ files:
|
|
349
351
|
homepage: http://rubygems.org/gems/validators
|
350
352
|
licenses:
|
351
353
|
- MIT
|
352
|
-
metadata:
|
354
|
+
metadata:
|
355
|
+
rubygems_mfa_required: 'true'
|
353
356
|
post_install_message:
|
354
357
|
rdoc_options: []
|
355
358
|
require_paths:
|
@@ -358,46 +361,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
358
361
|
requirements:
|
359
362
|
- - ">="
|
360
363
|
- !ruby/object:Gem::Version
|
361
|
-
version: 2.
|
364
|
+
version: 2.5.0
|
362
365
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
363
366
|
requirements:
|
364
367
|
- - ">="
|
365
368
|
- !ruby/object:Gem::Version
|
366
369
|
version: '0'
|
367
370
|
requirements: []
|
368
|
-
rubygems_version: 3.
|
371
|
+
rubygems_version: 3.3.7
|
369
372
|
signing_key:
|
370
373
|
specification_version: 4
|
371
374
|
summary: Add some nice ActiveModel/ActiveRecord validators.
|
372
|
-
test_files:
|
373
|
-
- test/schema.rb
|
374
|
-
- test/support/dates.rb
|
375
|
-
- test/support/emails.rb
|
376
|
-
- test/support/hostnames.rb
|
377
|
-
- test/support/ips.rb
|
378
|
-
- test/support/models.rb
|
379
|
-
- test/support/urls.rb
|
380
|
-
- test/test_helper.rb
|
381
|
-
- test/validators/disposable_email_test.rb
|
382
|
-
- test/validators/ip_test.rb
|
383
|
-
- test/validators/validates_cnpj_format_of_test.rb
|
384
|
-
- test/validators/validates_cpf_format_of_test.rb
|
385
|
-
- test/validators/validates_datetime/after_option_test.rb
|
386
|
-
- test/validators/validates_datetime/before_option_test.rb
|
387
|
-
- test/validators/validates_datetime/defaults_test.rb
|
388
|
-
- test/validators/validates_email_format_of_test.rb
|
389
|
-
- test/validators/validates_hostname_format_of/with_tld_validation_test.rb
|
390
|
-
- test/validators/validates_hostname_format_of/without_tld_validation_test.rb
|
391
|
-
- test/validators/validates_ip_address/ipv4_test.rb
|
392
|
-
- test/validators/validates_ip_address/ipv6_test.rb
|
393
|
-
- test/validators/validates_ip_address_test.rb
|
394
|
-
- test/validators/validates_ownership_of_test.rb
|
395
|
-
- test/validators/validates_ssh_private_key/bits_test.rb
|
396
|
-
- test/validators/validates_ssh_private_key/common_test.rb
|
397
|
-
- test/validators/validates_ssh_private_key/dsa_test.rb
|
398
|
-
- test/validators/validates_ssh_private_key/rsa_test.rb
|
399
|
-
- test/validators/validates_ssh_public_key_test.rb
|
400
|
-
- test/validators/validates_subdomain_test.rb
|
401
|
-
- test/validators/validates_url_format_of/with_tld_validation_test.rb
|
402
|
-
- test/validators/validates_url_format_of/without_tld_validation_test.rb
|
403
|
-
- test/validators/validates_username_test.rb
|
375
|
+
test_files: []
|