module_function vs extend self
One of the never-ending style battles in Ruby land is
module_function
vsextend self
.Both enable you to define module methods, which can be called not only from instance level, but also from class level. This enables you to make modules that can optionally be
include
‘d into your current scope, which makes sense if the module contains non-state changing methods (“functions”).