2012-12-13 78 views
1

我需要去这个网址: http://autospace.by/download/prices.zip自动从网站网址压缩包并解压

而且此文件解压到我的Rails应用程序,但我必须每天都做的每个下午2点,主要的麻烦是在档案中的其他网址的文件是每天更改名称,所以我必须解压缩文件,名称结尾的是,并做一些操作呢?

我现在代码:

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 

所以:我怎样才能解压此URL文件,并将其发送的文件名作为参数去方法的MyMethod(文件名)?并且还建议如何自动每天这样做?

回答

2

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

或使用红宝石zip宝石

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') 

如果您想天天EXCUTE这一点,只需要运行在crontab中这个脚本,例如

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

gem'archive-zip'根据我的代码写这个,如何加入它? – byCoder

+0

在你的母亲身上执行'gem“archive-zip”,并在你的脚本中添加'require'archive/zip'' –

+0

那我怎么能得到文件名呢?如果它可能是13-12name,14-12name等等......我必须将它发送给方法 – byCoder