forked from rspec/rspec.github.io
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
30 lines (30 loc) · 29.8 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<!DOCTYPE html>
<!--[if lt IE 7]><html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en"><![endif]-->
<!--[if IE 7]><html class="no-js lt-ie9 lt-ie8" lang="en"><![endif]-->
<!--[if IE 8]><html class="no-js lt-ie9" lang="en"><![endif]-->
<!--[if gt IE 8]<!--><html class="no-js" lang="en"><!--<![endif]--><head><meta charset="UTF-8" /><meta content="width=device-width, initial-scale=1" name="viewport" /><meta content="RSpec: Behaviour Driven Development for Ruby" property="og:title" /><meta content="https://rspec.info/" property="og:url" /><meta content="https://rspec.info/images/logo_ogp.png" property="og:image" /><meta content="summary" name="twitter:card" /><meta content="@rspec" name="twitter:site" /><title>RSpec: Behaviour Driven Development for Ruby</title><link href="/stylesheets/pages/index.css" rel="stylesheet" /><link href="https://fonts.googleapis.com/css?family=Montserrat:400,700" rel="stylesheet" type="text/css" /><link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro" rel="stylesheet" type="text/css" /><link href="https://fonts.googleapis.com/css?family=Inconsolata" rel="stylesheet" type="text/css" /><link href="/blog/feed.xml" rel="alternate" type="application/atom+xml" /></head><body class="index"><header><nav><h1><img src="/images/logo.png" alt="Logo" /><a href="/">RSpec</a></h1><input class="hamburger-toggle" type="checkbox" /><div class="hamburger-icon"><div class="bar"></div><div class="bar"></div><div class="bar"></div></div><ul class="menu"><li><a href="/about">About</a></li><li><a href="/documentation">Documentation</a></li><li><a href="/blog">Blog</a></li><li><a href="/upgrading-from-rspec-2">Upgrade</a></li><li><a href="/help">Get Help</a></li><li><a href="/contributing">Contributing</a></li></ul></nav></header><section class="hero"><article class="hero-text"><img src="/images/logo.png" alt="RSpec Logo" /><div>Behaviour Driven<br />Development for Ruby.</div><div>Making TDD Productive and Fun.</div></article></section><section class="get-started"><article class="steps"><h2>Let's get started!</h2><p>To kick things off, install RSpec and run <code>rspec --init</code> to
set up your project to use RSpec.</p><div class="asciinema-video">
<asciinema-player src="/casts/14095.cast" speed="3" data-size="small" id="asciicast-14095" poster="data:application/json;base64,W1tbIkZldGNoaW5nIGdlbSBtZXRhZGF0YSBmcm9tIGh0dHBzOi8vcnVieWdlbXMub3JnLy4uLi4uLi4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIse31dXSxbWyJJbnN0YWxsaW5nIGRpZmYtbGNzIDEuMi41Iix7ImZnIjoyfV0sWyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIse31dXSxbWyJJbnN0YWxsaW5nIHJzcGVjLXN1cHBvcnQgMy4xLjIiLHsiZmciOjJ9XSxbIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIse31dXSxbWyJJbnN0YWxsaW5nIHJzcGVjLWNvcmUgMy4xLjciLHsiZmciOjJ9XSxbIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIse31dXSxbWyJJbnN0YWxsaW5nIHJzcGVjLWV4cGVjdGF0aW9ucyAzLjEuMiIseyJmZyI6Mn1dLFsiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIse31dXSxbWyJJbnN0YWxsaW5nIHJzcGVjLW1vY2tzIDMuMS4zIix7ImZnIjoyfV0sWyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIse31dXSxbWyJJbnN0YWxsaW5nIHJzcGVjIDMuMS4wIix7ImZnIjoyfV0sWyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIse31dXSxbWyJVc2luZyBidW5kbGVyIDEuNy42ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLHt9XV0sW1siWW91ciBidW5kbGUgaXMgY29tcGxldGUhIix7ImZnIjoyfV0sWyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLHt9XV0sW1siVXNlIGBidW5kbGUgc2hvdyBbZ2VtbmFtZV1gIHRvIHNlZSB3aGVyZSBhIGJ1bmRsZWQgZ2VtIGlzIGluc3RhbGxlZC4iLHsiZmciOjJ9XSxbIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLHt9XV0sW1siXHUyNzlDICIseyJib2xkIjp0cnVlLCJmZyI6MX1dLFsiICIseyJib2xkIjp0cnVlLCJmZyI6Mn1dLFsiYm93bGluZyAiLHsiYm9sZCI6dHJ1ZSwiZmciOjZ9XSxbImdpdDooIix7ImJvbGQiOnRydWUsImZnIjo0fV0sWyJtYXN0ZXIiLHsiYm9sZCI6dHJ1ZSwiZmciOjF9XSxbIikgIix7ImJvbGQiOnRydWUsImZnIjo0fV0sWyJcdTI3MTciLHsiYm9sZCI6dHJ1ZSwiZmciOjN9XSxbIiAiLHsiYm9sZCI6dHJ1ZSwiZmciOjR9XSxbImJpbi9yc3BlYyAtLWluaXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLHt9XV0sW1siICBjcmVhdGUgICAucnNwZWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIix7fV1dLFtbIiAgY3JlYXRlICAgc3BlYy9zcGVjX2hlbHBlci5yYiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIse31dXSxbWyJcdTI3OUMgIix7ImJvbGQiOnRydWUsImZnIjoxfV0sWyIgIix7ImJvbGQiOnRydWUsImZnIjoyfV0sWyJib3dsaW5nICIseyJib2xkIjp0cnVlLCJmZyI6Nn1dLFsiZ2l0OigiLHsiYm9sZCI6dHJ1ZSwiZmciOjR9XSxbIm1hc3RlciIseyJib2xkIjp0cnVlLCJmZyI6MX1dLFsiKSAiLHsiYm9sZCI6dHJ1ZSwiZmciOjR9XSxbIlx1MjcxNyIseyJib2xkIjp0cnVlLCJmZyI6M31dLFsiICIseyJib2xkIjp0cnVlLCJmZyI6NH1dLFsiY2F0IC5yc3BlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIse31dXSxbWyItLWNvbG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLHt9XV0sW1siLS1yZXF1aXJlIHNwZWNfaGVscGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIix7fV1dLFtbIlx1Mjc5QyAiLHsiYm9sZCI6dHJ1ZSwiZmciOjF9XSxbIiAiLHsiYm9sZCI6dHJ1ZSwiZmciOjJ9XSxbImJvd2xpbmcgIix7ImJvbGQiOnRydWUsImZnIjo2fV0sWyJnaXQ6KCIseyJib2xkIjp0cnVlLCJmZyI6NH1dLFsibWFzdGVyIix7ImJvbGQiOnRydWUsImZnIjoxfV0sWyIpICIseyJib2xkIjp0cnVlLCJmZyI6NH1dLFsiXHUyNzE3Iix7ImJvbGQiOnRydWUsImZnIjozfV0sWyIgIix7ImJvbGQiOnRydWUsImZnIjo0fV0sWyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIix7fV1dXQ==
"/>
</div>
<p>Start with a very simple example that expresses some basic desired
behaviour.</p><div class="asciinema-video">
<asciinema-player src="/casts/14100.cast" speed="4" data-size="small" id="asciicast-14100" poster="data:application/json;base64,W1tbIiAgMSAiLHsiYmciOjIzMiwiZmciOjE1fV0sWyJyZXF1aXJlIix7ImZnIjoyMjh9XSxbIiAiLHsiZmciOjI1M31dLFsiJ2Jvd2xpbmcnIix7ImZnIjo4Mn1dLFsiXHUwMEFDIix7ImZnIjo4fV0sWyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLHsiZmciOjI1M31dXSxbWyIgIDIgIix7ImJnIjoyMzIsImZnIjoxNX1dLFsiXHUwMEFDIix7ImZnIjo4fV0sWyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIseyJmZyI6MjUzfV1dLFtbIiAgMyAiLHsiYmciOjIzMiwiZmciOjE1fV0sWyJSU3BlYyIseyJmZyI6MTg2fV0sWyIuIix7ImZnIjoyNTN9XSxbImRlc2NyaWJlIix7ImZnIjoyMDh9XSxbIiAiLHsiZmciOjI1M31dLFsiQm93bGluZyIseyJmZyI6MTg2fV0sWyIsICIseyJmZyI6MjUzfV0sWyJcIiNzY29yZVwiIix7ImZnIjo4Mn1dLFsiICIseyJmZyI6MjUzfV0sWyJkbyIseyJmZyI6MjA4fV0sWyJcdTAwQUMiLHsiZmciOjh9XSxbIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIseyJmZyI6MjUzfV1dLFtbIiAgNCAiLHsiYmciOjIzMiwiZmciOjE1fV0sWyIgICIseyJmZyI6MjUzfV0sWyJjb250ZXh0Iix7ImZnIjoyMDh9XSxbIiAiLHsiZmciOjI1M31dLFsiXCJ3aXRoIG5vIHN0cmlrZXMgb3Igc3BhcmVzXCIiLHsiZmciOjgyfV0sWyIgIix7ImZnIjoyNTN9XSxbImRvIix7ImZnIjoyMDh9XSxbIlx1MDBBQyIseyJmZyI6OH1dLFsiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIseyJmZyI6MjUzfV1dLFtbIiAgNSAiLHsiYmciOjIzMiwiZmciOjE1fV0sWyIgICAgIix7ImZnIjoyNTN9XSxbIml0Iix7ImZnIjoyMDh9XSxbIiAiLHsiZmciOjI1M31dLFsiXCJzdW1zIHRoZSBwaW4gY291bnQgZm9yIGVhY2ggcm9sbFwiIix7ImZnIjo4Mn1dLFsiICIseyJmZyI6MjUzfV0sWyJkbyIseyJmZyI6MjA4fV0sWyJcdTAwQUMiLHsiZmciOjh9XSxbIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIseyJmZyI6MjUzfV1dLFtbIiAgNiAiLHsiYmciOjIzMiwiZmciOjE1fV0sWyIgICAgICBib3dsaW5nID0gIix7ImZnIjoyNTN9XSxbIkJvd2xpbmciLHsiZmciOjE4Nn1dLFsiLm5ldyIseyJmZyI6MjUzfV0sWyJcdTAwQUMiLHsiZmciOjh9XSxbIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIix7ImZnIjoyNTN9XV0sW1siICA3ICIseyJiZyI6MjMyLCJmZyI6MTV9XSxbIiAgICAgICIseyJmZyI6MjUzfV0sWyIyMCIseyJmZyI6MzB9XSxbIi50aW1lcyB7IGJvd2xpbmcuaGl0KCIseyJmZyI6MjUzfV0sWyI0Iix7ImZnIjozMH1dLFsiKSB9Iix7ImZnIjoyNTN9XSxbIlx1MDBBQyIseyJmZyI6OH1dLFsiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLHsiZmciOjI1M31dXSxbWyIgIDggIix7ImJnIjoyMzIsImZnIjoxNX1dLFsiICAgICAgIix7ImZnIjoyNTN9XSxbImV4cGVjdCIseyJmZyI6MjA4fV0sWyIoYm93bGluZy5zY29yZSkudG8gZXEgIix7ImZnIjoyNTN9XSxbIjgwIix7ImZnIjozMH1dLFsiXHUwMEFDIix7ImZnIjo4fV0sWyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIseyJmZyI6MjUzfV1dLFtbIiAgOSAiLHsiYmciOjIzMiwiZmciOjE1fV0sWyIgICAgIix7ImZnIjoyNTN9XSxbImVuZCIseyJmZyI6MjA4fV0sWyJcdTAwQUMiLHsiZmciOjh9XSxbIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLHsiZmciOjI1M31dXSxbWyIgMTAgIix7ImJnIjoyMzIsImZnIjoxNX1dLFsiICAiLHsiZmciOjI1M31dLFsiZW5kIix7ImZnIjoyMDh9XSxbIlx1MDBBQyIseyJmZyI6OH1dLFsiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIix7ImZnIjoyNTN9XV0sW1siIDExICIseyJiZyI6MjMyLCJmZyI6MTV9XSxbImVuZCIseyJmZyI6MjA4fV0sWyJcdTAwQUMiLHsiZmciOjh9XSxbIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIix7ImZnIjoyNTN9XV0sW1sifiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIseyJmZyI6OH1dXSxbWyJ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIix7ImZnIjo4fV1dLFtbIn4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLHsiZmciOjh9XV0sW1sifiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIseyJmZyI6OH1dXSxbWyJ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIix7ImZnIjo4fV1dLFtbIn4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLHsiZmciOjh9XV0sW1sifiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIseyJmZyI6OH1dXSxbWyJ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIix7ImZnIjo4fV1dLFtbIn4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLHsiZmciOjh9XV0sW1sifiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIseyJmZyI6OH1dXSxbWyJ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIix7ImZnIjo4fV1dLFtbInNwZWMvYm93bGluZ19zcGVjLnJiIFsrXSBMaW5lOjgvMTFbNzIlXUNvbDozNkJ1ZjojMls0OF1bMHgzMF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLHsiYmciOjE1LCJib2xkIjp0cnVlLCJmZyI6MH1dXSxbWyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIix7ImZnIjoyNTN9XV1d
"/>
</div>
<p>Run the example and watch it fail.</p><div class="asciinema-video">
<asciinema-player src="/casts/14101.cast" speed="2" data-size="small" id="asciicast-14101" poster="data:application/json;base64,W1tbIlx1Mjc5QyAiLHsiYm9sZCI6dHJ1ZSwiZmciOjF9XSxbIiAiLHsiYm9sZCI6dHJ1ZSwiZmciOjJ9XSxbImJvd2xpbmcgIix7ImJvbGQiOnRydWUsImZnIjo2fV0sWyJnaXQ6KCIseyJib2xkIjp0cnVlLCJmZyI6NH1dLFsibWFzdGVyIix7ImJvbGQiOnRydWUsImZnIjoxfV0sWyIpICIseyJib2xkIjp0cnVlLCJmZyI6NH1dLFsiYmluL3JzcGVjIC0tZm9ybWF0IGRvYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIse31dXSxbWyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIix7fV1dLFtbIkJvd2xpbmcjc2NvcmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLHt9XV0sW1siICB3aXRoIG5vIHN0cmlrZXMgb3Igc3BhcmVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIse31dXSxbWyIgICAgc3VtcyB0aGUgcGluIGNvdW50IGZvciBlYWNoIHJvbGwgKEZBSUxFRCAtIDEpIix7ImZnIjoxfV0sWyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLHt9XV0sW1siICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIse31dXSxbWyJGYWlsdXJlczogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIix7fV1dLFtbIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLHt9XV0sW1siICAxKSBCb3dsaW5nI3Njb3JlIHdpdGggbm8gc3RyaWtlcyBvciBzcGFyZXMgc3VtcyB0aGUgcGluIGNvdW50IGZvciBlYWNoIHJvbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIse31dXSxbWyIgICAgICIse31dLFsiRmFpbHVyZS9FcnJvcjogZXhwZWN0KGJvd2xpbmcuc2NvcmUpLnRvIGVxIDgwIix7ImZnIjoxfV0sWyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIse31dXSxbWyIgICAgICIse31dLFsiICAiLHsiZmciOjF9XSxbIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIse31dXSxbWyIgICAgICIse31dLFsiICBleHBlY3RlZDogODAiLHsiZmciOjF9XSxbIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIse31dXSxbWyIgICAgICIse31dLFsiICAgICAgIGdvdDogbmlsIix7ImZnIjoxfV0sWyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIse31dXSxbWyIgICAgICIse31dLFsiICAiLHsiZmciOjF9XSxbIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIse31dXSxbWyIgICAgICIse31dLFsiICAoY29tcGFyZWQgdXNpbmcgPT0pIix7ImZnIjoxfV0sWyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIse31dXSxbWyIgICAgICIse31dLFsiIyAuL3NwZWMvYm93bGluZ19zcGVjLnJiOjg6aW4gYGJsb2NrICgzIGxldmVscykgaW4gPHRvcCAocmVxdWlyZWQpPiciLHsiZmciOjZ9XSxbIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIse31dXSxbWyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIix7fV1dLFtbIkZpbmlzaGVkIGluIDAuMDAxNDIgc2Vjb25kcyAoZmlsZXMgdG9vayAwLjEzNzkzIHNlY29uZHMgdG8gbG9hZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLHt9XV0sW1siMSBleGFtcGxlLCAxIGZhaWx1cmUiLHsiZmciOjF9XSxbIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIix7fV1dLFtbIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLHt9XV0sW1siRmFpbGVkIGV4YW1wbGVzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIse31dXSxbWyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIix7fV1dLFtbInJzcGVjIC4vc3BlYy9ib3dsaW5nX3NwZWMucmI6NSIseyJmZyI6MX1dLFsiICIse31dLFsiIyBCb3dsaW5nI3Njb3JlIHdpdGggbm8gc3RyaWtlcyBvciBzcGFyZXMgc3VtcyB0aGUgcGluIGNvdW50IGZvciBlYWNoIHJvbGwiLHsiZmciOjZ9XSxbIiAgICAgICAgICAgICAgICAiLHt9XV0sW1siXHUyNzlDICIseyJib2xkIjp0cnVlLCJmZyI6MX1dLFsiICIseyJib2xkIjp0cnVlLCJmZyI6Mn1dLFsiYm93bGluZyAiLHsiYm9sZCI6dHJ1ZSwiZmciOjZ9XSxbImdpdDooIix7ImJvbGQiOnRydWUsImZnIjo0fV0sWyJtYXN0ZXIiLHsiYm9sZCI6dHJ1ZSwiZmciOjF9XSxbIikgIix7ImJvbGQiOnRydWUsImZnIjo0fV0sWyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIix7fV1dXQ==
"/>
</div>
<p>Implement that basic behaviour...</p><div class="asciinema-video">
<asciinema-player src="/casts/14102.cast" speed="2" data-size="small" id="asciicast-14102" poster="data:application/json;base64,W1tbIiAgMSAiLHsiYmciOjIzMiwiZmciOjE1fV0sWyJjbGFzcyIseyJmZyI6MjA4fV0sWyIgIix7ImZnIjoyNTN9XSxbIkJvd2xpbmciLHsiZmciOjE4Nn1dLFsiXHUwMEFDIix7ImZnIjo4fV0sWyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIix7ImZnIjoyNTN9XV0sW1siICAyICIseyJiZyI6MjMyLCJmZyI6MTV9XSxbIiAgIix7ImZnIjoyNTN9XSxbImF0dHJfcmVhZGVyIix7ImZnIjoyMjh9XSxbIiAiLHsiZmciOjI1M31dLFsiOnNjb3JlIix7ImZnIjozMH1dLFsiXHUwMEFDIix7ImZnIjo4fV0sWyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLHsiZmciOjI1M31dXSxbWyIgIDMgIix7ImJnIjoyMzIsImZnIjoxNX1dLFsiXHUwMEFDIix7ImZnIjo4fV0sWyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIseyJmZyI6MjUzfV1dLFtbIiAgNCAiLHsiYmciOjIzMiwiZmciOjE1fV0sWyIgICIseyJmZyI6MjUzfV0sWyJkZWYiLHsiZmciOjIwOH1dLFsiICIseyJmZyI6MjUzfV0sWyJpbml0aWFsaXplIix7ImZnIjoyMjB9XSxbIlx1MDBBQyIseyJmZyI6OH1dLFsiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIseyJmZyI6MjUzfV1dLFtbIiAgNSAiLHsiYmciOjIzMiwiZmciOjE1fV0sWyIgICAgIix7ImZnIjoyNTN9XSxbIkBzY29yZSIseyJmZyI6MjIwfV0sWyIgPSAiLHsiZmciOjI1M31dLFsiMCIseyJmZyI6MzB9XSxbIlx1MDBBQyIseyJmZyI6OH1dLFsiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIix7ImZnIjoyNTN9XV0sW1siICA2ICIseyJiZyI6MjMyLCJmZyI6MTV9XSxbIiAgIix7ImZnIjoyNTN9XSxbImVuZCIseyJmZyI6MjA4fV0sWyJcdTAwQUMiLHsiZmciOjh9XSxbIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIseyJmZyI6MjUzfV1dLFtbIiAgNyAiLHsiYmciOjIzMiwiZmciOjE1fV0sWyJcdTAwQUMiLHsiZmciOjh9XSxbIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIix7ImZnIjoyNTN9XV0sW1siICA4ICIseyJiZyI6MjMyLCJmZyI6MTV9XSxbIiAgIix7ImZnIjoyNTN9XSxbImRlZiIseyJmZyI6MjA4fV0sWyIgIix7ImZnIjoyNTN9XSxbImhpdCIseyJmZyI6MjIwfV0sWyIocGluX2NvdW50KSIseyJmZyI6MjUzfV0sWyJcdTAwQUMiLHsiZmciOjh9XSxbIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIseyJmZyI6MjUzfV1dLFtbIiAgOSAiLHsiYmciOjIzMiwiZmciOjE1fV0sWyIgICAgIix7ImZnIjoyNTN9XSxbIkBzY29yZSIseyJmZyI6MjIwfV0sWyIgKz0gcGluX2NvdW50Iix7ImZnIjoyNTN9XSxbIlx1MDBBQyIseyJmZyI6OH1dLFsiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIix7ImZnIjoyNTN9XV0sW1siIDEwICIseyJiZyI6MjMyLCJmZyI6MTV9XSxbIiAgIix7ImZnIjoyNTN9XSxbImVuZCIseyJmZyI6MjA4fV0sWyJcdTAwQUMiLHsiZmciOjh9XSxbIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIseyJmZyI6MjUzfV1dLFtbIiAxMSAiLHsiYmciOjIzMiwiZmciOjE1fV0sWyJlbmQiLHsiZmciOjIwOH1dLFsiXHUwMEFDIix7ImZnIjo4fV0sWyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIseyJmZyI6MjUzfV1dLFtbIn4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLHsiZmciOjh9XV0sW1sifiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIseyJmZyI6OH1dXSxbWyJ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIix7ImZnIjo4fV1dLFtbIn4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLHsiZmciOjh9XV0sW1sifiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIseyJmZyI6OH1dXSxbWyJ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIix7ImZnIjo4fV1dLFtbIn4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLHsiZmciOjh9XV0sW1sifiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIseyJmZyI6OH1dXSxbWyJ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIix7ImZnIjo4fV1dLFtbIn4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLHsiZmciOjh9XV0sW1sifiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIseyJmZyI6OH1dXSxbWyJsaWIvYm93bGluZy5yYiAgTGluZToxMC8xMVs5MCVdQ29sOjNCdWY6IzFbMTAxXVsweDY1XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIix7ImJnIjoxNSwiYm9sZCI6dHJ1ZSwiZmciOjB9XV0sW1siXCJsaWIvYm93bGluZy5yYlwiIDExTCwgMTMwQyB3cml0dGVuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIix7ImZnIjoyNTN9XV1d
"/>
</div>
<p>Run the example and bask in the joy that is green.</p><div class="asciinema-video">
<asciinema-player src="/casts/14103.cast" speed="2" data-size="small" id="asciicast-14103" poster="data:application/json;base64,W1tbIlx1Mjc5QyAiLHsiYm9sZCI6dHJ1ZSwiZmciOjF9XSxbIiAiLHsiYm9sZCI6dHJ1ZSwiZmciOjJ9XSxbImJvd2xpbmcgIix7ImJvbGQiOnRydWUsImZnIjo2fV0sWyJnaXQ6KCIseyJib2xkIjp0cnVlLCJmZyI6NH1dLFsibWFzdGVyIix7ImJvbGQiOnRydWUsImZnIjoxfV0sWyIpICIseyJib2xkIjp0cnVlLCJmZyI6NH1dLFsiYmluL3JzcGVjIC0tZm9ybWF0IGRvYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIse31dXSxbWyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIix7fV1dLFtbIkJvd2xpbmcjc2NvcmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLHt9XV0sW1siICB3aXRoIG5vIHN0cmlrZXMgb3Igc3BhcmVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIse31dXSxbWyIgICAgc3VtcyB0aGUgcGluIGNvdW50IGZvciBlYWNoIHJvbGwiLHsiZmciOjJ9XSxbIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLHt9XV0sW1siICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIse31dXSxbWyJGaW5pc2hlZCBpbiAwLjAwMTM3IHNlY29uZHMgKGZpbGVzIHRvb2sgMC4xMzQyMSBzZWNvbmRzIHRvIGxvYWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIix7fV1dLFtbIjEgZXhhbXBsZSwgMCBmYWlsdXJlcyIseyJmZyI6Mn1dLFsiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIse31dXSxbWyJcdTI3OUMgIix7ImJvbGQiOnRydWUsImZnIjoxfV0sWyIgIix7ImJvbGQiOnRydWUsImZnIjoyfV0sWyJib3dsaW5nICIseyJib2xkIjp0cnVlLCJmZyI6Nn1dLFsiZ2l0OigiLHsiYm9sZCI6dHJ1ZSwiZmciOjR9XSxbIm1hc3RlciIseyJib2xkIjp0cnVlLCJmZyI6MX1dLFsiKSAiLHsiYm9sZCI6dHJ1ZSwiZmciOjR9XSxbIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLHt9XV0sW1siICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIse31dXSxbWyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIix7fV1dLFtbIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLHt9XV0sW1siICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIse31dXSxbWyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIix7fV1dLFtbIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLHt9XV0sW1siICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIse31dXSxbWyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIix7fV1dLFtbIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLHt9XV0sW1siICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIse31dXSxbWyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIix7fV1dLFtbIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLHt9XV0sW1siICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIse31dXSxbWyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIix7fV1dLFtbIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLHt9XV1d
"/>
</div>
<h3>Take very small steps</h3><p>Don’t rush ahead with more code. Instead, add another example and let
it guide you to what you have to do next. And don’t forget to take time
to refactor your code before it gets messy. You should keep your code
clean at every step of the way.</p></article><article class="docs"><a href="/documentation" class="btn">View Documentation</a></article><article class="book"><img src="/images/rspec3_book.jpg" alt="Effective Testing with RSpec 3" class="needs-border" /><div><h2>The Book</h2><h3>Effective Testing with RSpec 3: Build Ruby Apps with Confidence</h3><p>This definitive guide from RSpec’s lead developer shows you how to use RSpec to drive more maintainable designs, specify and document expected behavior, and prevent regressions during refactoring. Build a project using RSpec to design, describe, and test the behavior of your code-whether you’re new to testing tools or an experienced developer.</p><a href="https://pragprog.com/titles/rspec3/effective-testing-with-rspec-3/" target="_blank">Get the book from The Pragmatic Bookshelf</a></div></article><p></p><article class="screencast"><img src="/images/rspec_screencast.png" alt="Testing Ruby Application with RSpec Screencast" /><div><h2>The Screencast</h2><p>The Testing Ruby Applications with RSpec screencast introduces the core RSpec libraries through the development of a small CLI card game. In addition to covering the technical aspects of using RSpec, it also covers best practices for using them so you get the most out of your test suite: different types of tests, what kinds of things to test, when different styles are appropriate.</p><a href="https://www.pluralsight.com/courses/rspec-ruby-application-testing" target="_blank">Check out the screencast</a></div></article></section><footer><div>Created with the assistance of Ninefold<img src="/images/brutus-half.png" alt="Brutus" /></div><br /><a href="https://dnsimple.link/resolving-rspec" target="_blank">Resolving with<br /><img src="https://cdn.dnsimple.com/assets/resolving-with-us/logo-dark.png" alt="DNSimple" style="width:100px;" /></a></footer></body><script src="/javascripts/asciinema-player.js"></script></html>