Module
Module::Concerning

Bite-sized separation of concerns

We often find ourselves with a medium-sized chunk of behavior that we'd
like to extract, but only mix in to a single class.

Extracting a plain old Ruby object to encapsulate it and collaborate or
delegate to the original object is often a good choice, but when
there's no additional state to encapsulate or we're making
DSL-style declarations about the parent class, introducing new
collaborators can obfuscate rather than simplify.

The typical route is to just dump everything in a monolithic class, perhaps
with a comment, as a least-bad alternative. Using modules in separate files
means tedious sifting to get a big-picture view.

Mix-in noise exiled to its own file:

Once our chunk of behavior starts pushing the scroll-to-understand it's
boundary, we give in and move it to a separate file. At this size, the
overhead feels in good proportion to the size of our extraction, despite
diluting our at-a-glance sense of how things really work.