あるクラスにインスタンスメソッドとクラスメソッドをそれぞれ追加したい場合に、
一つのモジュールをincludeするだけで、両方を追加するようにできる
※includeとextendの違いについては割愛
ポイントは、
def self.included(klass)
klass.send(:include, SomeModule::Methods)
klass.send(:extend, SomeModule::ClassMethods)
end
includedはモジュールがインクルードされた時にコールされるメソッド
引数にインクルードしたクラスが渡ってくるので、そこでincludeとextendを実行してやる
ActiveSupport::Concern を使うと同じ事がもっときれいにかける?