The following code illustrates this plainly. There are two modules, unimaginatively called ModuleA and ModuleB, each containing a method of the same name.
#!/usr/bin/env ruby module ModuleA def ModuleA.message puts "Hello from ModuleA" end end module ModuleB def ModuleB.message puts "Hello from ModuleB" end end ModuleA::message ModuleB::message
The first thing that you'll notice is ModuleA or ModuleB has to be prepended to the method names in the definitions. The second thing you'll notice is that when you call these methods, you need to use a fully qualified name using the :: operator.
A fully qualified name is a module name and either method or class name separated by the :: operator. It unambiguously identifies a single method or class in a module. There's a shortcut around this though, but it may be counterproductive.