mirror of
https://github.com/ruby/ruby.git
synced 2026-01-29 05:24:23 +00:00
If one upgrades the default copy of Bundler through `gem update --system`, and then reinstalls Ruby without removing the previous copy. Then the new installation will have a correct default bundler gemspec, but a higher copy installed in site_dir. This causes a crash when running Bundler and prints the bug report template. This could probably be fixed in Ruby install script, by removing any previous Bundler default copies, but if the problem is already there, I think it's best to print a proper user error. https://github.com/rubygems/rubygems/commit/ada6de765d
65 lines
1.7 KiB
Ruby
65 lines
1.7 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module Bundler
|
|
class Source
|
|
class Metadata < Source
|
|
def specs
|
|
@specs ||= Index.build do |idx|
|
|
idx << Gem::Specification.new("Ruby\0", Bundler::RubyVersion.system.gem_version)
|
|
idx << Gem::Specification.new("RubyGems\0", Gem::VERSION) do |s|
|
|
s.required_rubygems_version = Gem::Requirement.default
|
|
end
|
|
|
|
if local_spec = Gem.loaded_specs["bundler"]
|
|
raise CorruptBundlerInstallError.new(local_spec) if local_spec.version.to_s != Bundler::VERSION
|
|
|
|
idx << local_spec
|
|
else
|
|
idx << Gem::Specification.new do |s|
|
|
s.name = "bundler"
|
|
s.version = VERSION
|
|
s.license = "MIT"
|
|
s.platform = Gem::Platform::RUBY
|
|
s.authors = ["bundler team"]
|
|
s.bindir = "exe"
|
|
s.homepage = "https://bundler.io"
|
|
s.summary = "The best way to manage your application's dependencies"
|
|
s.executables = %w[bundle]
|
|
# can't point to the actual gemspec or else the require paths will be wrong
|
|
s.loaded_from = __dir__
|
|
end
|
|
end
|
|
|
|
idx.each {|s| s.source = self }
|
|
end
|
|
end
|
|
|
|
def options
|
|
{}
|
|
end
|
|
|
|
def install(spec, _opts = {})
|
|
print_using_message "Using #{version_message(spec)}"
|
|
nil
|
|
end
|
|
|
|
def to_s
|
|
"the local ruby installation"
|
|
end
|
|
|
|
def ==(other)
|
|
self.class == other.class
|
|
end
|
|
alias_method :eql?, :==
|
|
|
|
def hash
|
|
self.class.hash
|
|
end
|
|
|
|
def version_message(spec)
|
|
"#{spec.name} #{spec.version}"
|
|
end
|
|
end
|
|
end
|
|
end
|