title: What is the difference between 'include' and 'prepend' in Ruby?
body: <p>From the <a href="http://www.ruby-doc.org/core-2.0/Module.html#method-i-prepend_features" rel="noreferrer">Module</a></p>
  <blockquote>
  <p>Module#append_features(mod) → mod =&gt; When this module is included in another, Ruby calls append_features in this module, passing it the receiving module in mod. Ruby’s default implementation is <em><strong>to add</strong></em> the constants, methods, and module variables of this module to mod if this module has not already been added to mod or one of its ancestors.</p>
  <p>Module#prepend_features(mod) → mod =&gt; When this module is prepended in another, Ruby calls prepend_features in this module, passing it the receiving module in mod. Ruby’s default implementation is <em><strong>to overlay</strong></em> the constants, methods, and module variables of this module to mod if this module has not already been added to mod or one of its ancestors.</p>
  </blockquote>
  <p>Can anyone help me to understand the below questions:</p>
  <ul>
  <li><p>What more features of <code>Module</code> are defined as <code>append</code> and <code>prepend</code> except those default?</p>
  </li>
  <li><p>How they differ functionally?</p>
  </li>
  <li><p>When to use <code>append_features</code> and when <code>prepend_features</code>?</p>
  </li>
  <li><p>what is the difference between two bold lines as above?</p>
  </li>
  </ul>