Const initialization

I think ruby does something strange when it decides if certain constants
have been initialized or not. Take this simple case:

#test.rb
require 'const'
require '/home/dave/foo/const'

#const.rb
DAVE=1

When I run this I get:

/home/dave/foo/const.rb:1: warning: already initialized constant DAVE

...and yes, const.rb is the same one used for both test1.rb and
test2.rb. It seems like ruby hashes the paths to the source files and
complains when they are different - even if both paths reference the
same file in the filesystem. Is there a good way to avoid this? Thanks!

···

--
Posted via http://www.ruby-forum.com/.

David Weldon wrote:

I think ruby does something strange when it decides if certain constants
have been initialized or not.

[snip]

It has nothing to do with constants in particular, but (as you were
referring to at the end) whether or not Ruby thinks two required files
are the same. See this:

   C:\>type tmp.rb
   p( require( 'const' ) )
   p( require( 'const.rb' ) )
   p( require( 'c:/const.rb' ) )

   C:\>ruby tmp.rb
   true
   false
   c:/const.rb:1: warning: already initialized constant FOO
   true

The 'false' means that Ruby could tell that it was the same file, and
didn't re-include it. The last 'true' means that Ruby didn't realize
that the two path specifications ended pointed to the same file, and
re-included it. That's when the warning goes off.

I think ruby does something strange when it decides if certain constants
have been initialized or not. Take this simple case:

#test.rb
require 'const'
require '/home/dave/foo/const'

require File.expand_path('const')
require File.expand_path('/home/dave/foo/const')

#const.rb
DAVE=1

When I run this I get:

/home/dave/foo/const.rb:1: warning: already initialized constant DAVE

...and yes, const.rb is the same one used for both test1.rb and
test2.rb. It seems like ruby hashes the paths to the source files and
complains when they are different - even if both paths reference the
same file in the filesystem. Is there a good way to avoid this? Thanks!

--
Posted via http://www.ruby-forum.com/\.

-a

···

On Thu, 18 Jan 2007, David Weldon wrote:
--
in the practice of tolerance, one's enemy is the best teacher.
- the dalai lama