We try to keep our books accurate, but sometimes mistakes creep in. This page lists the errors submitted by our astute readers. If you've found a new error, please submit it.

The latest version of the book is P1.0, released about 7 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.

Key: Typo Tech. Error Suggestion Not a problem Next edition

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

(To find out what version you have, look at the copyright page, a few pages in from the front of the book. If it says (say) 'Second Printing', then here it'll be P2.0. If there are interim PDF releases in that printing, they'll be 2.1, 2.2, and so on.)

PDF Paper Description Found in Fixed in
all
#42579: I now realize that most of the examples as published are no longer current. It would have been helpful to note this on the website and alerti...more...
P1.0
30-Mar-10
0

#26932: Download section on the website refers to "Scripting for Testers" instead of the actual title.--brandon

P1.0
04-Feb-07
15

#26964: > The third project visits to a website, --Dan Tripp

P1.0
09-Feb-07
17
#27045: Hi I am trying to find a site/forum dedicated to the excercises in this book. A place where people can talk about their solutions and discu...more...
P1.0
28-Feb-07
19
#26983: Instead of suggesting WinZip as a zip program for Windows (shareware), I recommend suggesting the open source zip program from SourceForge cal...more...
P1.0
13-Feb-07
20
#26880: In the first paragraph of section 2.2, second sentence, you have, "The comand-line interpreter is a program that lets you command the compiler...more...
P1.0
25-Jan-07
21

#26965: > The twiddle (~) means your home folder.

I like that you call it a "twiddle" but it's formally known as a "tilde."--Dan Tripp

P1.0
09-Feb-07
23

#27089: In the footnote 3, first sentence: Change "...message send here ..." to "...message sent here.."--ichael Kernaghan

P1.0
03-Mar-07
24
#26881: In the second to the last sentence on the page, you have, "If you're typing the command line ...". It should probably say, "If you're typing ...more...
P1.0
25-Jan-07
25
#30621: For us real neophytes, it would be helpful if the text said "open your text editor" when applicable, at least for the first few chapters until...more...
P1.0
28-Jan-08
27
#28149: ref. exercise 3.9.2. When you say a file is unchanged you usually mean the contents of the file remain the same. Thus I'd recommend changing...more...
P1.0
28-Mar-07
32
#26967: "I encourage you to play around with these methods." Possibly confusing for those new to programming, because I don't think the term "metho...more...
P1.0
09-Feb-07
32

#41971: The last sentence on page 32 refers to "the sidebar on page 111" for more info on ri. In my edition, the sidebar is on page 112.--Anna Baik

P1.0
01-Jan-10
35
#26984: For technical readers, Ruby treats all lower-cased "names" as variables and capitalized "names" as constants. The reason why the interprete...more...
P1.0
13-Feb-07
36
#26986: In the last paragraph of section 3.6, "...; puts would do the same for strings without them.)" when talking about how puts displays output fro...more...
P1.0
14-Feb-07
38
#26882: When looking at the source for inventory.rb, it appears that it will work on Windows and MACOSX because their file systems are case preserving...more...
P1.0
26-Jan-07
38

#41315: .readlines is no longer used in the code examples, but there is no explanation why it was dropped.--Mitch Goldman

P1.0
11-Nov-09
38

#42110: old-inventory.txt is not sorted alphabetically, financial-records.xls is listed after old-inventory.txt--Tom G

P1.0
19-Jan-10
40
#30750: Following the code example, the following sentence appears: "The new message is defined at #1." Doesn't this code example define a "method," n...more...
P1.0
13-Feb-08
40

#50471: In the example a = ['zero' , 'un' ,'dos' , 'tre' ] should say 'tres' is 3 in Spanish.

a = ['zero' , 'un' ,'dos' , 'tres' ]--Matias Mascazzini

P1.0
16-Jan-13
40
#47038: At the end of the last sentence of the explanation accompanying the fourth example from the bottom of the page "…message arguments are always ...more...
P1.0
09-May-11
46

#29939: ...new_inventory = File.open(ARGV[1]).readlines... should read ... new_inventory = File.open(ARGV[1].readlines

P1.0
01-Dec-07
58

#36152: The code
"'new-inventory.txt')"
is blue when it should be orange-red.--Andrew Grimm

P1.0
27-Nov-08
59

#26888: In exercise 4, in the second sentence after the irb output, you need a space between "any" and "deposit".--Kim Shrier

