From 1c80304fd567bef1610ab2086afb71e8a3b26a62 Mon Sep 17 00:00:00 2001 From: Michael Kohl Date: Thu, 6 Jan 2022 21:14:32 +0700 Subject: [PATCH] Remove htmlentities gem (#15958) --- Gemfile | 1 - Gemfile.lock | 2 -- app/models/comment.rb | 3 +-- spec/models/comment_spec.rb | 9 ++++++++- vendor/cache/htmlentities-4.3.4.gem | Bin 31744 -> 0 bytes 5 files changed, 9 insertions(+), 6 deletions(-) delete mode 100644 vendor/cache/htmlentities-4.3.4.gem diff --git a/Gemfile b/Gemfile index ba96e37c5..b3d0d0546 100644 --- a/Gemfile +++ b/Gemfile @@ -45,7 +45,6 @@ gem "hairtrigger", "~> 0.2.24" # HairTrigger lets you create and manage database gem "honeybadger", "~> 4.9" # Used for tracking application errors gem "honeycomb-beeline", "~> 2.8.0" # Monitoring and Observability gem gem "html_truncator", "~> 0.4" # Truncate an HTML string properly -gem "htmlentities", "~> 4.3", ">= 4.3.4" # A module for encoding and decoding (X)HTML entities gem "httparty", "~> 0.20" # Makes http fun! Also, makes consuming restful web services dead easy gem "httpclient", "~> 2.8.3" # Gives something like the functionality of libwww-perl (LWP) in Ruby gem "i18n-js", "~> 3.9.0" # Helps with internationalization in Rails. diff --git a/Gemfile.lock b/Gemfile.lock index edd9f8155..29fd057dd 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -360,7 +360,6 @@ GEM html_tokenizer (0.0.7) html_truncator (0.4.2) nokogiri (~> 1.5) - htmlentities (4.3.4) http-2 (0.11.0) http (4.4.1) addressable (~> 2.3) @@ -942,7 +941,6 @@ DEPENDENCIES honeybadger (~> 4.9) honeycomb-beeline (~> 2.8.0) html_truncator (~> 0.4) - htmlentities (~> 4.3, >= 4.3.4) httparty (~> 0.20) httpclient (~> 2.8.3) hypershield (~> 0.2.2) diff --git a/app/models/comment.rb b/app/models/comment.rb index 542999443..6b9e46418 100644 --- a/app/models/comment.rb +++ b/app/models/comment.rb @@ -57,7 +57,6 @@ class Comment < ApplicationRecord validates :positive_reactions_count, presence: true validates :public_reactions_count, presence: true validates :reactions_count, presence: true - validates :user_id, presence: true validates :commentable, on: :create, presence: { message: lambda do |object, _data| "#{object.commentable_type.presence || 'item'} has been deleted." @@ -140,7 +139,7 @@ class Comment < ApplicationRecord text = ActionController::Base.helpers.strip_tags(processed_html).strip truncated_text = ActionController::Base.helpers.truncate(text, length: length).gsub("'", "'").gsub("&", "&") - HTMLEntities.new.decode(truncated_text) + Nokogiri::HTML.fragment(truncated_text).text # unescapes all HTML entities end def video diff --git a/spec/models/comment_spec.rb b/spec/models/comment_spec.rb index af0424c47..49b6264ef 100644 --- a/spec/models/comment_spec.rb +++ b/spec/models/comment_spec.rb @@ -22,7 +22,6 @@ RSpec.describe Comment, type: :model do it { is_expected.to validate_presence_of(:positive_reactions_count) } it { is_expected.to validate_presence_of(:public_reactions_count) } it { is_expected.to validate_presence_of(:reactions_count) } - it { is_expected.to validate_presence_of(:user_id) } end it do @@ -329,6 +328,14 @@ RSpec.describe Comment, type: :model do comment.validate! expect(comment.title).not_to include("'") end + + # NOTE: example string taken from https://github.com/threedaymonk/htmlentities + # as this is the gem we're removing. + it "correctly decodes HTML entities" do + comment.body_markdown = "élan" + comment.validate! + expect(comment.title).to eq("élan") + end end describe "#custom_css" do diff --git a/vendor/cache/htmlentities-4.3.4.gem b/vendor/cache/htmlentities-4.3.4.gem deleted file mode 100644 index fdb45623a4306c4d3789f8888bb7881abbeadd8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31744 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 HHv|6z7DcC+