valid_email2 1.2.22 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1222657072ab10f3b061ed7b4b64ed98a35007c1
4
- data.tar.gz: 7d05b8a724f018fdb5eafaa0adf6f1d6712c6c9e
3
+ metadata.gz: ea9b203a1d3faf3c116e75dfa87249eef2771056
4
+ data.tar.gz: e8dd47bc33c9f5d1a7e8e9fa65ceee9f28b53cb5
5
5
  SHA512:
6
- metadata.gz: ec7d44d7a85cdd3d0bc72534072b017119291bf0fd992be7b92e9a1feeb3dc4d98d00659c2ff7de1bbd1354df7afc8049a91db88460a3c3df82f655087c740a6
7
- data.tar.gz: c57522e6e8a3573e7f960a983e0cf31b3460c0ebfb80678faac00b9c6872ab8ddb295685868a530ab8307fdc63c8384187ea3cf1299c6b073d71558fcbbef928
6
+ metadata.gz: 0ef8ca38e7b4727ab80125cfc5ce2cdf13b2f4de6660ec3c88fcd6bde42fcb2be6ff8545f7fa4cd74e15041c36fcd69ab84f754c03a6e20b63bb4de1c631bf4a
7
+ data.tar.gz: 044148fdb6e8095d70f2de16e197d21715a975d7142f3c33bba5dc83a1e9d1be93346eb6ed2a40db4e5c871efed0a5d9b6fa8b34d2256f133664dfbc16e59515
data/.travis.yml CHANGED
@@ -3,11 +3,11 @@ language: ruby
3
3
  sudo: false
4
4
 
5
5
  rvm:
6
- - 2.3.0
7
- - 2.2.0
8
- - 2.1.0
9
- - 2.0.0
6
+ - 2.4
7
+ - 2.3
8
+ - 2.2
10
9
 
11
10
  gemfile:
12
11
  - gemfiles/activemodel3.gemfile
13
12
  - gemfiles/activemodel4.gemfile
13
+ - gemfiles/activemodel5.gemfile
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## Version 2.0.0
2
+ Add validator namespaced under `ValidEmail2` https://github.com/lisinge/valid_email2/pull/79
3
+ Deprecate global `EmailValidator` in favor of the namespaced one.
4
+
1
5
  ## Version 1.2.22
