diff options
author | Terence Lee <hone02@gmail.com> | 2011-08-08 17:26:53 -0500 |
---|---|---|
committer | Terence Lee <hone02@gmail.com> | 2011-08-08 17:26:53 -0500 |
commit | 401982e466d7f14ac93ff66378e289fee05dd0a4 (patch) | |
tree | fd195df15c9d8679c0d16ade7d231d0ef719ee5b /lib/bundler | |
parent | a20a8f7d4cfb14eaf602f24c42dea926c7560ce0 (diff) | |
parent | 66e930ca6e0f7ea8bc2b766c5c416e88b2977662 (diff) | |
download | bundler-401982e466d7f14ac93ff66378e289fee05dd0a4.tar.gz |
Merge branch '1-0-stable'
Conflicts:
CHANGELOG.md
lib/bundler/version.rb
Diffstat (limited to 'lib/bundler')
-rw-r--r-- | lib/bundler/rubygems_ext.rb | 14 | ||||
-rw-r--r-- | lib/bundler/rubygems_integration.rb | 24 |
2 files changed, 22 insertions, 16 deletions
diff --git a/lib/bundler/rubygems_ext.rb b/lib/bundler/rubygems_ext.rb index 27e9f2abcf..0df7baaffd 100644 --- a/lib/bundler/rubygems_ext.rb +++ b/lib/bundler/rubygems_ext.rb @@ -142,20 +142,6 @@ module Gem alias eql? == end - # fix bug in Rubygems < 1.4 by forcing calculation of @segments - if Gem::Version.new(Gem::VERSION) < Gem::Version.new("1.4.0") - class Version - def segments # :nodoc: - unless @segments_generated - @segments = @version.scan(/[0-9]+|[a-z]+/i).map do |s| - /^\\\\d+$/ =~ s ? s.to_i : s - end - end - @segments_generated = true - @segments - end - end - end end module Bundler diff --git a/lib/bundler/rubygems_integration.rb b/lib/bundler/rubygems_integration.rb index 6460fab5a5..1c0c55050a 100644 --- a/lib/bundler/rubygems_integration.rb +++ b/lib/bundler/rubygems_integration.rb @@ -250,7 +250,17 @@ module Bundler Gem.clear_paths end - # Rubygems versions 1.3.6 through 1.6.2 + # This backports the correct segment generation code from Rubygems 1.4+ + # by monkeypatching it into the method in Rubygems 1.3.6 and 1.3.7. + def backport_segment_generation + Gem::Version.send(:define_method, :segments) do + @segments ||= @version.scan(/[0-9]+|[a-z]+/i).map do |s| + /^\d+$/ =~ s ? s.to_i : s + end + end + end + + # Rubygems 1.4 through 1.6 class Legacy < RubygemsIntegration def stub_rubygems(specs) stub_source_index137(specs) @@ -265,6 +275,14 @@ module Bundler end end + # Rubygems versions 1.3.6 and 1.3.7 + class Ancient < Legacy + def initialize + super + backport_segment_generation + end + end + # Rubygems 1.7 class Transitional < Legacy def stub_rubygems(specs) @@ -313,8 +331,10 @@ module Bundler @rubygems = RubygemsIntegration::AlmostModern.new elsif Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.7.0') @rubygems = RubygemsIntegration::Transitional.new - else # Rubygems 1.3.6 through 1.6.2 + elsif Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.4.0') @rubygems = RubygemsIntegration::Legacy.new + else # Rubygems 1.3.6 and 1.3.7 + @rubygems = RubygemsIntegration::Ancient.new end class << self |