<html>
  <head>
    <title>Test-First Teaching: learn_ruby: learn_ruby</title>
    <link href="assets/style.css" media="screen" rel="stylesheet" type="text/css" />
  </head>
  <body>
    <div class="header">
      <h1><a href="http://testfirst.org">TestFirst.org</a></h1>
      <h2>the home of test-first teaching</h2>
    </div>
    <div class="nav">
      <h2><a href="index.html">learn_ruby</a></h2>
      <b>Labs:</b>
      <ul>
        <li><a href="00_hello/index.html">00 Hello</a></li>
        <li><a href="01_temperature/index.html">01 Temperature</a></li>
        <li><a href="02_calculator/index.html">02 Calculator</a></li>
        <li><a href="03_simon_says/index.html">03 Simon Says</a></li>
        <li><a href="04_pig_latin/index.html">04 Pig Latin</a></li>
        <li><a href="05_silly_blocks/index.html">05 Silly Blocks</a></li>
        <li><a href="06_performance_monitor/index.html">06 Performance Monitor</a></li>
        <li><a href="07_hello_friend/index.html">07 Hello Friend</a></li>
        <li><a href="08_book_titles/index.html">08 Book Titles</a></li>
        <li><a href="09_timer/index.html">09 Timer</a></li>
        <li><a href="10_temperature_object/index.html">10 Temperature Object</a></li>
        <li><a href="11_dictionary/index.html">11 Dictionary</a></li>
        <li><a href="12_rpn_calculator/index.html">12 Rpn Calculator</a></li>
        <li><a href="13_xml_document/index.html">13 Xml Document</a></li>
        <li><a href="14_array_extensions/index.html">14 Array Extensions</a></li>
        <li><a href="15_in_words/index.html">15 In Words</a></li>
      </ul>
    </div>
    <h1>learn_ruby</h1>
    <div class="content"><h1>Teacher Notes</h1>

<h2>Slides</h2>

<p>Some slides are in test-first-teaching/ruby_notes. They're in Markdown+Showoff format, which means they should be usable either as slides</p>

<pre><code>cd ruby_notes
showoff ruby_notes
</code></pre>

<p>or plain HTML</p>

<pre><code>cd ruby_notes
rdiscount *.md &gt; index.html
</code></pre>

<h2>Rules (for students)</h2>

<ul>
<li>Always read the error!</li>
</ul>


<h2>Solutions</h2>

<p>The <code>solutions</code> branch is dead; long live the <code>solution</code> directory.</p>

<p>To add a solution, you must put your Ruby file(s) in a directory <strong>inside</strong> the lab directory with the name <code>solution</code>, e.g. <code>learn_ruby/hello/solution/hello.rb</code>.</p>

<p>Solutions only appear in the teacher repository (<code>test-first-teaching</code>) not the generated student repo (<code>learn_ruby</code>). When you run <code>rake</code> the tests will be run against the solutions, to assure that your code is correct.</p>

<p>Make sure not to check in any cruft in the lab directory, since that will be seen by (and surely befuddle) students.</p>

<p>Multiple solutions aren't supported yet.</p>

<h2>Notes and instructions</h2>

<p>Every lab has (or can have) a <code>index.md</code> file that the students can read. This is a good place for background, instructions and hints for solving the exercises.</p>

<p>Files ending with <code>.md</code> (Markdown) are converted to HTML and given a <code>.html</code> suffix, and files ending with <code>.scss</code> (Sass/SCSS) are converted to CSS and given a <code>.css</code> suffix. Any other files will be copied over to the student repo as is.</p>

<p>Lab directories become numbered; e.g. <code>hello</code> will become <code>00_hello</code>.</p>

<p>Each curriculum contains an <code>assets</code> directory, which is a good place to put shared files like <code>.js</code> and <code>.css</code> and images. You can refer to them using <code>..</code> in your markdown files, e.g.</p>

<pre><code>![logo](../assets/logo.gif)
</code></pre>

<p>This works in "preview mode" too, though it's a little weird, since <code>.scss</code> isn't converted into <code>.css</code> until the course is built using <code>rake build</code>.</p>

<p>There's also a <code>ubiquitous</code> directory, whose contents are copied into each and every generated lab directory.</p>

<h2>Tricks</h2>

<p>Here are some nice git config settings:</p>

<pre><code>git config --global alias.st status
git config --global alias.ci commit
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.unadd "reset HEAD"
git config --global alias.l "log --oneline --decorate --graph"

git config --global push.default matching

git config --global color.branch=auto
git config --global color.diff=auto
git config --global color.interactive=auto
git config --global color.status=auto
</code></pre>

<p>Or, you can edit <code>$HOME/.gitconfig</code> -- you should have sections like this:</p>

<pre><code>[color]
        branch = auto
        diff = auto
        interactive = auto
        status = auto
[alias]
        st = status
        ci = commit
        co = checkout
        br = branch
        unadd = reset HEAD
        l = log --oneline --decorate --graph
[push]
        default = matching
</code></pre>
</div>
    <div class="footer"><a href="http://testfirst.org">TestFirst.org</a></div>
  </body>
</html>