diff options
Diffstat (limited to 'ext/digest/lib')
-rw-r--r-- | ext/digest/lib/digest.rb | 27 | ||||
-rw-r--r-- | ext/digest/lib/digest/version.rb | 5 |
2 files changed, 18 insertions, 14 deletions
diff --git a/ext/digest/lib/digest.rb b/ext/digest/lib/digest.rb index 7cb0d2c318..e995adb450 100644 --- a/ext/digest/lib/digest.rb +++ b/ext/digest/lib/digest.rb @@ -1,24 +1,23 @@ # frozen_string_literal: false -# The gem and bundle commands (except for bundle exec) first load -# digest via openssl and then load gems, so if this is installed via -# gem, we are overwriting the default version of digest. Beware not -# to break it or cause redefinition warnings. -# -# When we introduce incompatible changes and overwriting is not an -# option, and given that the default version does not have security -# defects, we may just give up and let those commands just use the -# default version of digest. -# -# return if defined?(Digest) && caller_locations.any? { |l| -# %r{/(rubygems/gem_runner|bundler/cli)\.rb}.match?(l.path) -# } +if defined?(Digest) && + /\A(?:2\.|3\.0\.[0-2]\z)/.match?(RUBY_VERSION) && + caller_locations.any? { |l| + %r{/(rubygems/gem_runner|bundler/cli)\.rb}.match?(l.path) + } + # Before Ruby 3.0.3/3.1.0, the gem and bundle commands used to load + # the digest library before loading additionally installed gems, so + # you will get constant redefinition warnings and unexpected + # implementation overwriting if we proceed here. Avoid that. + return +end +require 'digest/version' require 'digest/loader' module Digest # A mutex for Digest(). - REQUIRE_MUTEX ||= Thread::Mutex.new + REQUIRE_MUTEX = Thread::Mutex.new def self.const_missing(name) # :nodoc: case name diff --git a/ext/digest/lib/digest/version.rb b/ext/digest/lib/digest/version.rb new file mode 100644 index 0000000000..42fd7acf6e --- /dev/null +++ b/ext/digest/lib/digest/version.rb @@ -0,0 +1,5 @@ +# frozen_string_literal: true + +module Digest + VERSION = "3.1.1" +end |