Этот код может читать файл 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.

Спасибо

3 ответа

Решение

Как насчет использования 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, но у вас есть идея, верно?:)

Open-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

Этот вопрос имеет мало общего с FasterCSV, так как вы загружаете весь файл в строку в любом случае. И тогда возникает проблема: "Как мне извлечь данные из URL в строку?"

Другие вопросы по тегам