Start: Write your first cucumber test from the ground up.
Add base files for cucumber setup.

Add cucumber to the gemfile.
Run `bundle install`.
The Gemfile.lock file record the gem versions.
Run `bundle exec cucumber` to verify cucumber runs correctly.
Add test feature for @mentions.

Run `bundle exec cucumber` and ensure the mentions feature is run.
Add step definition scaffolds generated by cucumber.

These step definitions match the steps we wrote to test the @mentions feature in the previous commit.
Implement Comment class handle @mentions feature.

We'll start adding the code that will actually implement the feature. Notice we add and call the very logical `comment.body` method to our Comment class and step definition. Even though there's no code, we've already designed a very reasonable API (application programming interface) to work with our library.
Load comment file into the cucumber environment.

Since env.rb bootstraps the cucumber environment, we'll add the base directory to the load path so we can load our comment file.
Add method to check mentions in comments.
Store comment as instance method so it's accessible throughout the environment.

All ruby code loaded into the cucumber environment is simply one big shared environment.
Use rspec-expectations to assert arbitrary result expectations.

Provides helpful methods to assert expectations against your code.
- https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
- https://github.com/rspec/rspec-expectations#readme
Filter our all words that start with @.
Omit the starting character '@' from the filtered words.
Add a feature for mentioning more than one friend.
Add new step definition for multiple @mentions scenario.
Mentions should include only word characters.
Refactor the step_defs to be more DRY and reusable.

Note the ?: regular expression syntax allows us to omit the match from getting captured. Otherwise our methods would have to take two arguments, the first just being a useless placeholder.
Add failing test to account for case mismatches.
a