>>>>> "D" == Daniel Schierbeck <daniel.schierbeck / gmail.com> writes:

D> As you can see, Module#append_features doesn't call the .included method 
D> on the module, include does.

 Well, it's best to see it like this :

moulon% cat b.rb
#!/usr/bin/ruby
module M
   def self.included(klass)
      puts "Included in #{klass}"
   end
   def a
      puts "a"
   end
end

class A
   include M
end

A.new.a
moulon% 

moulon% ./b.rb
Included in A
a
moulon%
 
moulon% cat b.rb
#!/usr/bin/ruby
module M
   def self.append_features(klass)
      puts "Included in #{klass}"
   end
   def a
      puts "a"
   end
end

class A
   include M
end

A.new.a
moulon% 

moulon% ./b.rb
Included in A
./b.rb:15: undefined method `a' for #<A:0xb7d64b38> (NoMethodError)
moulon% 


Guy Decoux