This, on its own:
class Bus::Driver
end
will result in an error NameError: uninitialized constant Bus
So at some point you have to declare class Bus
or module Bus
. It doesn't have to be the full hierarchy each time though.
I tend to have an early require that sets up the namespaces, then use the more condensed form in the rest of my files. I'm not aware that there is any preferred approach - definitely nothing that you would be criticised for.