Upgrade mail gem to remove dependency on mime-types.

* Use a EmailValidator.email_regexp for `Email.is_valid?`
  check as we're seeing an increase in allocation when
  parsing email addresses wih `Mail::Address`.
This commit is contained in:
Guo Xiang Tan 2018-03-14 14:36:23 +08:00
parent 51657d3426
commit 58b8ea4f41
3 changed files with 3 additions and 17 deletions

View File

@ -25,7 +25,6 @@ else
end end
gem 'mail' gem 'mail'
gem 'mime-types', require: 'mime/types/columnar'
gem 'mini_mime' gem 'mini_mime'
gem 'mini_suffix' gem 'mini_suffix'

View File

@ -163,16 +163,13 @@ GEM
crass (~> 1.0.2) crass (~> 1.0.2)
nokogiri (>= 1.5.9) nokogiri (>= 1.5.9)
lru_redux (1.1.0) lru_redux (1.1.0)
mail (2.6.6) mail (2.7.0)
mime-types (>= 1.16, < 4) mini_mime (>= 0.1.1)
memory_profiler (0.9.10) memory_profiler (0.9.10)
message_bus (2.1.2) message_bus (2.1.2)
rack (>= 1.1.3) rack (>= 1.1.3)
metaclass (0.0.4) metaclass (0.0.4)
method_source (0.8.2) method_source (0.8.2)
mime-types (3.1)
mime-types-data (~> 3.2015)
mime-types-data (3.2016.0521)
mini_mime (0.1.3) mini_mime (0.1.3)
mini_portile2 (2.3.0) mini_portile2 (2.3.0)
mini_racer (0.1.15) mini_racer (0.1.15)
@ -445,7 +442,6 @@ DEPENDENCIES
mail mail
memory_profiler memory_profiler
message_bus message_bus
mime-types
mini_mime mini_mime
mini_racer mini_racer
mini_suffix mini_suffix

View File

@ -8,16 +8,7 @@ module Email
def self.is_valid?(email) def self.is_valid?(email)
return false unless String === email return false unless String === email
!!(EmailValidator.email_regex =~ email)
parsed = Mail::Address.new(email)
# Don't allow for a TLD by itself list (sam@localhost)
# The Grammar is: (local_part "@" domain) / local_part ... need to discard latter
parsed.address == email &&
parsed.local != parsed.address &&
parsed&.domain.split(".").size > 1
rescue Mail::Field::ParseError
false
end end
def self.downcase(email) def self.downcase(email)