diff options
author | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-12-08 01:22:39 +0000 |
---|---|---|
committer | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-12-08 01:22:39 +0000 |
commit | 7ed9b794b4e3f3f9874f2ce19401461596d8a2c0 (patch) | |
tree | 5caaf13685de34b09d2949709a77b4c650b62741 /lib/rubygems/resolver/lock_specification.rb | |
parent | 866b438c21ff05dfeabba8bc9aa9850e415be607 (diff) | |
download | ruby-7ed9b794b4e3f3f9874f2ce19401461596d8a2c0.tar.gz |
* lib/rubygems: Update to RubyGems master 14749ce. This fixes bugs
handling of gem dependencies lockfiles (Gemfile.lock).
* test/rubygems: ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44054 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/rubygems/resolver/lock_specification.rb')
-rw-r--r-- | lib/rubygems/resolver/lock_specification.rb | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/lib/rubygems/resolver/lock_specification.rb b/lib/rubygems/resolver/lock_specification.rb new file mode 100644 index 0000000000..4bc21b9402 --- /dev/null +++ b/lib/rubygems/resolver/lock_specification.rb @@ -0,0 +1,58 @@ +## +# The LockSpecification comes from a lockfile (Gem::RequestSet::Lockfile). +# +# A LockSpecification's dependency information is pre-filled from the +# lockfile. + +class Gem::Resolver::LockSpecification < Gem::Resolver::Specification + + def initialize set, name, version, source, platform + super() + + @name = name + @platform = platform + @set = set + @source = source + @version = version + + @dependencies = [] + @spec = nil + end + + ## + # This is a null install as a locked specification is considered installed. + # +options+ are ignored. + + def install options + destination = options[:install_dir] || Gem.dir + + if File.exist? File.join(destination, 'specifications', spec.spec_name) then + yield nil + return + end + + super + end + + ## + # Adds +dependency+ from the lockfile to this specification + + def add_dependency dependency # :nodoc: + @dependencies << dependency + end + + ## + # A specification constructed from the lockfile is returned + + def spec + @spec ||= Gem::Specification.new do |s| + s.name = @name + s.version = @version + s.platform = @platform + + s.dependencies.concat @dependencies + end + end + +end + |