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 1 year 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
CKHwc LiJHB

#40971: A scene later, their soft, cooing voices and warm shoulder rubs or knee squeezes represent that glowing honeymoon phase right after making up. , --NeUeKYISMwrlJbb

B1.05
10-Oct-09
RjKYy GMqub

#40743: doors.txt;10;15--zUJIHHRRlaRoigVEj

B1.01
15-Sep-09
tFraX kvnDx

#41056: There is a place for Head Start. , --FhznpGiJx

B1.03
22-Oct-09
14

#37437: rake migrate is enough, no need to rake create before that--Reuben Sivan

P1.0
02-Feb-09
18
#37296: re: puts events.map(&:name) The frequent use of the &:method_name syntax in this book warrants some explanation. As far as I can tell, the...more...
P1.0
26-Jan-09
21

#37446: I'd suggest the reader at this point to add a search.html.erb file to display the search results--Reuben Sivan

P1.0
02-Feb-09
22

#37427: the method copy in this page is incomplete. The online code has it right.--Reuben Sivan

P1.0
01-Feb-09
26
#37451: in registrations/index.html.erb, the following line of code: for registration in @registrations should be for registration in @event.regi...more...
P1.0
02-Feb-09
32

#33955: Second to the last paragraph, last line, should probably say "as we'll see in *a* minute"

P1.0
13-Aug-08
50
#41710: On the bottom of page 50, it says, "we can mix in our custom validation methods only when we need them." I don't understand. They're always ...more...
B1.06
05-Dec-09
70
#33413: The exisiting_task_attributes POST parameter example shows the hash of the existing task as and array of hashes. I think it is actually just ...more...
P1.0
31-Jul-08
72
#40573: In the first code example, it shows that "existing_task_attributes" references an array of hashes. I think it just references a hash, and the...more...
P1.0
27-Aug-09
73

#33044: The recipe is formatted differently from the others (has no "problem", "ingredients", "solution", etc. tabs). This looks messy--vzakharov@gmail.com

P1.0
14-Jul-08
73
#31852: Hi, there's a delete of a task from inside an iterator. I don't think that's safe, you'll not get to the end of the collection there. I had a ...more...
P1.0
02-May-08
90
#32352: For the upload images with thumbnail you have the migration file for the Covers. I don't see a migration file for the actual Albums. Can you...more...
P1.0
10-Jun-08
94
#31878: rescue and then just return false eats all exceptions (I for example had a type in the code), in my point of view this is very dangerous. Don'...more...
P1.0
05-May-08
98
#34712: in the save method of the AlbumService, you have: if @cover.new_record? @album.cover.destroy if @album.cover @cover.album = @album ...more...
P1.0
01-Oct-08
117
#31675: DynamicMetaTags has this code which fails on IE: def meta(name, content) %(<meta name="#{name}" content="#{content} />" ) end should...more...
B1.06
16-Apr-08
135
#41718: It says, "String-based fields (for example, the MySQL VARCHAR type) can often be easily indexed directly in the database where appropriate." ...more...
B1.06
05-Dec-09
139
#41719: It says, "you may want to change the name of the pid_file for the three environments so that you can run servers for each environment simultan...more...
B1.06
05-Dec-09
140
#41720: It says "Calling find_by_contents turns around behind the scenes..." However, there's a huge amount of space after "Calling". Maybe it's jus...more...
B1.06
05-Dec-09
147
#31886: After the two rake commands on the 4th & 5th lines of p147, it says: "(If you're into shortcuts, these THREE Rake tasks..." I believe th...more...
P1.0
05-May-08
156
#36446: Assuming that the sample results from Article.publicly_viewable and Article.premium are sorted by id, wouldn't Article.publicly_viewable.premi...more...
P1.0
15-Dec-08
162

#34949: error_handling_form_builder.rb lists helpers in a series of %w(...) clauses. collection_select is duplicated --Brett Hughes

P1.0
07-Oct-08
162
#31672: Keep Forms Dry, error_handling_form_builder.rb defines array of helpers; two are removed in the line "%w(label fields_for)" -- this should als...more...
B1.06
15-Apr-08
171
#33957: OrdersController should show samples of all actions not just NEW and CREATE because you are likely going to need them. This would also disting...more...
P1.0
13-Aug-08
188

#32079: recipe #32 is a potential security problem.
Sending email.
--Michael Richardson

P1.0
18-May-08
196

