RubyのModule#includeで引数を複数指定すると逆順で追加される

Module#include は引数に複数のモジュールを受け取ることができる。

しかし、以下のサンプルコードで分かるように、モジュールの順序は3行で書いたものと逆になるので注意がいる。

module A; end
module B; end
module C; end

class Foo
  include A
  include B
  include C
end

class Bar
  include A, B, C
end

p Foo.ancestors
#=> [Foo, C, B, A, Object, Kernel, BasicObject]
p Bar.ancestors
#=> [Bar, A, B, C, Object, Kernel, BasicObject]

include を触っていた初めて知った挙動なので、ブログにメモっておく。