Project

General

Profile

Bug #7496

incorrect base_dir for default gemspecs

Added by bitsweat (Jeremy Daer) almost 8 years ago. Updated almost 8 years ago.

Status:
Closed
Priority:
Normal
Target version:
ruby -v:
ruby 2.0.0dev (2012-12-01 trunk 38126) [x86_64-darwin12.2.0]
Backport:
[ruby-core:50475]

Description

gemspecs for default gems have incorrect path since they're installed in a subdirectory of the normal specifications path. The base_dir is dirname(dirname(loaded_from)), so using an additional subdir results in a base_dir that's "off by one." Example:

Find the gemspec for the default rake gem:

spec = Gem::Specification.find_by_name('rake')
=> #
spec.default_gem?
=> true
spec.loaded_from
=> "/Users/jeremy/.rbenv/versions/2.0.0-preview2/lib/ruby/gems/2.0.0/specifications/default/rake-0.9.5.gemspec"

The spec.base_dir should be "/Users/jeremy/.rbenv/versions/2.0.0-preview2/lib/ruby/gems/2.0.0"

spec.base_dir
=> "/Users/jeremy/.rbenv/versions/2.0.0-preview2/lib/ruby/gems/2.0.0/specifications"

This means Gem.bin_path lookups in bin/rake, etc result in incorrect executable paths:

spec.bin_file('rake')
=> "/Users/jeremy/.rbenv/versions/2.0.0-preview2/lib/ruby/gems/2.0.0/specifications/gems/rake-0.9.5/bin/rake"
File.file? _
=> false

Also available in: Atom PDF