2
6
  Added more disposable email domains (https://github.com/lisinge/valid_email2/pull/80)
3
7
 
data/README.md CHANGED
@@ -39,28 +39,28 @@ Or install it yourself as:
39
39
  If you just want to validate that it is a valid email address:
40
40
  ```ruby
41
41
  class User < ActiveRecord::Base
42
- validates :email, presence: true, email: true
42
+ validates :email, presence: true, 'valid_email_2/email': true
43
43
  end
44
44
  ```
45
45
 
46
46
  To validate that the domain has a MX record:
47
47
  ```ruby
48
- validates :email, email: { mx: true }
48
+ validates :email, 'valid_email_2/email': { mx: true }
49
49
  ```
50
50
 
51
51
  To validate that the domain is not a disposable email:
52
52
  ```ruby
53
- validates :email, email: { disposable: true }
53
+ validates :email, 'valid_email_2/email': { disposable: true }
54
54
  ```
55
55
 
56
56
  To validate that the domain is not blacklisted (under vendor/blacklist.yml):
57
57
  ```ruby
58
- validates :email, email: { blacklist: true }
58
+ validates :email, 'valid_email_2/email': { blacklist: true }
59
59
  ```
60
60
 
61
61
  All together:
62
62
  ```ruby
63
- validates :email, email: { mx: true, disposable: true }
63
+ validates :email, 'valid_email_2/email': { mx: true, disposable: true }
64
64
  ```
65
65
 
66
66
  > Note that this gem will let an empty email pass through so you will need to
@@ -89,10 +89,30 @@ end
89
89
  ## Requirements
90
90
 
91
91
  This gem requires Rails 3.2 or 4.0 or higher. It is tested against both versions using:
92
- * Ruby-2.0
93
- * Ruby-2.1
94
92
  * Ruby-2.2
95
93
  * Ruby-2.3
94
+ * Ruby-2.4
95
+
96
+ ## Upgrading to v2.0.0
97
+
98
+ In version 1.0 of valid_email2 we only defined the `email` validator.
99
+ But since other gems also define a `email` validator this can cause some unintended
100
+ behaviours and emails that shouldn't be valid are regarded valid because the
101
+ wrong validator is used by rails.
102
+
103
+ So in version 2.0 we decided to deprecate using the `email` validator directly
104
+ and instead define a `valid_email_2/email` validator to be sure that the correct
105
+ validator gets used.
106
+
107
+ So this:
108
+ ```ruby
109
+ validates :email, email: { mx: true, disposable: true }
110
+ ```
111
+
112
+ Becomes this:
113
+ ```ruby
114
+ validates :email, 'valid_email_2/email': { mx: true, disposable: true }
115
+ ```
96
116
 
97
117
  ## Contributing
98
118
 
@@ -1,5 +1,5 @@
1
- source "https://rubygems.org"
1
+ source 'https://rubygems.org'
2
2
 
3
- gem "activemodel", "~> 3.2.13"
3
+ gem 'activemodel', '~> 3.2.22'
4
4
 
5
- gemspec path: "../"
5
+ gemspec path: '../'
@@ -1,5 +1,5 @@
1
- source "https://rubygems.org"
1
+ source 'https://rubygems.org'
2
2
 
3
- gem "activemodel", "~> 4.2.0"
3
+ gem 'activemodel', '~> 4.2.9'
4
4
 
5
- gemspec path: "../"
5
+ gemspec path: '../'
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'activemodel', '~> 5.1.2'
4
+
5
+ gemspec path: '../'
@@ -0,0 +1,10 @@
1
+ # This is a shim for keeping backwards compatibility.
2
+ # See the discussion in: https://github.com/lisinge/valid_email2/pull/79
3
+ class EmailValidator < ValidEmail2::EmailValidator
4
+ def validate_each(record, attribute, value)
5
+ warn "DEPRECATION WARNING: The email validator from valid_email2 has been " +
6
+ "deprecated in favour of using the namespaced 'valid_email_2/email' validator. " +
7
+ "For more information see https://github.com/lisinge/valid_email2#upgrading-to-v200"
8
+ super
9
+ end
10
+ end
data/lib/valid_email2.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require "valid_email2/email_validator"
2
+ require "email_validator" # Backwards-compatibility shim
2
3
 
3
4
  module ValidEmail2
4
5
  def self.disposable_emails
@@ -2,33 +2,35 @@ require "valid_email2/address"
2
2
  require "active_model"
3
3
  require "active_model/validations"
4
4
 
5
- class EmailValidator < ActiveModel::EachValidator
6
- def default_options
7
- { regex: true, disposable: false, mx: false }
8
- end
5
+ module ValidEmail2
6
+ class EmailValidator < ActiveModel::EachValidator
7
+ def default_options
8
+ { regex: true, disposable: false, mx: false }
9
+ end
9
10
 
10
- def validate_each(record, attribute, value)
11
- return unless value.present?
12
- options = default_options.merge(self.options)
11
+ def validate_each(record, attribute, value)
12
+ return unless value.present?
13
+ options = default_options.merge(self.options)
13
14
 
14
- address = ValidEmail2::Address.new(value)
15
+ address = ValidEmail2::Address.new(value)
15
16
 
16
- error(record, attribute) && return unless address.valid?
17
+ error(record, attribute) && return unless address.valid?
17
18
 
18
- if options[:disposable]
19
- error(record, attribute) && return if address.disposable?
20
- end
19
+ if options[:disposable]
20
+ error(record, attribute) && return if address.disposable?
21
+ end
21
22
 
22
- if options[:blacklist]
23
- error(record, attribute) && return if address.blacklisted?
24
- end
23
+ if options[:blacklist]
24
+ error(record, attribute) && return if address.blacklisted?
25
+ end
25
26
 
26
- if options[:mx]
27
- error(record, attribute) && return unless address.valid_mx?
27
+ if options[:mx]
28
+ error(record, attribute) && return unless address.valid_mx?
29
+ end
28
30
  end
29
- end
30
31
 
31
- def error(record, attribute)
32
- record.errors.add(attribute, options[:message] || :invalid)
32
+ def error(record, attribute)
33
+ record.errors.add(attribute, options[:message] || :invalid)
34
+ end
33
35
  end
34
36
  end
@@ -1,3 +1,3 @@
1
1
  module ValidEmail2
2
- VERSION = "1.2.22"
2
+ VERSION = "2.0.0"
3
3
  end
@@ -1,19 +1,23 @@
1
1
  require "spec_helper"
2
2
 
3
3
  class TestUser < TestModel
4
- validates :email, email: true
4
+ validates :email, 'valid_email_2/email': true
5
5
  end
6
6
 
7
7
  class TestUserMX < TestModel
8
- validates :email, email: { mx: true }
8
+ validates :email, 'valid_email_2/email': { mx: true }
9
9
  end
10
10
 
11
11
  class TestUserDisallowDisposable < TestModel
12
- validates :email, email: { disposable: true }
12
+ validates :email, 'valid_email_2/email': { disposable: true }
13
13
  end
14
14
 
15
15
  class TestUserDisallowBlacklisted < TestModel
16
- validates :email, email: { blacklist: true }
16
+ validates :email, 'valid_email_2/email': { blacklist: true }
17
+ end
18
+
19
+ class BackwardsCompatibleUser < TestModel
20
+ validates :email, email: true
17
21
  end
18
22
 
19
23
  describe ValidEmail2 do
@@ -44,6 +48,14 @@ describe ValidEmail2 do
44
48
  user = TestUser.new(email: "foo@bar..com")
45
49
  expect(user.valid?).to be_falsey
46
50
  end
51
+
52
+ it "still works with the backwards-compatible syntax" do
53
+ user = BackwardsCompatibleUser.new(email: "foo@bar.com")
54
+ expect(user.valid?).to be_truthy
55
+
56
+ user = BackwardsCompatibleUser.new(email: "foo@bar")
57
+ expect(user.valid?).to be_falsey
58
+ end
47
59
  end
48
60
 
49
61
  describe "disposable emails" do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: valid_email2
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.22
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Micke Lisinge
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-08-01 00:00:00.000000000 Z
11
+ date: 2017-08-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -97,6 +97,8 @@ files:
97
97
  - Rakefile
98
98
  - gemfiles/activemodel3.gemfile
99
99
  - gemfiles/activemodel4.gemfile
100
+ - gemfiles/activemodel5.gemfile
101
+ - lib/email_validator.rb
100
102
  - lib/valid_email2.rb
101
103
  - lib/valid_email2/address.rb
102
104
  - lib/valid_email2/email_validator.rb