prependについて

prependとは

リファレンスには、「レシーバーの継承チェイン(module/class)の先頭に追加される」と書いてあります。 レシーバーの定数、メソッドなどをoverrideすることができます。

includeの場合

module X
  def foo
    puts "上書きしました。"
  end
end

class A
  include X

  def foo
    puts "デフォルトです。"
  end
end

A.new.foo  # => デフォルトです。

preprendの場合

module X
  def foo
    puts "上書きしました。"
  end
end

class A
  prepend X

  def foo
    puts "デフォルトです。"
  end
end

A.new.foo # => 上書きしました。