I sometimes use nested classes to avoid namespace clutter.  The only
downsides I found are related to inheritance, in particular when you
split out classes into different files.

  [a.rb]
  require 'a/b'
  class A < SuperClass
  end

  [a/b.rb]
  class A < SuperClass
    class B
    end
  end

In both files you have to have the correct superclass (which can be
hard during refactoring).  There are different ways to construct this,
however:

  [a.rb]
  class A < SuperClass
    require 'a/b'
  end

  [a/b.rb]
  class A::B
  end

The downside of this is that 'a/b.rb' can't be required on it's own.