small medium large xlarge

The latest version of the book is P1.0, released 6 months ago. If you've bought a PDF of the book and would like to update 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 (21-Apr-18)
#83031
PDF page: 32
If you run the tests at this point, typing everything in exactly, you get an error with the Project#total_size method. Specifically, the error is: ...more...
  • Reported in: P1.0 (12-Mar-18)
#82902
Paper page: 32
In the first paragraph, the author writes "This test fails first on the creation of Task.new(size:2, completed:true)" when in-fact, using the code as ...more...
  • Reported in: B2.0 (30-Jan-18)
#82712
PDF page: 35

be_part_of_velocity doesn't match code from block on page 34, which states be_a_part_of_velocity--Aaron Kelton

  • Reported in: P1.0 (22-Apr-18)
#83036
Paper page: 96
Sizable is misspelled throughout this chapter which impacts the module name and filename. Which is the main issue. But most importantly, the code snip...more...
  • Reported in: P1.0 (22-Apr-18)
#83037
Paper page: 97
At this point in the test, there is a method Project#total_size. But this section depends on a Project#size method, which the custom matcher uses. Run...more...
  • Reported in: P1.0 (22-Apr-18)
#83038
Paper page: 98
was #{actual} should be was #{actual.size} Otherwise the test failure message displays the object representation and not the meaningful actual v...more...
  • Reported in: P1.0 (07-May-18)
#83064
Paper page: 114

First bullet: "attributes_for" is incorrectly written as "attribute_for".

--Yong Bakos

  • Reported in: P1.0 (07-May-18)
#83065
Paper page: 117
Second paragraph: "My preferred strategy is to not specify attributes" should be: "My preferred strategy is to not specify associations" --Yong Ba...more...
  • Reported in: P1.0 (07-May-18)
#83066
Paper page: 121
The state of the project_spec "estimates" section does not match the traits created in this chapter, and so applying those traits causes tests to fail...more...
  • Reported in: P1.0 (10-May-18)
#83086
Paper page: 122
When I ran bin/factory_bot.rb, I got a different notification for panic: * panic - uninitialized constant Panic (NameError) from /Users/aaron/.rb...more...
  • Reported in: P1.0 (12-May-18)
