1

このURLにアクセスする必要があります: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

したがって、このURLでファイルを解凍し、このファイル名をparamとしてメソッドmymethod(filename)に送信するにはどうすればよいですか?また、これを毎日自動的に行う方法についてアドバイスを提供しますか?

4

1 に答える 1

2

linuxzipコマンドを直接使用できますsystem "cd #{Rails.root}/#{zip_path}; zip -qr #{zip_file_name}.zip #{zip_file_name};

またはルビージップジェムを使用する

  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`
于 2012-12-13T09:52:53.783 に答える