Bug #7496
closedincorrect base_dir for default gemspecs
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')
=> #<Gem::Specification:0x3fc3fa4dd570 rake-0.9.5>
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
Updated by luislavena (Luis Lavena) almost 12 years ago
- Status changed from Open to Assigned
- Assignee set to drbrain (Eric Hodel)
Updated by drbrain (Eric Hodel) almost 12 years ago
- Status changed from Assigned to Closed
- % Done changed from 0 to 100
This issue was solved with changeset r38229.
Jeremy, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.
-
lib/rubygems/package.rb: Set rubygems_version before validation.
Fixes issue with bundler. -
test/rubygems/test_gem_package.rb: Test for above.
-
lib/rubygems/remote_fetcher.rb: Only update the cache when we have
permission. [ruby-trunk - Bug #7509] -
lib/rubygems/source.rb (class Gem): ditto
-
test/rubygems/test_gem_remote_fetcher.rb: Test for above.
-
lib/rubygems/test_utilities.rb: ditto
-
lib/rubygems/specification.rb: Derive base_dir properly for default
gems. [ruby-trunk - Bug #7496] -
test/rubygems/test_gem_specification.rb: Test for above.
-
lib/rubygems.rb: Untaint Dir.pwd when searching for gemdeps files
for operation under $SAFE=1
Updated by bitsweat (Jeremy Daer) almost 12 years ago
Thank you!