P1.0
26-Jan-07
60
#26885: I am somewhat confused by the intent of adding downcase to differences.rb since inventory.rb has already downcase'd all the file names. And o...more...
P1.0
26-Jan-07
60
#28321: A successful build of churn will (as expected) right-justify the subsystems to 14 characters, but the 'prompt-displays' shown at figs 7.2 and ...more...
P1.0
04-Apr-07
60
#50401: svn: Network connection closed unexpectedly tl;dr - root = "ht tp://churn-demo.rubyforge.org/svn" (delete the space between ht and tp) ...more...
P1.0
20-Dec-12
60
#29180: You say that subversion is not required to work on this project...yet you will get different results than the book and you won't be sure if wh...more...
P1.0
01-Jun-07
66

#27451: "... let's define month_before wrong: ..."
should be
"... let's define month_before wrongly: ..."
--Michael Kernaghan

P1.0
08-Mar-07
66
#47934: I use Ruby 1.9.3 and when I try to run churn-tests.rb I get the error: C:\Ruby193\code\churn>ruby churn-tests.rb C:/Ruby193/lib/ruby/1.9...more...
P1.0
10-Nov-11
66
#27034: The printed text is: 'The test will requirechurn.rb.' The typo is there is no space between require and churn. The test should be: 'The test...more...
P1.0
25-Feb-07
72
#26886: In the test template in figure 7.3, you use the letter X to stand for something to be replaced and it occurs three times. My first thought wh...more...
P1.0
26-Jan-07
72
#26891: In bullet item number 4, you state that test methods start with "test_". Another requirement is that the method must have no parameters or th...more...
P1.0
26-Jan-07
74

#26887: In the second paragraph after the running of churn.tests.rb, first sentence, you should have a space between "require" and "churn.rb".--Kim Shrier

P1.0
26-Jan-07
74
#49243: When running the test scripts in the Churn example it should be noted that users running with Ruby >=1.9.2 cannot use the require on the curre...more...
P1.0
01-May-12
75
#44554: Half way through the page, the churn-tests.rb example that shows how to select specific tests has a technical error. prompt> ruby churn-tes...more...
P1.0
10-Aug-10
76
#27531: in the second pice of testing code on the page: def test_subversion_log_with_changes there is an = among the -- in the represenation of a li...more...
P1.0
10-Mar-07
76
#31892: Paragraph : "Suppose that I later change month_before and break it. Then both the direct test_header_format and [...]" I disagree that the...more...
P1.0
06-May-08
77

#29749: In the string being assigned to the variable "root" the svn path should only have one "/" before "var" --Brad Potts

P1.0
05-Oct-07
81
#28386: As others have noted, the svn repository has not been updated in quite a while, making this a boring script to test. I would make the sugge...more...
P1.0
07-Apr-07
82
#44635: In the grayed out "Bugs in Tested Code" section, three lines from the bottom, the sentence states "beginning on page Chapter 21, When Scripts...more...
P1.0
16-Aug-10
82
#27532: Last sentence of the highlight box called "Bigs in Tested Code": The text reads "...beginning on Chapter 21, ..." instead of "...beginning...more...
P1.0
10-Mar-07
82
#28320: There don't seem to have been any changes in the churn-demo subversion repertory recently, so when running churn.rb all the subsystems show ze...more...
P1.0
04-Apr-07
84
#49809: The penultimate line of code in extract_change_count_from [ i.e., "dashed_lines.length - 1"] is marked with a (4), yet this (4) doesn't appear...more...
P1.0
15-Sep-12
85
#26890: In the svn_log method, the URL "svn://rubyforge.org//var/svn/churn_demo" should have only one "/" after rubyforge.org. The correct thing will...more...
P1.0
26-Jan-07
85
#26892: In the box that talks about "What to Test", you mention testing the case where the value to be rounded is 3.5. When dividing an integer by 5,...more...
P1.0
26-Jan-07
85
#26897: The method definition of svn_long is missing a '-'. It is printed as timespan = "-revision 'HEAD:{#{start_date}}'" on this page and in the...more...
P1.0
29-Jan-07
85
#31528: In this def, at the second line, it should be --revision and not -revision: def svn_log(subsystem, start_date) timespan = "-revision 'HE...more...
P1.0
30-Mar-08
85
#50482: In the las line of svn_log says ‘svn log #{timespan} #{root}/#{subsystem}‘ The correct form is with "svn log #{timespan} #{root}/#{subsystem...more...
P1.0
18-Jan-13
85

#27535: in "My Story of Shame" ...
8th line:
reads "...using conference ..."
should read "...using a conference..."
--Michael Kernaghan

