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
=begin
On Sun, Oct 4, 2009 at 11:47 PM, Nobuyoshi Nakada nobu@ruby-lang.org wrote:
Hi,
What is the reason that bin is needed in $LOAD_PATH? AFAIK,
bin directory is for executable files, but not for libraries.
I believe that it's required because of the way the commands installed
with a gem typically bootstrap via a short ruby program which requires
rubygems and then loads the real command from the bin directory in the
required version of the gem.
I wouldn't be at all surprised if removing the gems bin directory from
the load path would break most if not all such gem installed commands.
On Sun, Oct 4, 2009 at 11:47 PM, Nobuyoshi Nakada nobu@ruby-lang.org wrote:
Hi,
What is the reason that bin is needed in $LOAD_PATH? AFAIK,
bin directory is for executable files, but not for libraries.
I believe that it's required because of the way the commands installed
with a gem typically bootstrap via a short ruby program which requires
rubygems and then loads the real command from the bin directory in the
required version of the gem.
I wouldn't be at all surprised if removing the gems bin directory from
the load path would break most if not all such gem installed commands.
In latest RubyGems (1.3.5) this process of loading gem binaries has
been changed to use Gem::bin_path
Of course, gems installed with a previous version of RubyGems require
re-generation of stub scripts, which simply can be achieved with "gem
pristine --all"
--
Luis Lavena
AREA 17
Perfection in design is achieved not when there is nothing more to add,
but rather when there is nothing more to take away.
Antoine de Saint-Exupéry
At Mon, 5 Oct 2009 21:40:08 +0900,
Luis Lavena wrote in [ruby-core:25941]:
In latest RubyGems (1.3.5) this process of loading gem binaries has
been changed to use Gem::bin_path
Of course, gems installed with a previous version of RubyGems require
re-generation of stub scripts, which simply can be achieved with "gem
pristine --all"
Then, at least, adding bindir to require_paths in
require_paths_builder.rb isn't needed anymore?
=begin
On Wed, Oct 7, 2009 at 9:14 AM, Nobuyoshi Nakada nobu@ruby-lang.org wrote:
Hi,
At Mon, 5 Oct 2009 21:40:08 +0900,
Luis Lavena wrote in [ruby-core:25941]:
In latest RubyGems (1.3.5) this process of loading gem binaries has
been changed to use Gem::bin_path
Of course, gems installed with a previous version of RubyGems require
re-generation of stub scripts, which simply can be achieved with "gem
pristine --all"
Then, at least, adding bindir to require_paths in
require_paths_builder.rb isn't needed anymore?
It shouldn't, but perhaps Eric Hodel can comment on this better.
Eric: does the usage of bin_path solve the .require_paths needs to add
'bin' folder?
Luis Lavena
AREA 17
Perfection in design is achieved not when there is nothing more to add,
but rather when there is nothing more to take away.
Antoine de Saint-Exupéry
Unfortunately, it may be too late and dangerous to commit your patch.
Do you think the patch must be included in 1.9.2?
If you do, please commit your patch ASAP.
If you don't, let's set the target to 1.9.x.
=begin
This issue was solved with changeset r28447.
Nobuyoshi, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.