Ho ho, this one can catch you out more than once so it’s high time to write a blog post to cover this off. Turns out it’s a commonly used pattern to the rescue. Thanks to eoin on #ruby.ie for pointing to the solution on RailsTips.org.
Here’s quite a tasty diagram too for easy reference.
module Swingable def self.included(base) base.extend(ClassMethods) end def instance_swing puts 'Did an instance swing!' end module ClassMethods def static_swing puts 'Did a static swing!' end end end class BaseballBat include Swingable end BaseballBat.static_swing BaseballBat.new.instance_swing