#41712: It says, "The encrypt method creates a new instance of the chosen cipher." I'm guessing that' it's actually Cipher.new that creates the new instance.--Shannon -jj Behrens

B1.06
05-Dec-09
204
#41721: In the "Discussion" section for "Process Credit Card Payments", it'd be useful to mention that authorize.net has a customer information manage...more...
B1.06
05-Dec-09
211
#41722: I'm looking at Geocoding/app/views/restaurants/search.html.erb. It's interesting to note that "restaurants" is pluralized, but "miles" isn't....more...
B1.06
05-Dec-09
212
#32277: In the restaurants.html.erb layout file the line containing the google maps API key has a return character. When accessing the internet throug...more...
P1.0
05-Jun-08
212
#33845: I think it should be mentioned where to get the class S3Uploader and what does it do (does it erase the filesystem files?, does it save the th...more...
P1.0
09-Aug-08
216
#32679: If you don't use the "set_no_auto_load true" option described later in the recipe, the args passed to the create method will be nil which caus...more...
P1.0
07-Jul-08
235
#41891: The -otherwise excellent- recipe contains an nginx conf. snippet to make sure all requests return the maintenance page: if ($reques...more...
P1.0
22-Dec-09
235
#41717: I'm reading the "Send Lightweight Messages" recipe. I'm worried that if the rake task crashes after getting the task, the task will be lost. ...more...
B1.06
05-Dec-09
238

#33354: Broken link to March Chung's plug-in.--Lauri Lehtinen

P1.0
29-Jul-08
239

#34113: creating the worker as per the example, the job_key is not returned, though the code seems to work otherwise

P1.0
18-Aug-08
242
#40239: It may be obvious to those that have been doing Rails for a while but for new folks you might want to mention that the Backgroundrb requires t...more...
P1.0
28-Jul-09
288

#41713: It says, "One fairly unique feature of Shoulda is nested contexts." RSpec has this too, right?--Shannon -jj Behrens

B1.06
05-Dec-09
291
#31680: In the first set of code examples on the page, a list of caching commands to execute through the console, in the last example of that section:...more...
B1.06
17-Apr-08
297
#31955: This recipe doesn't work. If I type Status::PENDING on the console, I always get a NameError: uninitialized constant Status::PENDING Maybe ...more...
P1.0
09-May-08
297
#32253: It should be mentioned that the caches_constants method does not play nice with tests (at least in Rails 2.0.2). Apparently fixtures are lo...more...
P1.0
03-Jun-08
300
#31659: I still get the "can't Fixnum into String" error when loading a page with '?browser_profile!' appended to the URL. This was reported for th...more...
B1.06
13-Apr-08
301

#41711: It says "rake:test:acceptance". I think this should be "rake test:acceptance".--Shannon -jj Behrens

B1.06
05-Dec-09
323

#37956: This is of little importance, but the second line in the "Problem" paragraph should probably start with "by HIPAA" (instead of "by HIPPA")--Jan Gänsler

P1.0
25-Feb-09
366
#41714: In this code, the salt is configured once for each environment. It'd be better if each and every piece of data was encrypted with a different...more...
B1.06
05-Dec-09
368

#41715: I see "proxy_set header X_FORWARDED_PROTO https;". What happens if the user uses HTTP instead of HTTPS and manually sets that header?--Shannon -jj Behrens

B1.06
05-Dec-09
370
#41716: This recipe will redirect the user to HTTPS if he uses HTTP. However, if you accidentally submit a credit card over HTTP, it's too late--the ...more...
B1.06
05-Dec-09
380
#32384: RE: subdomains as account keys: There's a weird issue with Leopard and request.subdomains -- I found the solution on the rails wiki (yeah, ...more...
P1.0
14-Jun-08
389

#33045: "Bibliography" section is given as a part of "Big picture recipes"--vzakharov@gmail.com

P1.0
14-Jul-08
394

#32022: Index item for "Konkel, William" should be "Konkel, Warren".--Mike Clark

P1.0
16-May-08
429
#41723: In the "Discussion" section of "Give Users Their Own Subdomain", I think you should add a few more caveats. If you give users their own sub...more...
B1.06
05-Dec-09
432
#41724: It says: message = (String === message ? message : msg.inspect) Is it really supposed to say "String === message"? Is that really ...more...
B1.06
05-Dec-09
433

#41725: In recipes_log_formatter.rb, it says:

.gsub(/\n/, '').strip

Why not replace newlines with spaces? That would be less confusing.--Shannon -jj Behrens

B1.06
05-Dec-09