diff options
author | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-11-30 23:27:52 +0000 |
---|---|---|
committer | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-11-30 23:27:52 +0000 |
commit | 73fc703f7cbb2e6dfd50897d26b37fe8e76064e3 (patch) | |
tree | 0296426c8ac01331f2d33dde54fd9f1e183ea974 /lib/rubygems/source/lock.rb | |
parent | 6727297dfecddaef6b1166a7f442db2a22929c65 (diff) |
* lib/rubygems: Update to RubyGems master 66e5c39. Notable changes:
Implement gem.deps.rb (Gemfile) .lock support
Fixed `gem uninstall` for a relative directory in GEM_HOME.
* test/rubygems: ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43939 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/rubygems/source/lock.rb')
-rw-r--r-- | lib/rubygems/source/lock.rb | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/lib/rubygems/source/lock.rb b/lib/rubygems/source/lock.rb new file mode 100644 index 0000000000..d8a46d8d10 --- /dev/null +++ b/lib/rubygems/source/lock.rb @@ -0,0 +1,44 @@ +## +# A Lock source wraps an installed gem's source and sorts before other sources +# during dependency resolution. This allows RubyGems to prefer gems from +# dependency lock files. + +class Gem::Source::Lock < Gem::Source + + ## + # The wrapped Gem::Source + + attr_reader :wrapped + + ## + # Creates a new Lock source that wraps +source+ and moves it earlier in the + # sort list. + + def initialize source + @wrapped = source + end + + def <=> other # :nodoc: + case other + when Gem::Source::Lock then + @wrapped <=> other.wrapped + when Gem::Source then + 1 + else + nil + end + end + + def == other # :nodoc: + 0 == (self <=> other) + end + + ## + # Delegates to the wrapped source's fetch_spec method. + + def fetch_spec name_tuple + @wrapped.fetch_spec name_tuple + end + +end + |