2012-07-11 62 views
1

我寫了這個rake任務,使我可以從我的應用程序的本地文件系統上的文件中讀取csv文件,但是如何調整它以使其從url讀取文件?該代碼能夠從文件系統讀取CSV文件,但是從URL讀取又怎麼樣?

desc "This class will read a csv file and display its contents on the screen" 

task :read_csv => :environment do |t, args| 
require "csv" 

csv_text = File.read('someFile.csv') 
csv = CSV.parse(csv_text, :headers=>true) 
csv.each do |row| 
    puts row 
end 
end 

希望如果有人能幫助我的代碼或一些當前的鏈接。我發現的大部分鏈接都是針對FasterCSV不屬於ruby的以前版本的rails。

感謝

回答

4

使用NET :: HTTP怎麼樣?

desc "This class will read a csv file from url and display its contents on the screen" 

    task :read_csv => :environment do |t, args| 
    require "csv" 
    require 'net/http' 

    uri = URI('http://www.xxx.ccc.xxx.ca/~xxx/xxx.csv') 
    csv_text = Net::HTTP.get(uri) 
    csv = CSV.parse(csv_text, :headers=>true) 
    csv.each do |row| 
    puts row 
    end 
end 

這只是一個小調整,只從一個URL獲得它,沒有HTTPS,但你明白了吧? :)

+0

如果我想要的HTTPS?你會碰巧有任何引用/鏈接?謝謝 – banditKing 2012-07-11 13:32:20

+0

謝謝這種方法工作:) – banditKing 2012-07-11 13:43:38

+1

是的,如果你想使用HTTPS,看看這個頁面並向下滾動到HTTPS部分:http://apidock.com/ruby/Net/HTTP – markusschwed 2012-07-12 11:36:23

5

開URI幫助讀取遠程文件

require 'csv' 
require 'open-uri' 

csv_text = open('http://www.vvv.hh.yyy.ggg/~hhhh/uuuu.csv') 
csv = CSV.parse(csv_text, :headers=>true) 
csv.each do |row| 
    puts row 
end 
+0

謝謝。這種方法工作:) – banditKing 2012-07-11 13:42:46