Project

General

Profile

Actions

Bug #2176

closed

[rubygems] $LOAD_PATH includes bin directory

Added by nobu (Nobuyoshi Nakada) about 15 years ago. Updated over 13 years ago.

Status:
Closed
Target version:
ruby -v:
1.9.2
Backport:
[ruby-core:25936]

Description

=begin
Hi,

What is the reason that bin is needed in $LOAD_PATH? AFAIK,
bin directory is for executable files, but not for libraries.


Index: gem_prelude.rb

--- gem_prelude.rb (revision 25229)
+++ gem_prelude.rb (working copy)
@@ -256,12 +256,11 @@ if defined?(Gem) then
GemPaths.each_value do |path|
if File.exist?(file = File.join(path, ".require_paths")) then

  •        paths = File.read(file).split.map do |require_path|
    
  •        paths = File.readlines(file).map! do |require_path|
    
  •          require_path.chomp!
             File.join path, require_path
           end
    
  •        require_paths.concat paths
         else
    
  •        require_paths << file if File.exist?(file = File.join(path, "bin"))
    
  •        require_paths << file if File.exist?(file = File.join(path, "lib"))
    
  •        require_paths << (File.directory?(file = File.join(path, "lib")) ? file : path)
         end
       end
    

Index: lib/rubygems.rb

--- lib/rubygems.rb (revision 25229)
+++ lib/rubygems.rb (working copy)
@@ -294,7 +294,4 @@ module Gem
end

  • bin directory must come before library directories

  • spec.require_paths.unshift spec.bindir if spec.bindir
  • require_paths = spec.require_paths.map do |path|
    File.join spec.full_gem_path, path
    Index: lib/rubygems/require_paths_builder.rb
    ===================================================================
    --- lib/rubygems/require_paths_builder.rb (revision 25229)
    +++ lib/rubygems/require_paths_builder.rb (working copy)
    @@ -3,13 +3,10 @@ require 'rubygems'
    module Gem::RequirePathsBuilder
    def write_require_paths_file_if_needed(spec = @spec, gem_home = @gem_home)
  • return if spec.require_paths == ["lib"] &&
  •          (spec.bindir.nil? || spec.bindir == "bin")
    
  • require_paths = spec.require_paths
  • return if require_paths == ["lib"]
    file_name = File.join(gem_home, 'gems', "#{@spec.full_name}", ".require_paths")
    file_name.untaint
  • File.open(file_name, "w") do |file|
  •  spec.require_paths.each do |path|
    
  •    file.puts path
    
  •  end
    
  •  file.puts spec.bindir if spec.bindir
    
  • File.open(file_name, "wb") do |file|
  •  file.puts require_paths
    
    end
    end

--
Nobu Nakada
=end

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0