I think the problem is in the expectations.  Why would you expect that
two /executable runtime/ statements would not depend on the order in
which they are executed?  Require is just another method.

I have to agree with James on this one.  If I've written a library
that plays nicely and then somebody comes along and pulls the rug out
from under my feet, there's not much I can do about it.  My code isn't
the one that is mucking things up.  Besides, if I was suitable
paranoid I could check to make sure I'm not redefining a class and
steping on anybody elses feet:

    fail %q{I don't like what's going on here!} if
Object.const_defined 'ProblemClass'

    class ProblemClass
        # ...
    end

If I throw caution to the wind and stick my nose in other modules
buisness I deserve to get rapped.



--
Lou