Introduction
Modules help group related methods and constants together. They keep code organized and avoid repeating code.
When you want to group helper methods used in many places.
When you want to share code between classes without inheritance.
When you want to create namespaces to avoid name conflicts.
When you want to add reusable behavior to classes using mixins.