From: Adam Shelly Date: 2006-07-20T04:06:37+09:00 Subject: Re: maybe I don't understand the .to_a method... Http requests return a two-element array with the response and the data. try : def testget filename #... response,data = Net::HTTP.start(url.host, url.port) {|http| http.request(req) } data # test = testget(filename).split -Adam On 7/19/06, John Fink wrote: > On 7/19/06, Philip Hallstrom wrote: > > > > > I'm attempting to write a little program that uses the Net::HTTP library > > to > > > fetch a text file. The text file has lines broken up by newlines, and I > > > thought I could use the .to_a method to convert a variable into an > > array, > > > but when I do it it puts the entire text file into the first marker on > > the > > > array, and the rest are nil. > > > > > > Here's the program. I know I'm missing something grotesquely obvious, > > and > > > thanks in advance for beating me with the clue stick. > > > > > > What I expected was for test to return what it returns, but test2[0] to > > > return "This" and test2[1] to return "is". Test2[0] returns identical > > > results to test. > > > > > > jf > > > --- > > > > > > require 'net/http' > > > require 'uri' > > > > > > filename = 'test.txt' > > > > > > def testget(filename) > > > url = URI.parse('http://vineland.lib.muohio.edu/' + filename ) > > > req = Net::HTTP::Get.new(url.path) > > > res = Net::HTTP.start(url.host, url.port) {|http| http.request(req) } > > > end > > > > > > test = testget(filename) > > > test2 = test.to_a > > > > test2 = test.split(/[\n\r]+/) > > > > > puts test > > > puts test2[0] > > > puts test2[1] > > > > that would "eat" blank lines though, but gets you closer... > > > > > > > > Aha, split. I've now tried split on arbitrary lines in irb, and it works on > them. But trying split in my little program here yields the following > error: > > testget.rb:13: private method `split' called for # readbody=true> (NoMethodError) > > Googling this hairy error gives me no leads. > > jf > >