Claus Spitzer wrote:
> Greetings fellow rubyists! 
> I am looking for a way of checking which location a library I use is
> at. Let me demonstrate with an example:
> 
> Let's assume that I have a hypotetical programa program, foo.rb . That
> program requires a library, as in
>    require 'bar'
> 
> The problem is, I have 4 different versions of bar.rb and one bar.so,
> and would like to know which one I am using. How would I go around
> figuring this out?

If you know what you are looking for you can search the $: global 
variable which houses the paths that ruby looks in for files.

require "time"
$:.each do |path|
    puts "#{path}/time.rb" if File.exist?( "#{path}/time.rb" )
end

here i cheated because I knew I was looking for time. A better solution is:


def require( what )
    super
    $:.each do |path|
       puts "#{path}/#{what}.rb" if File.exist?( "#{path}/time.rb" )
    end
end

require "time"

but this will give you output for every required file. Example when I 
required "time" I get the following output:

---------- Capture Output ----------
 > "c:\ruby\bin\ruby.exe" loadtest.rb -d
c:/ruby/lib/ruby/1.8/rational.rb
c:/ruby/lib/ruby/1.8/date/format.rb
c:/ruby/lib/ruby/1.8/parsedate.rb
c:/ruby/lib/ruby/1.8/time.rb

HTH,


Zach