Ruby is a convenient language, but there are jambs.
I am concerned that modules connect like a #include . It is not completely clear how to resolve name conflicts.
If you connect two files with the same names of methods / classes, then they are simply triturated last. Although it is convenient, but with the included files is better to lead otherwise.
There is a module keyword, similar to a namespace. And with it you can escape from rubbing. But I conducted an experiment: if you declare modules, then when modules with the same name are connected, silent rubbing of functions and classes with the same name occurs.
Of course, there is such an option: all the distributed code should be contained in a module with a unique name.
Actually a question. How is it common to solve such problems in Ruby? What else do I need to know about the Ruby modular system?