Skip to content
This repository was archived by the owner on Apr 14, 2021. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions lib/bundler/feature_flag.rb
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ def self.settings_method(name, key, &default)
settings_flag(:only_update_to_newer_versions) { bundler_2_mode? }
settings_flag(:plugins) { @bundler_version >= Gem::Version.new("1.14") }
settings_flag(:prefer_gems_rb) { bundler_2_mode? }
settings_flag(:setup_makes_kernel_gem_public) { !bundler_2_mode? }
settings_flag(:skip_default_git_sources) { bundler_2_mode? }
settings_flag(:specific_platform) { bundler_2_mode? }
settings_flag(:suppress_install_using_messages) { bundler_2_mode? }
Expand Down
5 changes: 2 additions & 3 deletions lib/bundler/rubygems_integration.rb
Original file line number Diff line number Diff line change
Expand Up @@ -393,9 +393,8 @@ def replace_gem(specs, specs_by_name)
raise e
end

# TODO: delete this in 2.0, it's a backwards compatibility shim
# see https://github.com/bundler/bundler/issues/5102
kernel_class.send(:public, :gem)
# backwards compatibility shim, see https://github.com/bundler/bundler/issues/5102
kernel_class.send(:public, :gem) if Bundler.feature_flag.setup_makes_kernel_gem_public?
end
end

Expand Down
1 change: 1 addition & 0 deletions lib/bundler/settings.rb
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ class Settings
only_update_to_newer_versions
plugins
prefer_gems_rb
setup_makes_kernel_gem_public
silence_root_warning
skip_default_git_sources
specific_platform
Expand Down
36 changes: 35 additions & 1 deletion spec/runtime/setup_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -1338,17 +1338,51 @@ def lock_with(ruby_version = nil)
end

describe "after setup" do
it "allows calling #gem on random objects" do
it "allows calling #gem on random objects", :bundler => "< 2" do
install_gemfile <<-G
source "file:#{gem_repo1}"
gem "rack"
G

ruby! <<-RUBY
require "bundler/setup"
Object.new.gem "rack"
puts Gem.loaded_specs["rack"].full_name
RUBY

expect(out).to eq("rack-1.0.0")
end

it "keeps Kernel#gem private", :bundler => "2" do
install_gemfile! <<-G
source "file:#{gem_repo1}"
gem "rack"
G

ruby <<-RUBY
require "bundler/setup"
Object.new.gem "rack"
puts "FAIL"
RUBY

expect(last_command.stdboth).not_to include "FAIL"
expect(last_command.stderr).to include "private method `gem'"
end

it "keeps Kernel#require private" do
install_gemfile! <<-G
source "file:#{gem_repo1}"
gem "rack"
G

ruby <<-RUBY
require "bundler/setup"
Object.new.require "rack"
puts "FAIL"
RUBY

expect(last_command.stdboth).not_to include "FAIL"
expect(last_command.stderr).to include "private method `require'"
end
end
end