small medium large xlarge

The latest version of the book is P1.0, released about 3 years ago. If you've bought a PDF of the book and would like to upgrade it to this version (for free), visit your home page.

By default this page displays the errata for the latest version of the book. If you have a previous version, select it here:

If you've found a new error, please submit it.

  • Typo
  • Tech. error
  • Suggestion
  • Maybe next edition
  • Not a problem
  • Reported in: P1.0 (15-Feb-15)
#78187
PDF page: 27
The two test descriptions use the word "test". They should use "task" instead. Example: "considers a project with no test to be done" should be "consi...more...
  • Reported in: P1.0 (27-Sep-16)
#80763
PDF page: 27

In the second to the last paragraph, "...in the body of the specs." should be "...in the bodies of the specs."--James Miller

  • Reported in: P1.0 (25-Oct-16)
#80832
PDF page: 27
The "test" in the following two lines in the book should be "task": 1) it "considers a project with no test to be done" do 2) it "knows that a pro...more...
  • Reported in: P1.0 (21-Jan-16)
#79675
PDF page: 29

"a completed task is complete" ---- test method is 'task.complete!' - actual method is 'mark_completed'

  • Reported in: P1.0 (01-Jan-17)
#81029
PDF page: 31
In chapter 2 the project class has a done? method with the following code tasks.reject(&:complete?).empty?. It could be rewritten as tasks.all?(&:comp...more...
  • Reported in: P1.0 (15-Feb-15)
#78185
Paper page: 36
The tests do not pass: ---- Failures: 1) Project estimates can calculate remaining size Failure/Error: expect(project.remaining_size).to ...more...
  • Reported in: P1.0 (05-Feb-15)
#78152
PDF page: 43

"We than can make..." should be "We then can make"--Vasanth Pappu

  • Reported in: P1.0 (04-Mar-15)
#78227
Paper page: 43

On the 4th paragraph you say "...asserting that the title of the new task..." should be "...asserting the title of the new project"--Tiago Bem

  • Reported in: P1.0 (04-Mar-15)
#78228
Paper page: 43

On the 5th paragraph: "...only that the new task name is there." should be '...only the new project name is there.'--Tiago Bem

  • Reported in: P1.0 (11-Feb-15)
#78179
PDF page: 47
After converting the models from plain old ruby objects to ActiveRecord models, I get the following errors when running the specs that are not mention...more...
  • Reported in: P1.0 (11-Feb-15)
#78177
PDF page: 54
I was confused when I saw 'describe "adding projects" do' because we had used the newer rspec describe style earlier: 'RSpec.describe Projec...more...
  • Reported in: P1.0 (27-Dec-14)
#77978
PDF page: 54
Paper page: 43

"Starting on line 5 and ending on line 8" should be "...ending on line 9". Line 9 has the Capybara method 'visit'.--Paul Adamson

  • Reported in: P1.0 (01-Mar-15)
#78221
PDF page: 73
dom class with underscore to make the test pass <td class="total-size"><%= project.total_size %></td> => <td class="total_size"><%= project.total_siz...more...
  • Reported in: P1.0 (26-Dec-14)
#77974
PDF page: 84
In the test "doesn't allow creation of a task without a size" the task_string has wrong formatting. It is "size:no_size" but i think it should be m...more...
  • Reported in: P1.0 (15-Mar-15)
#78252
PDF page: 84
I am not understanding how this test ensures that a task is not created: it "doesn't allow creation of a task without a size" do creator = Creates...more...
  • Reported in: P1.0 (19-Jan-15)
#78061
PDF page: 90
In Chapter 5. Testing Models • 90 “The definition starts with a call to RSpec::Matchers.define, pssing it the name of the matcher and a block.” ...more...
  • Reported in: P1.0 (08-Jul-15)
#78576
PDF page: 100
Paper page: 90

The definition starts with a call to RSpec::Matchers.define, pssing it, typo on pssing, should be passing.--Yu Xia

  • Reported in: P1.0 (15-Mar-15)
#78253
PDF page: 102
There seems to be an extra ":" in the factory girl example that uses an arbitrary class. Regardless, I cannot get this factory running successfull...more...
  • Reported in: P1.0 (15-Mar-15)
