Using ActiveSupport::Dependencies outside of rails seems just as fast as doing manual requires. I've found this out by replacing hundreds of requires in a unit tested code base with ActiveSupport::Dependencies without any change to the time it takes to run the test suite.
Using ActiveSupport::Dependencies also allows you to have circular depedencies like class Foo::Bar
in foo/bar.rb and class Foo
in foo.rb that points to Foo::Bar
in it's class definition (like in a rails validation).
The classical way of solving this without ActiveSupport::Dependencies is to do:
# foo/bar.rb
class Foo
class Bar
But this breaks if Foo
inherits from something (like ActiveRecord::Base) and you don't specify that in foo/bar.rb too (results in a superclass mismatch error if foo/bar.rb is loaded before foo.rb).