diff --git a/lib/bundler/installer/standalone.rb b/lib/bundler/installer/standalone.rb index e8494b4bcd..2aba648e77 100644 --- a/lib/bundler/installer/standalone.rb +++ b/lib/bundler/installer/standalone.rb @@ -29,7 +29,9 @@ module Bundler @specs.map do |spec| next if spec.name == "bundler" Array(spec.require_paths).map do |path| - gem_path(path, spec).sub(version_dir, '#{RUBY_ENGINE}/#{RbConfig::CONFIG["ruby_version"]}') + gem_path(path, spec). + sub(version_dir, '#{RUBY_ENGINE}/#{RbConfig::CONFIG["ruby_version"]}'). + sub(extensions_dir, 'extensions/\k/#{RbConfig::CONFIG["ruby_version"]}') # This is a static string intentionally. It's interpolated at a later time. end end.flatten.compact @@ -39,6 +41,10 @@ module Bundler "#{RUBY_ENGINE}/#{RbConfig::CONFIG["ruby_version"]}" end + def extensions_dir + %r{extensions/(?[^/]+)/#{RbConfig::CONFIG["ruby_version"]}} + end + def bundler_path Bundler.root.join(Bundler.settings[:path], "bundler") end diff --git a/spec/bundler/install/gems/standalone_spec.rb b/spec/bundler/install/gems/standalone_spec.rb index 0bbd829148..f856d6b51e 100644 --- a/spec/bundler/install/gems/standalone_spec.rb +++ b/spec/bundler/install/gems/standalone_spec.rb @@ -202,8 +202,9 @@ RSpec.shared_examples "bundle install --standalone" do it "generates a bundle/bundler/setup.rb with the proper paths" do expected_path = bundled_app("bundle/bundler/setup.rb") extension_line = File.read(expected_path).each_line.find {|line| line.include? "/extensions/" }.strip + platform = Gem::Platform.local expect(extension_line).to start_with '$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{RbConfig::CONFIG["ruby_version"]}/extensions/' - expect(extension_line).to end_with '/very_simple_binary-1.0")' + expect(extension_line).to end_with platform.to_s + '/#{RbConfig::CONFIG["ruby_version"]}/very_simple_binary-1.0")' end end