Rails3推迟了ftp上传

时间:2011-06-17 14:54:50

标签: ruby-on-rails-3 ftp delayed-job

我需要一种方法在Rails3应用程序中向不同的服务器实现延迟的FTP上传。这将是情景:

  1. 用户使用简单的Rails3 CMS (完成)
  2. 构建一个包含文件和子文件夹的文件夹
  3. 当用户结束工作时,他会点击部署按钮。
  4. 系统接管并存储用户请求。
  5. 系统将控制权交给用户,这样他就可以处理其他事情了。
  6. 同时系统启动同一文件夹的 10 FTP 上传。
  7. 当上传结束时,它会将其状态存储在某处。
  8. 用户可以随时通过访问特定页面来查看部署状态。
  9. 上传的文件夹大小将从 600Mb到1Gb 。它们将包含PNG图像,小mp4电影和xml文件。

    Web服务器和所有ftp服务器将位于同一网络,同一子网中。现在不需要额外的安全性。 我对异步或延迟工作完全不熟悉。该应用程序将只有一个或两个用户:无需同时处理大量部署请求。

    我该如何完成这项任务?如果您需要更多信息,请在评论中提问。

1 个答案:

答案 0 :(得分:1)

设置了delayed_job后,您可以设置一种方法,以便在您开展业务时在后台执行。在这种情况下,部署方法将始终在handle_asynchronously的背景设置中。

class UploadStatus < ActiveRecord::Base

  def deploy
     # write your ftp loop here
     # periodically update this model in the db with the status
  end
  handle_asynchronously :deploy

end

现在,您可以致电@upload_status.deploy(),它将在后台运行。

您也可以编写一个作业方法,但我认为它在ActiveRecord类中更有意义,因为您将更新部署状态。