Warning: method redefined

Hi,

Any idea how to track down `warning: method redefined` errors? Is there a way to force errors to appear with irb when I load individual files?

AFAICS I've not redefined anything. It's all my own, very small library. This all started when I installed 1.9.2, which I'm beginning to regret for the amount of consternation it's causing me.

Regards,
Iain

It turns out one of the other files in the library also had require 'file/fo'o etc, so some files were required twice. What I don't understand is why this would generate warnings, as my understanding is that require can be called as multiple times but will only load the files once. Is this incorrect?

Regards,
Iain

···

On 24 Aug 2010, at 19:49, Iain Barnett wrote:

Hi,

Any idea how to track down `warning: method redefined` errors? Is there a way to force errors to appear with irb when I load individual files?

Iain Barnett wrote:

It turns out one of the other files in the library also had require
'file/fo'o etc, so some files were required twice. What I don't
understand is why this would generate warnings, as my understanding is
that require can be called as multiple times but will only load the
files once. Is this incorrect?

It can happen if you require them in different ways, e.g.

require 'file/fo'
require './file/fo'
require '../lib/file/fo'
require File.join(File.dirname(__FILE__), 'fo')

If that's what's happening, the solution is to be consistent with your
require statements, and if necessary set up $: (aka $LOAD_PATH) suitably
at the start of your program.

···

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

Ah, I see. Yes, a part of the code was dynamically calling require, and the offending statements were static.

One more gotcha in the bag! Thanks. Nice thing about all the "gotchas" I've found in Ruby so far is that they may be frustrating at the time, but they don't kill the fun of the language.

Regards,
Iain

···

On 26 Aug 2010, at 14:57, Brian Candler wrote:

Iain Barnett wrote:

It turns out one of the other files in the library also had require
'file/fo'o etc, so some files were required twice. What I don't
understand is why this would generate warnings, as my understanding is
that require can be called as multiple times but will only load the
files once. Is this incorrect?

It can happen if you require them in different ways, e.g.

require 'file/fo'
require './file/fo'
require '../lib/file/fo'
require File.join(File.dirname(__FILE__), 'fo')

If that's what's happening, the solution is to be consistent with your
require statements, and if necessary set up $: (aka $LOAD_PATH) suitably
at the start of your program.
--
Posted via http://www.ruby-forum.com/\.