diff options
author | hsbt <hsbt@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-11-25 01:20:00 +0000 |
---|---|---|
committer | hsbt <hsbt@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-11-25 01:20:00 +0000 |
commit | a94332819463589fe4537cc62beb41a0ee354cf3 (patch) | |
tree | 6cc30414963f413c171180b91d9a8490fa212f5d /bin/bundle_ruby | |
parent | 608b9c29133e6d4c0822f1500e45c2a8073891be (diff) | |
download | ruby-a94332819463589fe4537cc62beb41a0ee354cf3.tar.gz |
Use stub executables generated by RubyGems istead of original executables.
It resolved the conflict issues when invoking `gem i rdoc` and the binstub
issues with Bundler and Rails.
[Bug #5060][ruby-core:38257][Fix GH-2023]
* https://github.com/rubygems/rubygems/pull/2338
* https://github.com/heroku/heroku-buildpack-ruby/issues/829
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65963 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'bin/bundle_ruby')
-rwxr-xr-x | bin/bundle_ruby | 77 |
1 files changed, 22 insertions, 55 deletions
diff --git a/bin/bundle_ruby b/bin/bundle_ruby index 2209c6195f..be7fb5afe4 100755 --- a/bin/bundle_ruby +++ b/bin/bundle_ruby @@ -1,60 +1,27 @@ #!/usr/bin/env ruby -# frozen_string_literal: true - -require "bundler/shared_helpers" - -Bundler::SharedHelpers.major_deprecation(3, "the bundle_ruby executable has been removed in favor of `bundle platform --ruby`") - -Signal.trap("INT") { exit 1 } - -require "bundler/errors" -require "bundler/ruby_version" -require "bundler/ruby_dsl" - -module Bundler - class Dsl - include RubyDsl - - attr_accessor :ruby_version - - def initialize - @ruby_version = nil - end - - def eval_gemfile(gemfile, contents = nil) - contents ||= File.open(gemfile, "rb", &:read) - instance_eval(contents, gemfile.to_s, 1) - rescue SyntaxError => e - bt = e.message.split("\n")[1..-1] - raise GemfileError, ["Gemfile syntax error:", *bt].join("\n") - rescue ScriptError, RegexpError, NameError, ArgumentError => e - e.backtrace[0] = "#{e.backtrace[0]}: #{e.message} (#{e.class})" - STDERR.puts e.backtrace.join("\n ") - raise GemfileError, "There was an error in your Gemfile," \ - " and Bundler cannot continue." - end - - def source(source, options = {}) - end - - def gem(name, *args) - end - - def group(*args) - end +# +# This file was generated by RubyGems. +# +# The application 'bundler' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require 'rubygems' + +version = ">= 0.a" + +if ARGV.first + str = ARGV.first + str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding + if str =~ /\A_(.*)_\z/ and Gem::Version.correct?($1) then + version = $1 + ARGV.shift end end -dsl = Bundler::Dsl.new -begin - dsl.eval_gemfile(Bundler::SharedHelpers.default_gemfile) - ruby_version = dsl.ruby_version - if ruby_version - puts ruby_version - else - puts "No ruby version specified" - end -rescue Bundler::GemfileError => e - puts e.message - exit(-1) +if Gem.respond_to?(:activate_bin_path) +load Gem.activate_bin_path('bundler', 'bundle_ruby', version) +else +gem "bundler", version +load Gem.bin_path("bundler", "bundle_ruby", version) end |