If you were to remove the autoloader and to explictly use `require` in your app, when you `require a` if `a` also `require b`, you implicitly get access to `b` at the same time.
So the problem isn't the autoloader, but Ruby's and PHP single global namespace.
If anything the autoloader makes it easier to locate the source, because it forces you to follow a strict naming convention. If you see `Foo::Bar`, you know it's defined in either `foo/bar.rb` or `foo.rb`, and it's easy to locate with your editor fuzzy finder.
Another proof is that Django doesn't have this problem even thought it has an autoloader (IIRC).
I'd be very much in favor of a Node or Python like import system for Ruby, but there's nothing wrong with the autoloader.