diff --git a/lib/bundler/rubygems_integration.rb b/lib/bundler/rubygems_integration.rb index 9df0897ca28..3d062c329ea 100644 --- a/lib/bundler/rubygems_integration.rb +++ b/lib/bundler/rubygems_integration.rb @@ -317,6 +317,10 @@ def stubs_provide_full_functionality? provides?(">= 2.5.2") end + def has_bundler_version_finder? + provides?(">= 2.7.0") + end + def replace_gem(specs, specs_by_name) reverse_rubygems_kernel_mixin diff --git a/lib/bundler/version.rb b/lib/bundler/version.rb index cfd63009501..9a6e71f59c9 100644 --- a/lib/bundler/version.rb +++ b/lib/bundler/version.rb @@ -1,23 +1,29 @@ # frozen_string_literal: false +require_relative "rubygems_integration" + module Bundler - # We're doing this because we might write tests that deal - # with other versions of bundler and we are unsure how to - # handle this better. - VERSION = "2.1.0.pre.1".freeze unless defined?(::Bundler::VERSION) + if Bundler.rubygems.has_bundler_version_finder? + VERSION = "2.1.0.pre.1".freeze + else + # We're doing this because we might write tests that deal + # with other versions of bundler and we are unsure how to + # handle this better. + VERSION = "2.1.0.pre.1".freeze unless defined?(::Bundler::VERSION) - def self.overwrite_loaded_gem_version - begin - require "rubygems" - rescue LoadError - return + def self.overwrite_loaded_gem_version + begin + require "rubygems" + rescue LoadError + return + end + return unless bundler_spec = Gem.loaded_specs["bundler"] + return if bundler_spec.version == VERSION + bundler_spec.version = Bundler::VERSION end - return unless bundler_spec = Gem.loaded_specs["bundler"] - return if bundler_spec.version == VERSION - bundler_spec.version = Bundler::VERSION + private_class_method :overwrite_loaded_gem_version + overwrite_loaded_gem_version end - private_class_method :overwrite_loaded_gem_version - overwrite_loaded_gem_version def self.bundler_major_version @bundler_major_version ||= VERSION.split(".").first.to_i