Don't make rexml an dependency of activesupport

rexml is only used in the xml_mini backend and it should be the users
choice if they want to use that feature or not. If they do we will warn
them that installing rexml is needed like we do with all backends.
This commit is contained in:
Rafael Mendonça França 2020-09-24 22:41:04 +00:00
parent 357013d366
commit f624ed09ab
No known key found for this signature in database
GPG Key ID: FC23B6D0F1EEE948
4 changed files with 11 additions and 3 deletions

View File

@ -48,6 +48,7 @@ gem "dalli"
gem "listen", "~> 3.2", require: false, github: "guard/listen" gem "listen", "~> 3.2", require: false, github: "guard/listen"
gem "libxml-ruby", platforms: :ruby gem "libxml-ruby", platforms: :ruby
gem "connection_pool", require: false gem "connection_pool", require: false
gem "rexml", require: false
# for railties app_generator_test # for railties app_generator_test
gem "bootsnap", ">= 1.4.4", require: false gem "bootsnap", ">= 1.4.4", require: false

View File

@ -95,7 +95,6 @@ PATH
concurrent-ruby (~> 1.0, >= 1.0.2) concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 1.6, < 2) i18n (>= 1.6, < 2)
minitest (>= 5.1) minitest (>= 5.1)
rexml
tzinfo (~> 2.0) tzinfo (~> 2.0)
zeitwerk (~> 2.3) zeitwerk (~> 2.3)
rails (6.1.0.alpha) rails (6.1.0.alpha)
@ -607,6 +606,7 @@ DEPENDENCIES
redis-namespace! redis-namespace!
resque resque
resque-scheduler resque-scheduler
rexml
rouge rouge
rubocop (>= 0.90) rubocop (>= 0.90)
rubocop-packaging rubocop-packaging

View File

@ -38,5 +38,4 @@ Gem::Specification.new do |s|
s.add_dependency "concurrent-ruby", "~> 1.0", ">= 1.0.2" s.add_dependency "concurrent-ruby", "~> 1.0", ">= 1.0.2"
s.add_dependency "zeitwerk", "~> 2.3" s.add_dependency "zeitwerk", "~> 2.3"
s.add_dependency "minitest", ">= 5.1" s.add_dependency "minitest", ">= 5.1"
s.add_dependency "rexml"
end end

View File

@ -25,7 +25,7 @@ module ActiveSupport
if data.eof? if data.eof?
{} {}
else else
silence_warnings { require "rexml/document" } unless defined?(REXML::Document) require_rexml unless defined?(REXML::Document)
doc = REXML::Document.new(data) doc = REXML::Document.new(data)
if doc.root if doc.root
@ -38,6 +38,14 @@ module ActiveSupport
end end
private private
def require_rexml
silence_warnings { require "rexml/document" }
rescue LoadError => e
$stderr.puts "You don't have rexml installed in your application. Please add it to your Gemfile and run bundle install"
raise e
end
# Convert an XML element and merge into the hash # Convert an XML element and merge into the hash
# #
# hash:: # hash::