2012-12-13 110 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