从网址自动获取zip并解压缩

时间:2012-12-13 09:47:55

标签: ruby-on-rails ruby file-upload zip scheduled-tasks

我需要转到这个网址: http://autospace.by/download/prices.zip

并将此文件解压缩到我的rails应用程序,但我必须每天下午2点进行,主要的麻烦是,其他url的档案文件每天都在更改名称,所以我必须解压缩文件,名称结束哪个是,并用它做一些操作?

我现在的代码:

require 'net/http'
    Net::HTTP.start("autospace.by") do |http|
        resp = http.get("/download/prices.zip")
        open(Rails.root.join('public', 'uploads_prices', "autospace.zip"), "wb") do |file|
            file.write(resp.body)
        end
    end

所以:如何在此网址上解压缩文件,并将此文件名作为参数发送给方法mymethod(filename)?并且还会每天自动提供建议:

1 个答案:

答案 0 :(得分:2)

你可以直接使用linux zip命令system "cd #{Rails.root}/#{zip_path}; zip -qr #{zip_file_name}.zip #{zip_file_name};

或使用ruby zip gems

  gem 'archive-zip'  # Use require_gem for rubygems versions older than 0.9.0.
  require 'archive/zip'

  # Add a_directory and its contents to example1.zip.
  Archive::Zip.archive('example1.zip', 'a_directory')

如果你想每天都执行此操作,只需在crontab中运行此脚本,例如

   `*/5 * * * * /usr/local/bin/ruby  /local/myuser/rubyscript/ftpscript.rb >> /local/myuser/rubyscript/ftplog.txt`