diff --git a/app/models/rubygem.rb b/app/models/rubygem.rb index 9388d0fe95e..21ddee42a6e 100644 --- a/app/models/rubygem.rb +++ b/app/models/rubygem.rb @@ -18,6 +18,7 @@ class Rubygem < ApplicationRecord uniqueness: { case_sensitive: false }, if: :needs_name_validation? validate :blacklist_names_exclusion + validate :protected_gem_typo_protection after_create :update_unresolved before_destroy :mark_unresolved @@ -308,6 +309,12 @@ def blacklist_names_exclusion errors.add :name, "'#{name}' is a reserved gem name." end + def protected_gem_typo_protection + gem_typo = GemTypo.new(name) + return unless gem_typo.protected_typo? + errors.add :name, "'#{name}' is too close to a typo-protected gem." + end + def update_unresolved Dependency.where(unresolved_name: name).find_each do |dependency| dependency.update_resolved(self)