’
C:\\Ruby193\\code\\churn>
Is it because I use a different version of Ruby?
By Developers, For Developers
PDF Pg | Paper Pg | Type | Description | Fixed on | Comments |
---|---|---|---|---|---|
20 | ERROR | 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 …”. The word “compiler” should be “computer”. | |||
24 | TYPO | 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 at the command line …”. | |||
38 | SUGGEST | 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 but case insensitive. It is not possible to have two or more files in the same directory whose names differ only by the case of the letters. UNIX based systems other than MACOSX have file systems that are case sensitive. It is possible to have two file names that differ only in case. I think there should be at least a footnote mentioning that it is possible for the inventory.rb program to mis-report the file names which would cause the array subtraction to get erronious results. Or perhaps you should have a UNIX version of inventory.rb that does not invoke downcase on the file name. | |||
60 | SUGGEST | 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 once again, I think that you should mention that this “improvement” which works on Windows and MACOSX does not work on UNIX. | |||
72 | SUGGEST | 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 when I saw that is that the letter X would be replaced by the same string in all three places. I know that you mention in the discussion that X is just a placeholder to indicate where you would want to substitute your own text, but, maybe it would be better to use a different letter in each place, like X, Y, and Z. | |||
74 | TYPO | In the second paragraph after the running of churn.tests.rb, first sentence, you should have a space between “require” and “churn.rb”. | |||
59 | TYPO | In exercise 4, in the second sentence after the irb output, you need a space between “any” and “deposit”. | |||
85 | TYPO | 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 happen but technically speaking, there should only be one “/” there. The same error is in the source in snapshots/churn.v7.rb and all later versions. | |||
72 | SUGGEST | In bullet item number 4, you state that test methods start with “test_”. Another requirement is that the method must have no parameters or that all parameters must be optional. If that is not the case, the unit test code will raise an invalid_test exception. | |||
85 | SUGGEST | 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, it is impossible to have a result that ends in .5. The only way to get a value that ends in .5 is to pass a floating point number into asterisks_for. This seems to me to not be a good example to talk about testing rounding. | |||
85 | TYPO | The method definition of svn_long is missing a ‘-’. It is printed as | |||
90 | TYPO | 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 into Problems, beginning on page Chapter 21, When Scripts Run into Problems—but it’s certainly not unknown for people to do it by accident.” Instead of a page number is says “Chapter 21, When Scripts Run into Problems” again after “on page”. | |||
120 | TYPO | The formatting appears to have turned another — into -. | |||
0 | TYPO | Download section on the website refers to “Scripting for Testers” instead of the actual title. | |||
186 | ERROR | 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 run in a directory containing a space its path. The tests pass from the same directory, when I change my path to use the “short format” names, which contain no spaces. | |||
15 | TYPO | > The third project visits to a website, | |||
21 | TYPO | > The twiddle (~) means your home folder. I like that you call it a “twiddle” but it’s formally known as a “tilde.” | |||
32 | SUGGEST | “I encourage you to play around with these methods.” Possibly confusing for those new to programming, because I don’t think the term “method” has been introduced yet at this point in the book, or if it has, not recently or memorably. My suggestion is to introduce or reintroduce the “method” here. | |||
154 | TYPO | In the staement: | |||
19 | SUGGEST | Instead of suggesting WinZip as a zip program for Windows (shareware), I recommend suggesting the open source zip program from SourceForge called 7-Zip (7-zip.org). | |||
35 | SUGGEST | For technical readers, Ruby treats all lower-cased “names” as variables and capitalized “names” as constants. The reason why the interpreter is complaining on changing values for MyShip is because it’s a constant (note: capitalized name). Constants are meant to be initialized with a value and left alone. It is good practice to use lowercased alphanumeric words for variables and capitalized alphanumeric words for constants. | |||
36 | TYPO | In the last paragraph of section 3.6, “…; puts would do the same for strings without them.)” when talking about how puts displays output from arrays should read “…; puts would do the same for arrays without them.)” | |||
184 | ERROR | 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 folder (after running setup.rb). I am using Mac OSX 10.4 with ruby 1.8.5 (2006-12-25 patchlevel 12) [i686-darwin8.8.1]. /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require’: no such file to load — s4t-utils/capturing-globals (LoadError) | |||
85 | ERROR | 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 from the repository though. I am very light on SVN, but I am wonder if the syntax is correct for my setup. I am running these scripts from the cmd line in Windows XP. | |||
66 | TYPO | The printed text is: ‘The test will requirechurn.rb.’ | |||
209 | ERROR | The solution to Exercise 3 in file exercise-3.rb in folder exercise-solutions/error-handling has an error. Note that you define your Reserver class as follows: class Reserver def release(machine) You need to reverse the order of the following two lines of code: yield machine It should be: puts “Reserved #{machine.name}.” Otherwise, your output will never begin with: Reserved Mycroft. Nice exercise though. | |||
260 | TYPO | 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 …” | |||
17 | SUGGEST | 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 discuss the questions. I"m even willing to setup a site for this, but can’t find a way to contact the author to discuss. I can be reached at: theopensourceguy aatt gmail ddoott com (I’m no Ruby expert and yet I feel this is a perfect way to become one) | |||
23 | TYPO | In the footnote 3, first sentence: Change “…message send here …” to “…message sent here..” | |||
261 | TYPO | In the solution to exercise number 5, the last paragraph states that for the first solution of the exercise, the changes ‘differences.rb’ will have to undergo so it can work in Unix would be made in the ‘compare_inventory_files’ method. But the way I see it, they would have to be made in the ‘inventory_from’ method since this is where the downcasing occurs and where we are entering the list of words that we want to exclude. | |||
96 | ERROR | 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 come first in the sorted list, which will happen if the block returns 1. The second bullet should read: The value of 3 <=> 5 is –1, meaning that 5 comes after 3 in the built-in ordering. The third bullet should read: If the block returned that –1… The last bullet should read: So we negate the result of <=> to convert the –1 into 1… | |||
117 | TYPO | 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 strings (rather than a string), you’ll want to know about join… | |||
66 | TYPO | “… let’s define month_before wrong: …” | |||
117 | SUGGEST | #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. | |||
283 | TYPO | Under the Exercise 9 header, in the first paragraph, the second sentence needs a space between “churn.rb” and “requires”. Currently it reads “churn.rbrequires the other two files”. | |||
284 | TYPO | 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 read “tests.rb” as follows: So as long as I follow the naming convention of ending all test files (and no others) with tests.rb… | |||
76 | TYPO | in the second pice of testing code on the page: | |||
82 | TYPO | Last sentence of the highlight box called “Bigs in Tested Code”: | |||
85 | TYPO | in “My Story of Shame” … | |||
270 | TYPO | Line four of the first test set on the page, has ‘util’ instead of “util”. | |||
270 | SUGGEST | 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. | |||
286 | TYPO | In the third paragraph (starts with “There’s a simple solution”), the second sentence should refer to Counter.count, not Counter.value. It currently reads: Suppose every method that needs the count gets it through Counter.value. | |||
110 | TYPO | page 110: line 8th from top of page (including blank line) | |||
143 | TYPO | In the first sentence of the second paragraph under section 13.6 “Exercise Yourself”, the script “isbn-to-affinity-list.rb” is missing its file extension: “…you may want to model your scripts after isbn-to-affinity-list and…” | |||
281 | TYPO | In the last code snippet of exercise 7 the method “lines_ordered … _count” is missing | |||
283 | SUGGEST | 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 formatter.rb is installed automatically on the path, making it so that calling a different file formatter.rb results in the code not working. In the one-click-installer v1.8.6-25, this is no longer a problem and the file can be named formatter.rb again. It might be good to add a footnote or something indicating this. | |||
122 | TYPO | The first code example on page 122 appears to be missing its first line, which would be something like: | |||
178 | TYPO | In the second to last paragraph in section 19.1, the last sentence (in parentheses) needs a space between “required” and “test/unit”: “You’ve seen examples of this in tests that requiredtest/unit.” It also may be worth considering if “required” should either be changed to the standard text font or changed to “require”. | |||
186 | TYPO | In the first paragraph of the “Your Own Utility Library” sidebar, the last word of the first sentence should be singular (“cost”): “One of the annoying things about the universe is that a net long-term benefit often has a net short-term costs.” | |||
187 | TYPO | In the second paragraph under “rake increment-version”, the first sentence has two zeros (in different fonts) where only one is needed: “A 00 in the first slot…” | |||
27 | SUGGEST | ref. exercise 3.9.2. | |||
189 | TYPO | In the first sentence of the last paragraph on the page, a space is needed between “included” and “S4tUtils”: “…including them whenever you includedS4tUtils would lead…” | |||
195 | ERROR | In figure 20.2, in the InnerModule definition, “def SomeClass” should be changed to “class SomeClass”. This corresponds to line 44 of module-facts/some-module.rb. | |||
199 | TYPO | In the paragraph beginning “That’s a reasonable error message” (towards the bottom of the page), the second sentence needs a space between “open” and “no-such-file”: “…leaving only the line that tries to openno-such-file.” | |||
82 | SUGGEST | 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 zero asterisks and a count of zero. maybe you could cron some changes for us? | |||
60 | TYPO | 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 similar are not correctly justified. | |||
93 | SUGGEST | “We know that this line’s change count starts at character 14.” | |||
110 | SUGGEST | 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 ~/.irbrc file IRB.conf[:AUTO_INDENT] = true see [TH01], p.190 | |||
81 | SUGGEST | 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 suggestion that you have people hard-code the start date to Time.local(2006, 7, 11), since that’s a time when meaningful changes had been made. Of course, this means that your suggested fix for Exercise 1 is invalid. I would recommend: def header (inTime) | |||
151 | TYPO | ri File.glob should be ri Dir.glob | |||
60 | SUGGEST | 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 what you did was right or wrong. Why not just put the svn output in a text file so everyone can play? | |||
90 | TYPO | The sidebar box is crowding the main copy. | |||
139 | ERROR | scrape_author does not work with string “field-author-exact”, but “field-author” appears to work. | |||
136 | SUGGEST | The irb example about mid-page suggests text.scan(/Customer.*also/) Surprise! Amazon now capitalizes ‘Also’. I suggest adding ‘i’ after the regexp. | |||
77 | TYPO | In the string being assigned to the variable “root” the svn path should only have one “/” before “var” | |||
109 | TYPO | The snv path being assigned to the “root” variable has an extra forward slash (“/”)before the word “var” | |||
145 | TYPO | In the last sentence “File.glob” should be “Dir.glob” | |||
258 | TYPO | 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 new files; 2 deleted files; 5 files in common” | |||
46 | TYPO | …new_inventory = File.open(ARGV[1]).readlines… should read … new_inventory = File.open(ARGV[1].readlines | |||
89 | SUGGEST | In these code examples, the line svn log #{timespan} #{root}/#{subsystem} appears to be surrounded by single-quotes. But they are actually back-ticks. If someone (like me) is following along with the printed examples & uses the single-quotes the script won’t work. Looking at the downloadable code revealed the problem. But the presence of back-tics should be obvious looking at the printed code in the book as well. | |||
89 | TYPO | 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 two dashes. The line should read: timespan = “—revision ‘HEAD:{#{start_date}}’” | |||
25 | SUGGEST | 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 it becomes ingrained. The first instance would be under 3.7 on page 25. The book does a good job warning about the difference between typing at the prompt and at irb, but the idea that there is a third “typing venue” is rather glossed over. | |||
260 | TYPO | 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 files in common. | |||
40 | ERROR | Following the code example, the following sentence appears: “The new message is defined at #1.” Doesn’t this code example define a “method,” not a message? If it does in fact define a message, then the references to method on the rest of this page should be changed to match. (I think; correct me if I’m wrong.) | |||
85 | TYPO | In this def, at the second line, it should be —revision and not -revision: def svn_log(subsystem, start_date) Thanx for your great books! | |||
86 | TYPO | 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), not number 2. Thanx for your great book! | |||
138 | ERROR | 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>/ I suppose one could also use a greedy operator to find the second “>” before the group. | |||
76 | ERROR | Paragraph : “Suppose that I later change month_before and I disagree that the ‘direct’ test fails; the ‘bootstrap’ test_header_format | |||
117 | TYPO | The argument string on the following line is missing it’s opening quote: irb(main):045:0> SubversionRepository.new(svn://blah.blah.blah’) | |||
92 | ERROR | Sentence “The special character + says that the preceding character must be repeated one or more times to match:” (As it is currently stated, the example’abc’ should not match since the b is not repeated) | |||
181 | ERROR | 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 arbitrary folder. I’m on Mac OS X. I don’t seem to have any site_local folder which is unfortunate since it is mentioned repeatedly. Files seems to installed in /System/Library/Ruby.framework… In Mac OS X Leopard ruby has been framwork’ized could this have something to do with my problems? | |||
93 | TYPO | in paragraph 1: | |||
89 | ERROR | timespan = “-revision ‘HEAD:{#{start_date}}’” | |||
58 | TYPO | The code | |||
38 | SUGGEST | .readlines is no longer used in the code examples, but there is no explanation why it was dropped. | |||
90 | TYPO | “I’m doing that on purpose - …” that sentence needs to be cleaned up. | |||
32 | TYPO | 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. | |||
38 | TYPO | old-inventory.txt is not sorted alphabetically, financial-records.xls is listed after old-inventory.txt | |||
all | SUGGEST | 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 alerting folks before they purchase this book. | |||
100 | ERROR | It’s written twice that dot matches any character. This is not true, since it doesn’t match newline. Compare the two following: ~>irb I use the single-line mode flag (i.e. ‘m’) in the second case. This feature is sometimes called dot-matches-newline or dot-all. | |||
75 | ERROR | Half way through the page, the churn-tests.rb example that shows how to select specific tests has a technical error. prompt> ruby churn-tests.rb —name=/asterisks/ | |||
82 | TYPO | In the grayed out “Bugs in Tested Code” section, three lines from the bottom, the sentence states | |||
40 | ERROR | At the end of the last sentence of the explanation accompanying the fourth example from the bottom of the page “…message arguments are always in parentheses.)” is not true. “a.delete_at 0” works just fine. | |||
66 | ERROR | 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 ’ Is it because I use a different version of Ruby? | |||
74 | SUGGEST | 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 current dir so running $ ruby churn-tests.rb will result in an error churn not found. Users need to use either require_relative or some other method of loading files from the same directory as the running script. | |||
260 | TYPO | “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 messages. But in the solution you repeatedly refer to “messages”, which is confusing. Further, the exercise asked for: “how many files were unchanged”, NOT how many elements in common they two lists have. My solution was: puts old_inventory.length - deleted_files.length I ended up with the 13, the same result as “files in common” (as other errata reporters found, as the numbers in the text are completely wrong), but my way makes more sense to me, as it more directly answers the original question. | |||
90 | ERROR | 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 code to force it to work, I took out the single quotes around HEAD{#{start_date}} and instead of Time.now, I put Time.local(2005, 7, 30) (without those changes we couldn’t follow along the book). def month_before(a_time) def svn_date(a_time) def header(an_svn_date) def subsystem_line(subsystem_name, change_count) def asterisks_for(an_integer) def change_count_for(name, start_date) def extract_change_count_from(log_text) def svn_log(subsystem, start_date) `svn log #{timespan} #{root}/#{subsystem}` if $0 == FILE puts header(start_date) besides that: Great book!! Thanks!! | |||
84 | TYPO | 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 to be referenced later in the book. | |||
148 | TYPO | “I suggest you require affinity-list.rb” Should this be affinity-trip.rb? | |||
60 | ERROR | svn: Network connection closed unexpectedly tl;dr - root = “ht tp://churn-demo.rubyforge.org/svn” when running: prompt> svn log —revision ‘HEAD:{2005-07-30}’ svn://rubyforge.org/var/svn/churn-demo/inventory or even just running the command: svn log svn://rubyforge.org/var/svn/churn-demo So running churn.rb would result in: salman@saleheen:~/everyday_scripting/churn$ ruby churn.rb According to the rubyforge FAQ: Anonymous cvs/svn checkouts and exports keep failing Sometimes you’ll see a svn: Connection closed unexpectedly error message when you try to export or check out a Subversion repository using anonymous Subversion - e.g., svn co svn://rubyforge.org/var/svn/rspec/trunk/rspec rspec. Or with CVS, the message will be something like cvs [checkout aborted]: end of file from server (consult above messages if any). This is probably happening because we throttle anonymous connections based on server load (using xinetd). You may instead want to use HTTP for anonymous Subversion checkouts instead -e.g., svn co ht tp://rspec.rubyforge.org/svn/trunk/rspec rspec. (ht tp://rubyforge.org/docman/view.php/5/460/faq.html#anon_svn_failure) Now if you run the command with the corrected http vs svn address you would get correct output: $ svn log —revision ‘HEAD:{2005-05-05}’ ht tp://churn-demo.rubyforge.org/svn/audit r9 | marick | 2006-08-08 19:35:36 –0500 (Tue, 08 Aug 2006) | 1 line r7 | marick | 2006-08-08 19:32:47 –0500 (Tue, 08 Aug 2006) | 1 line r3 | marick | 2006-08-07 23:22:26 –0500 (Mon, 07 Aug 2006) | 1 line reversal story first touches Thus, in order to correct the output of churn, change your svn_log definition to have this definition of root: | |||
40 | TYPO | In the example a = [‘zero’ , ‘un’ ,‘dos’ , ‘tre’ ] should say ‘tres’ is 3 in Spanish. a = [‘zero’ , ‘un’ ,‘dos’ , ‘tres’ ] | |||
85 | ERROR | In the las line of svn_log says ‘svn log #{timespan} #{root}/#{subsystem}‘ | |||
94 | SUGGEST | With my poor English, it is unclear what operation is evaluated first, apparently contradicts a page later. Something that should be reviewed for a future edition. | |||
156 | ERROR | The site www.testing.com don’t exist any more =( | |||
27 | TYPO | In exercise 3.9.3 do you mean the first paragraph to say “the number of files added in new-inventory.txt” | |||
32 | ERROR | My downloaded tgz code doesn’t have the file “new-inventory.txt”, so in order to File.open it, I first create it with File.new - but as a new file obviously doesn’t have the content mentioned in File.open.readlines |