ruby-changes:74443
From: Yusuke <ko1@a...>
Date: Fri, 11 Nov 2022 07:45:45 +0900 (JST)
Subject: [ruby-changes:74443] b5f809c496 (master): [rubygems/rubygems] Load "bundler/setup" in lib/rubygems.rb
https://git.ruby-lang.org/ruby.git/commit/?id=b5f809c496 From b5f809c4961bd43b8e77cceebad44e341618998d Mon Sep 17 00:00:00 2001 From: Yusuke Endoh <mame@r...> Date: Sat, 29 Oct 2022 01:19:36 +0900 Subject: [rubygems/rubygems] Load "bundler/setup" in lib/rubygems.rb Ruby interpreter loads some special gems at startup: did_you_mean, error_highlight, and syntax_suggest. These gems are loaded before `bundler/setup` is loaded by `RUBYOPT=-rbundler/setup`. So, the versions of the gems are not controllable by Gemfile. This change will `require "bundler/setup"` in rubygems.rb (i.e., before the special gems are loaded). Now `bundle exec` sets an environment variable `BUNDLER_SETUP`, and rubygems requires the variable if defined. See also: https://bugs.ruby-lang.org/issues/19089 https://github.com/rubygems/rubygems/commit/963cb65a2d --- lib/bundler/environment_preserver.rb | 1 + lib/bundler/shared_helpers.rb | 1 + lib/rubygems.rb | 2 ++ spec/bundler/bundler/shared_helpers_spec.rb | 7 +++++++ 4 files changed, 11 insertions(+) diff --git a/lib/bundler/environment_preserver.rb b/lib/bundler/environment_preserver.rb index 0f08e049d8..70967522af 100644 --- a/lib/bundler/environment_preserver.rb +++ b/lib/bundler/environment_preserver.rb @@ -7,6 +7,7 @@ module Bundler https://github.com/ruby/ruby/blob/trunk/lib/bundler/environment_preserver.rb#L7 BUNDLE_BIN_PATH BUNDLE_GEMFILE BUNDLER_VERSION + BUNDLER_SETUP GEM_HOME GEM_PATH MANPATH diff --git a/lib/bundler/shared_helpers.rb b/lib/bundler/shared_helpers.rb index 899eb68e0a..0a6afe0e5a 100644 --- a/lib/bundler/shared_helpers.rb +++ b/lib/bundler/shared_helpers.rb @@ -284,6 +284,7 @@ module Bundler https://github.com/ruby/ruby/blob/trunk/lib/bundler/shared_helpers.rb#L284 Bundler::SharedHelpers.set_env "BUNDLE_BIN_PATH", exe_file Bundler::SharedHelpers.set_env "BUNDLE_GEMFILE", find_gemfile.to_s Bundler::SharedHelpers.set_env "BUNDLER_VERSION", Bundler::VERSION + Bundler::SharedHelpers.set_env "BUNDLER_SETUP", File.expand_path("setup", __dir__) end def set_path diff --git a/lib/rubygems.rb b/lib/rubygems.rb index 915a899f38..43b1c45288 100644 --- a/lib/rubygems.rb +++ b/lib/rubygems.rb @@ -1348,3 +1348,5 @@ Gem::Specification.load_defaults https://github.com/ruby/ruby/blob/trunk/lib/rubygems.rb#L1348 require_relative "rubygems/core_ext/kernel_gem" require_relative "rubygems/core_ext/kernel_require" require_relative "rubygems/core_ext/kernel_warn" + +require ENV["BUNDLER_SETUP"] if ENV["BUNDLER_SETUP"] diff --git a/spec/bundler/bundler/shared_helpers_spec.rb b/spec/bundler/bundler/shared_helpers_spec.rb index 68a24be31c..569d6ed9cd 100644 --- a/spec/bundler/bundler/shared_helpers_spec.rb +++ b/spec/bundler/bundler/shared_helpers_spec.rb @@ -246,6 +246,13 @@ RSpec.describe Bundler::SharedHelpers do https://github.com/ruby/ruby/blob/trunk/spec/bundler/bundler/shared_helpers_spec.rb#L246 end end + shared_examples_for "ENV['BUNDLER_SETUP'] gets set correctly" do + it "ensures bundler/setup is set in ENV['BUNDLE_SETUP']" do + subject.set_bundle_environment + expect(ENV["BUNDLER_SETUP"]).to eq("#{source_lib_dir}/bundler/setup") + end + end + shared_examples_for "ENV['RUBYLIB'] gets set correctly" do let(:ruby_lib_path) { "stubbed_ruby_lib_dir" } -- cgit v1.2.3 -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/