From: "luislavena (Luis Lavena)" Date: 2012-12-02T16:41:42+09:00 Subject: [ruby-core:50476] [ruby-trunk - Bug #7496][Assigned] incorrect base_dir for default gemspecs Issue #7496 has been updated by luislavena (Luis Lavena). Status changed from Open to Assigned Assignee set to drbrain (Eric Hodel) ---------------------------------------- Bug #7496: incorrect base_dir for default gemspecs https://bugs.ruby-lang.org/issues/7496#change-34309 Author: bitsweat (Jeremy Kemper) Status: Assigned Priority: Normal Assignee: drbrain (Eric Hodel) Category: lib Target version: 2.0.0 ruby -v: ruby 2.0.0dev (2012-12-01 trunk 38126) [x86_64-darwin12.2.0] 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 -- http://bugs.ruby-lang.org/