#83090
Paper page: 133
The second code listing is both vague and includes a technical error. This: twin = double(first_name: "Paul", weight: 100) twin = double allow(tw...more...
  • Reported in: P1.0 (12-May-18)
#83091
Paper page: 143
Code listing mocks/01/spec/controllers/projects_controller_spec.rb should end with one more expectation: expect(workflow).to have_received(:create)...more...
  • Reported in: P1.0 (12-May-18)
#83092
Paper page: 145

The backticks and italics are not necessary for the initial code snippet:

allow(project).to receive(:method).and_yield("arg")

--Yong Bakos

  • Reported in: P1.0 (09-Mar-18)
#82884
PDF page: 165
After scoping the order of project tasks, I had a few unrelated tests fail. I ended up needing to add inverse_of to the relationships to make it work....more...
  • Reported in: P1.0 (17-May-18)
#83101
Paper page: 166

it "makes 1... in an entry project"

Should be

it "makes 1... in an empty project"

--Yong Bakos

  • Reported in: P1.0 (17-May-18)
#83103
Paper page: 166
The controller implementation on this page, integration/02/app/controllers/task_controller.rb should omit: - the before_action - the methods up an...more...
  • Reported in: P1.0 (17-May-18)
#83102
Paper page: 167
On this page (167), the listing for integration/02/spec/models/task_spec.rb should _only_ contain a single test, "can determine that a task is first o...more...
  • Reported in: P1.0 (20-May-18)
#83113
Paper page: 171
Ok, this technical error is a major one. As of page 171, one major omission is that, in chapter 8, the author does not guide the user through an im...more...
  • Reported in: P1.0 (19-May-18)
#83107
Paper page: 173

Here is features_add_task.feature

should be:

Here is features/add_task.feature

--Yong Bakos

  • Reported in: P1.0 (19-May-18)
#83108
Paper page: 174
In the cucumber pages, although Rappin states the version of cucumber and cucumber-rails used, it is important to note that cucumber has changed the d...more...
  • Reported in: P1.0 (09-Mar-18)
#82885
PDF page: 174
The cucumber feature test is in the "features" directory not the "feature" directory. It should be "cucumber features/add_task.feature" instead of "cu...more...
  • Reported in: P1.0 (19-May-18)
#83109
Paper page: 178
The Scenario Outline on pages 178-179 embolden the word in, with no explanation about why. This should be of normal weight, so as to not mislead the r...more...
  • Reported in: P1.0 (20-May-18)
#83111
Paper page: 183
In the code listing, the first tr within tbody is inconsistent: <tr id="task_<%= task.project_order %>" data-task-id=<%= task.id >> Should be: ...more...
  • Reported in: P1.0 (20-May-18)
#83112
Paper page: 186
When you generated the Rails application you included Webpacker... But we did not, nor does the author prompt us to way back in chapter 2 where we:...more...
  • Reported in: P1.0 (24-May-18)
#83131
Paper page: 199
The last test description reads: "handles asking for the bottom task to move up" But should be: "handles asking for the bottom task to move d...more...
  • Reported in: P1.0 (09-Mar-18)
#82886
PDF page: 204

Type in test name "uses the fake laoder to load a Project". It should be "uses the fake loader to load a Project".--Joel Schneider

  • Reported in: P1.0 (27-May-18)
#83150
Paper page: 215
If the reader has been following along with the text up until page 203, he is found abandoned in completing the app to match the author's. One must th...more...
  • Reported in: P1.0 (18-Mar-18)
#82921
PDF page: 215
Going forward in the code examples I found that the code was missing on previous chapters, but included in later chapters, and that way I was able to ...more...
Noel Rappin says: Hi -- I'm not seeing the error you are seeing, can you give me a little more information about how you set this up? Or possibly let me look at the code as you built?
  • Reported in: P1.0 (18-Mar-18)
#82922
PDF page: 217
At this point of the book, I found that front-end has a critical error: the DOM task_#id was actually the project_order you can notice this on the pro...more...
Noel Rappin says: Yes, it does seem that the project.js file is using the project_order. I believe I did this to allow for the use of new objects from the form at the bottom to be created locally (in which case they wouldn't have an ID), but I wound up not having space for that and should have reverted it back to using the ID. That said, I don't see errors on the page or in the tests if I replace that with the id. Can you give more information about the errors you are seeing.
  • Reported in: P1.0 (18-Mar-18)
#82920
PDF page: 225
After reaching the section "Connecting the JavaScript to the Server Code", I ran the rails server and the webpacker dev server and noticed that the "p...more...
Noel Rappin says: The example code does have a `task-table` dom class in app/views/projects/show.html.erb, in the js_jasmine/2 and js_jasmine/3 folders, however it doesn't look like that code change was presented in the text. That's an oversight on my part -- the text is focused on the JS changes, and I missed this one. I'm sorry that it hurt your experience with the book.
  • Reported in: P1.0 (28-May-18)
#83158
Paper page: 226

First paragraph:
...a have_http_matcher
should be:
...a have_http_status matcher--Yong Bakos

  • Reported in: P1.0 (28-May-18)
#83160
Paper page: 230
In task_requests_spec.rb, the let statement is the first time a factory is used to _create_ a task that has no project. This will fail, since the belo...more...
  • Reported in: P1.0 (28-May-18)
#83161
Paper page: 230
The task_requests_spec.rb on page 230 should only introduce the testing of the false case, as the text only refers to it, and asserts that the test wo...more...
  • Reported in: P1.0 (28-May-18)
#83162
Paper page: 231
First paragraph after the code listing, last sentence: Note that... completing the test here Should be: completing the task here. --Yong B...more...
  • Reported in: P1.0 (28-May-18)
#83163
Paper page: 233

Second paragraph:

back to the its source

Should be:

back to its source

--Yong Bakos

  • Reported in: P1.0 (28-May-18)
#83164
Paper page: 235
Fifth paragraph, last sentence: of the form render "projects/data_row, project: @project" Should be: render "projects/data_row", project: @pr...more...
  • Reported in: P1.0 (28-May-18)
#83165
Paper page: 236
After implementing the use of the helper to pass the view test, the test fails due to a problem in Project#on_schedule? that raises an FloatDomainErro...more...
  • Reported in: P1.0 (28-May-18)
#83166
Paper page: 238
It would be cool to see just a little more in the Using Presenters section where the reader is guided to swap out the helper calls with the new Projec...more...
  • Reported in: P1.0 (29-May-18)
#83175
Paper page: 242
In the test_helper.rb code listing, the require statement: require 'mocha/mini_test' is deprecated, and should be: require 'mocha/minitest' ...more...
  • Reported in: B2.0 (04-Feb-18)
#82749
PDF page: 245

When you run *racks* test -> (rails? rake?)--Ian Fleeton

  • Reported in: P1.0 (10-Mar-18)
#82891
Paper page: 245
The line require test_helper ... as the test_helper file should be The line require "test_helper" ... as the test_helper.rb file --Yong Bak...more...
  • Reported in: P1.0 (30-May-18)
#83185
Paper page: 247
In the code listing for test/models/project_test.rb, the description: "a project with no tests is estimated" Should be: "a project with no ta...more...
  • Reported in: P1.0 (30-May-18)
#83186
Paper page: 249
Similar to errata suggestion on page 242. The require statement: require 'mocha/mini_test' is deprecated, and should be: require 'mocha/mi...more...
  • Reported in: P1.0 (04-Jun-18)
#83221
Paper page: 257

Last paragraph. asset_select -> assert_select

--Yong Bakos

  • Reported in: P1.0 (06-Jun-18)
#83234
Paper page: 265
Fourth paragraph: "And the test passes as is, which should be a little suspicious." This is a little misleading, because running the suite displ...more...
  • Reported in: P1.0 (06-Jun-18)
#83235
Paper page: 267
Last paragraph: "With that addition to the system tests..." should be: "With that addition to the system, controller and request tests..." ...more...
  • Reported in: P1.0 (12-Jun-18)
#83251
Paper page: 278
The first code listing, implementing #index, seems to forget that the previous implementation used a ProjectPresenter. This newest listing should fit ...more...
  • Reported in: P1.0 (12-Jun-18)
#83252
Paper page: 281
It is not clear to the reader why the new tests on this page are depicted in the new file spec/requests/task_requests.rb rather than the existing spec...more...
  • Reported in: P1.0 (12-Jun-18)
#83253
Paper page: 281
There's a slightly larger technical oversight here. The code listing for task_requests.rb is invalid. You can prove this by running the test explicitl...more...
  • Reported in: P1.0 (12-Jun-18)
#83254
Paper page: 281
The tests here in the listing for spec/requests/task_requests.rb do not need the :js annotation - they don't rely at all on client-side javascript. Th...more...
  • Reported in: P1.0 (16-Jun-18)
#83267
Paper page: 288
Toward the end of the page, when describing the belongs_to declaration, the use of 'require: false' is incorrect. It should be 'required'. Better yet,...more...
  • Reported in: P1.0 (16-Jun-18)
#83268
Paper page: 288
The has_many declaration at the end of the page is missing a colon after 'dependent'. It should read: has_many :tasks, dependent: :nullify --Yon...more...
  • Reported in: P1.0 (16-Jun-18)
#83269
Paper page: 289
The listing for shows_twitter_avatar_spec.rb uses the term "gravatar" which is an avatar service, and not relevant here. Should just be "avatar" as th...more...
  • Reported in: P1.0 (16-Jun-18)
#83270
Paper page: 289
The test needs the :js annotation/option. Because in previous chapters the client now uses ajax to retrieve the tasks and append them to the dom. Othe...more...
  • Reported in: P1.0 (16-Jun-18)
#83271
Paper page: 289
The url for the twitter profile image is not correct. As of this writing, Rappin's twitter avatar url is: ".../profile_images/950537388518006785/Wu...more...
  • Reported in: P1.0 (15-Jul-18)
#83372
Paper page: 334
The code listing at the bottom of the page has an incorrect require: require_relative "../active_record_test_helper" Should be: require_relat...more...
  • Reported in: P1.0 (16-Jul-18)
#83375
Paper page: 334

The code listing at the bottom of the page is for test/models/project_test.rb but should be for spec/models/project_spec.rb.
--Yong Bakos

  • Reported in: P1.0 (16-Jul-18)
#83376
Paper page: 336
When making the same changes as the author, and running the tests in project_spec.rb, an error is raised due to not including the Sizeable module and ...more...