#78254
PDF page: 103
I think slug has to be defined in the Project model for this to work: FactoryGirl.define do factory :project do name "Project Runaway" ...more...
  • Reported in: P1.0 (28-Feb-15)
#78220
Paper page: 111

January 20th plus 6 months is July 20th, not June 20th.--Dustin Blomquist

  • Reported in: P1.0 (16-Aug-16)
#80631
PDF page: 120
it "can create doubles" do twin = double(first_name: "Paul", weight: 100) expect(double.first_name).to eq("Paul") end expect(twin.first_name...more...
  • Reported in: P1.0 (19-Oct-15)
#79027
PDF page: 130
In the code sample on page 130: it "can create doubles" do twin = double(first_name: "Paul", weight: 100) expect(double.first_name).to eq("P...more...
  • Reported in: P1.0 (21-Oct-16)
#80823
PDF page: 139
At the bottom of [PDF] page 139, The last sentence is ``A full call to one of these methods has five arguments, though you'll often just use the first...more...
  • Reported in: P1.0 (20-Oct-16)
#80822
PDF page: 140
In the fourth paragraph, in the phrase ``you can simulate that using the Rails helper fixure_file_upload(filename, mime_type), like this:'', the name ...more...
  • Reported in: P1.0 (19-Dec-14)
#77944
PDF page: 152

The link to github.com/drapergem/draper> should be pointing to github.com/drapergem/draper--Sebastian Rabuini

  • Reported in: P1.0 (13-Feb-15)
#78184
PDF page: 214

example security/02/gatherer/spec/models/user_spec.rb should use rails_helper instead of spec_helper as the tests use AR models

  • Reported in: B5.0 (22-Nov-14)
#77830
PDF page: 226

Shouldn't the test on the last line of the controller be something like?

expect([project]).to eq(user.visible_projects)

--Kosmas Chatzimichalis

  • Reported in: P1.0 (13-Jan-15)
#78036
PDF page: 227

rails generate migration add_public_fields instead of rake generate migration add_public_fields--Nicolas St-Laurent

  • Reported in: P1.0 (13-Jan-15)
#78037
PDF page: 231

In second block of code (visible_projects method), there's an extra 'end' which is not needed.--Nicolas St-Laurent

  • Reported in: P1.0 (13-Feb-15)
#78183
PDF page: 237

where it says: Twitter has a Ruby gem that’s not to hard to set up, I think it should say: it's not TOO hard to set up.

  • Reported in: P1.0 (21-Dec-14)
#77954
PDF page: 238
allow(AvatarAdapter).to receive(:new).with(user).and_return(fake_adapter) should be allow(AvatarAdapter).to receive(:new).with(user.email).and_return(...more...
  • Reported in: P1.0 (14-Jan-15)
#78039
PDF page: 242

Last paragraph seems to suppose to be a bullet point list, but is shown as block of text, which is harder to read.--Nicolas St-Laurent

  • Reported in: P1.0 (29-Jun-15)
#78556
PDF page: 251
Regarding jasmine-fixture; please include install/setup/config information about this add-on library the linked to Github repo currently has no such i...more...
  • Reported in: B5.0 (06-Dec-14)
#77897
PDF page: 255
Given... project show page when we display the list of tests. should be: Given... project show page when we display the list of tasks. --Kosm...more...
  • Reported in: P1.0 (14-Jan-15)
#78040
PDF page: 258

Link at the bottom of the page doesn't work.--Nicolas St-Laurent

  • Reported in: B5.0 (21-Nov-14)
#77826
PDF page: 275
There is no actual content related to JavaScript Fiddle in the "JavaScript Fiddle" section. It's not referenced, there's not links to external source...more...
  • Reported in: P1.0 (26-Jan-15)
#78086
PDF page: 588
Chapter 11: Testing for Security Last page of the "Restricting Access" subchapter 'We are all green'. I had three failing specs. I also need to m...more...
  • Reported in: P1.0 (27-Jan-15)
#78094
PDF page: 814
The handling of down clicks of tasks are missing. In projects.js: nextTask: function(task_row) { result = task_row.next(); if(result...more...
  • Reported in: B5.0 (30-Nov-14)
#77870
PDF page: 1039
Note: the page number entered is the location in the Kindle .mobi file, since there are no page numbers. In the section "Our First Date", in the fi...more...