P1.0
10-Mar-07
85
#27027: It seems I always get a svn syntax error unless I take off the single quotes around 'HEAD:{2005-01-26}'. This only returns a line of dashes f...more...
P1.0
23-Feb-07
86
#31560: Actually, on page 69, where you make reference to in the last part of page 86, the line : start_date = month_before(Time.now) is at number (3)...more...
P1.0
01-Apr-08
89
#30025: In these code examples, the line svn log #{timespan} #{root}/#{subsystem} appears to be surrounded by single-quotes. But they are actua...more...
P1.0
17-Dec-07
89
#30026: In my system (OS X 10.4, SVN 1.3.1) the line: timespan = "-revision 'HEAD:{#{start_date}}'" does not work. Revision must be preceeded by...more...
P1.0
17-Dec-07
89
#34183: timespan = "-revision 'HEAD:{#{start_date}}'" not only require 2 dashes, but enclosing the revision range in single quotes gives a syntax er...more...
P1.0
22-Aug-08
90
#26898: The last sentence of the "Bugs in Tested Code" box says "I'm doing that on purpose--error handling is deferred to Chapter 21, When Scripts Run...more...
P1.0
29-Jan-07
90

#29208: The sidebar box is crowding the main copy.--Bil Kleb

P1.0
11-Jun-07
90

#41670: "I'm doing that on purpose - ..." that sentence needs to be cleaned up.--Daniel Frank

P1.0
01-Dec-09
90
#49637: The autor didn't mention that we would need subvertion installed. After getting the last version of that SVN (subvertion) I changed a bit the ...more...
P1.0
10-Aug-12
92
#32550: Sentence "The special character + says that the preceding character must be repeated one or more times to match:" Should read, "The special c...more...
P1.0
30-Jun-08
93

#34182: in paragraph 1:
"I had the task of using conference attendee spreadsheet" -- 'a' or 'the' conference spreadsheet--Garold L Johnson

P1.0
22-Aug-08
93
#28360: "We know that this line's change count starts at character 14." A number other than 14 would be better as (when counting spaces) this could b...more...
P1.0
05-Apr-07
94
#50483: With my poor English, it is unclear what operation is evaluated first, apparently contradicts a page later. Something that should be reviewed ...more...
P1.0
18-Jan-13
96
#27381: The bulleted list at the bottom of the page mixes up 1 and -1. The last sentence of the first bullet should read: We'll want another to c...more...
P1.0
07-Mar-07
100
#43818: It's written twice that dot matches any character. This is not true, since it doesn't match newline. Compare the two following: ~>irb irb(...more...
P1.0
15-Jun-10
109

#29755: The snv path being assigned to the "root" variable has an extra forward slash ("/")before the word "var"--Brad Potts

P1.0
07-Oct-07
110
#27814: page 110: line 8th from top of page (including blank line) There is a single quote missing irb(main):045:0 SubversionRepository.new(svn://b...more...
P1.0
17-Mar-07
110
#28362: irb might not indent as shown here. if not, within an irb session, type: conf.auto_indent_mode = true or (better) add this line to your...more...
P1.0
05-Apr-07
117

#27454: #6768 is faulty -- sorry about that, it was me who was confused. The question mentions join as it is meant to be used inside the output method.--Evan A. Zacks

P1.0
08-Mar-07
117

#32209: The argument string on the following line is missing it's opening quote:

