From: Gennady Bystritsky Date: 2008-05-31T09:38:10+09:00 Subject: Re: Silly issue with if / else with pingecho > -----Original Message----- > From: khurrum1@gmail.com [mailto:khurrum1@gmail.com] > Sent: Thursday, May 29, 2008 8:25 AM > To: ruby-talk ML > Subject: Silly issue with if / else with pingecho > > I'm positive that this is something incredibly silly. I have a text > file > with computer names. I'm assuming that if a computer returns a ping > then > it exists. To check this I have the following in a script: > > def computer_exists?(computername) > Ping.pingecho(computername) > end > > file = File.new(FILENAME, "r") > while (line_item = file.gets) > line_item = line_item.gsub(/\s+$/, $/) #remove trailing white Here you do not remove trailing whitespace, but rather replace it with a single "\n" (default value of $/). This will work as you wanted: line_item = line_item.gsub(/\s+$/, "") #remove trailing white Or as you correctly concluded in your follow-up reply (I think), same in your case can be achieved with 'chomp': line_item = line_item.chomp However, I would use 'strip' to remove both leading and trailing whitespace, just to be a little bit more friendly with the file format: line_item = line_item.strip > space > > puts "Working on #{line_item}" > > if computer_exists?(line_item) > deploy(line_item) > else > puts "Timed out" > end > > end > file.close > > The file contains three computer items: > ComputerA > ComputerB > ComputerC > > When I go to irb and I do Ping.pingecho('ComputerA') it turns it as > true. All three computer exist and are pingable. However, when I run > the > above code, ruby outputs Computer A and Computer B as Timed out but > Computer C runs the deploy method. > > If I add a ComputerD, then ComputerA,B,C say time out and only Computer > D runs the deploy method. > > What have a messed up? > > Thank you. > -- > Posted via http://www.ruby-forum.com/. Regards, Gennady.