Hi -- On Tue, 26 Jun 2007, Ari Brown wrote: > Once again, more questions. > > So this is pertaining to my implementation of the name picker app. When I > pick a random name, I then proceed to check if it matches any name in the > used_names file. However, I keep getting a private method error when I first > choose a random line. > ERROR > -----------------------------------------| > namePicker-cli.rb:24:in `random': private method `chop' called for > nil:NilClass (NoMethodError) > from namePicker-cli.rb:22:in `open' > from namePicker-cli.rb:22:in `random' > from namePicker-cli.rb:44 > > CODE > ----------------------------------------| > def random > > until @valid == true > File.open(@input_file) do |f| # Open the file > lines = f.readlines # Read the lines > chosen_one = lines[rand(lines.size) + 1].chop # Select a random one > end > ----------------------------------------| > > I have no clue why I'm getting this, and I'm almost in tears because my > computer doesn't like me. Help? Let's say lines has 10 elements. rand(11) gives you a number between 0 and 10, inclusive. Adding 1 gives you a number between 1 and 11. Since the last index of lines is 9, that means that if you get 10 or 11, you're indexing nil (lines[10] or lines[11]). So... you probably want lines[rand(lines.size)]. (You probably also want to do something to update @valie :-) David -- * Books: RAILS ROUTING (new! http://www.awprofessional.com/title/0321509242) RUBY FOR RAILS (http://www.manning.com/black) * Ruby/Rails training & consulting: Ruby Power and Light, LLC (http://www.rubypal.com)