Rake任务下载并解压缩

时间:2015-09-19 17:25:04

标签: ruby-on-rails ruby rake unzip

我想每周更新 cities 表,以反映全球城市的变化。我正在为此目的创建一个Rake任务。 如果可能,我希望在不添加其他gem依赖的情况下执行此操作。

压缩文件是geonames.org/15000cities.zip上公开提供的压缩文件。

我的尝试:

require 'net/http'
require 'zip'

namespace :geocities do
  desc "Rake task to fetch Geocities city list every 3 days"
  task :fetch do

    uri = URI('http://download.geonames.org/export/dump/cities15000.zip')
    zipped_folder = Net::HTTP.get(uri) 

    Zip::File.open(zipped_folder) do |unzipped_folder| #erroring here
      unzipped_folder.each do |file|
        Rails.root.join("", "list_of_cities.txt").write(file)
      end
    end
  end
end

rake geocities:fetch

返回
rake aborted!
ArgumentError: string contains null byte

详细说明,我尝试解压缩文件并将其保存到 list_of_cities.txt 文件中。一旦我完成了这个方法,我相信我可以找出如何根据文件更新我的数据库。 (但是如果你对如何最好地处理实际数据库更新有意见,除了我计划的方式之外,我也很乐意听到它们。但这似乎完全不同。)

0 个答案:

没有答案