irb(main):045:0> SubversionRepository.new(svn://blah.blah.blah')

P1.0
29-May-08
117
#27382: Question 7 confuses a string and an array of strings. The question should read: If you chose to have output's return value be an array of...more...
P1.0
07-Mar-07
120

#26925: The formatting appears to have turned another -- into -.--Jacob Tomaw

P1.0
31-Jan-07
122
#28052: The first code example on page 122 appears to be missing its first line, which would be something like: irb(main):029:0> class ReverseCredent...more...
P1.0
25-Mar-07
136
#29707: The irb example about mid-page suggests text.scan(/Customer.*also/) Surprise! Amazon now capitalizes 'Also'. I suggest adding 'i' after ...more...
P1.0
28-Sep-07
138
#31570: Amazon seems to have added some style sheets here. I had to modify the regex to include "span" like so: /<b.*?><span\sid.*?>(.*?)</span\s*>/ ...more...
P1.0
03-Apr-08
139

#29304: scrape_author does not work with string "field-author-exact", but "field-author" appears to work.--Mark Lynn

P1.0
05-Jul-07
143
#27843: In the first sentence of the second paragraph under section 13.6 "Exercise Yourself", the script "isbn-to-affinity-list.rb" is missing its fil...more...
P1.0
18-Mar-07
145

#29783: In the last sentence "File.glob" should be "Dir.glob"--Brad Potts

P1.0
23-Oct-07
148

#49990: "I suggest you require affinity-list.rb"

Should this be affinity-trip.rb?--Josh Eveleth

P1.0
24-Oct-12
151

#29138: ri File.glob should be ri Dir.glob--Tom Krouper

P1.0
26-May-07
154

#26982: In the staement:
"There--Carl Graff

P1.0
13-Feb-07
156

#50505: The site www.testing.com don't exist any more =(--Matias Mascazzini

P1.0
22-Jan-13
178
#28074: In the second to last paragraph in section 19.1, the last sentence (in parentheses) needs a space between "required" and "test/unit": "You'...more...
P1.0
26-Mar-07
181
#34135: I don't know if this is an error. I'm not able to use setup.rb. After I have run setup.rb I'm still not able to call clash-check.rb from an ar...more...
P1.0
20-Aug-08
184
#27020: I tried to use the "make-s4t-project.rb" script and got an error when trying to execute the default-project.rb script from the site_ruby folde...more...
P1.0
22-Feb-07
186
#26933: There is a problem with the downloadable code described in this section. Two of the tests in s4t-utils fail on Windows (native Windows) when r...more...
P1.0
04-Feb-07
186
#28114: In the first paragraph of the "Your Own Utility Library" sidebar, the last word of the first sentence should be singular ("cost"): "One of ...more...
P1.0
27-Mar-07
187
#28115: In the second paragraph under "rake increment-version", the first sentence has two zeros (in different fonts) where only one is needed: "A ...more...
P1.0
27-Mar-07
189
#28245: In the first sentence of the last paragraph on the page, a space is needed between "included" and "S4tUtils": "...including them whenever y...more...
P1.0
02-Apr-07
195
#28246: In figure 20.2, in the InnerModule definition, "def SomeClass" should be changed to "class SomeClass". This corresponds to line 44 of module-f...more...
P1.0
02-Apr-07
199
#28247: In the paragraph beginning "That's a reasonable error message" (towards the bottom of the page), the second sentence needs a space between "op...more...
P1.0
02-Apr-07
209
#27041: The solution to Exercise 3 in file exercise-3.rb in folder exercise-solutions/error-handling has an error. Note that you define your Reserve...more...
P1.0
27-Feb-07
258
#29835: I am not really sure but I think that you meant if you refer to the example "4 new files; 2 deleted files; 13 files in common" instead of "13...more...
P1.0
05-Nov-07
260
#30625: The printout solution to Exercise 3, using the study files provided and running exercise-1.rb should read: 4 new files; 2 deleted files; 13 fi...more...
P1.0
28-Jan-08
260

#27044: Text is: "The number of messages in common is a little ..."

I think it should be: "The number of elements in common is a little ..."--Chris Meisenzahl

P1.0
28-Feb-07
260
#49382: "Here is the number of new and deleted messages:" In the exercise you refer to the contents of the array as files or elements. Never as mes...more...
P1.0
27-May-12
261
#27351: In the solution to exercise number 5, the last paragraph states that for the first solution of the exercise, the changes 'differences.rb' will...more...
P1.0
06-Mar-07
270

#27613: Line four of the first test set on the page, has 'util' instead of "util". --Michael Kernaghan

P1.0
13-Mar-07
270

#27615: P.S. to previous: Functionally there is no difference between 'util' and "util" in the context of the test but it looks odd and is not explained.--Michael Kernaghan

P1.0
13-Mar-07
281

#27858: In the last code snippet of exercise 7 the method "lines_ordered ... _count" is missing
end
end

--Michael Kernaghan

P1.0
18-Mar-07
283
#27455: Under the Exercise 9 header, in the first paragraph, the second sentence needs a space between "churn.rb" and "requires". Currently it reads "...more...
P1.0
08-Mar-07
283
#27866: In the solution to Exercise 9, one of the class files referenced is formatter.rb. With the Ruby one-click installer v1.8.5-21, another format...more...
P1.0
19-Mar-07
284
#27456: In the last paragraph before the "B.7" header at the bottom of the page, the test files suffix is written incorrectly as "test.rb". It should ...more...
P1.0
08-Mar-07
286
#27638: In the third paragraph (starts with "There's a simple solution"), the second sentence should refer to Counter.count, not Counter.value. It cur...more...
P1.0
14-Mar-07