If in foo1.rb I have:

  FOO1 = 1

And in foo2.rb I have:

  require 'foo1.rb'
  require './foo1.rb'

Then I get:

  ./foo1.rb:1: warning: already initialized constant FOO1

Since foo1 is the same file in each case, this should not happen.  require
should probably call expand_path on the file before checking to see if it
has already been required.

On another note, is there any way to require a file out of the current
directory?  Currently, I am using:

def requirelocal(file, *args)
  caller_file, *foo = caller[0].split(':')
  caller_dir = File.dirname(caller_file)
  require File.join(caller_dir, file)
end

But, imo, this is just plain ugly.  If I accidentally use 'require'
instead of 'requirelocal', then the file still gets required, but if there
is another file in $RUBYLIB with the same name, then that file gets
required, not the one in the current directory.

Perhaps an RCR would be appropriate?

Paul