2011-06-17 28 views
0

我需要一種方式來實現延期FTP上傳到不同的服務器,在Rails3應用程序。這將是情景:Rails3延期ftp上傳

  1. 用戶建立一個完整的文件和子文件夾,用一個簡單的Rails3中CMS (DONE)
  2. 當用戶結束他的工作,他會點擊一個部署按鈕。
  3. 系統接受控制並存儲用戶請求。
  4. 系統將控制權交還給用戶,這樣他就可以處理其他事情。
  5. 與此同時系統啓動10 FTP上傳相同的文件夾。
  6. 上傳結束後,它將在某處存儲其狀態。
  7. 用戶可以隨時查看特定頁面上的部署狀態。

上傳的文件夾大小將從600Mb到1Gb。他們將包含PNG圖像,小mp4電影和xml文件。

Web服務器和所有的ftp服務器將在同一個網絡,同一個子網上。現在不需要額外的安全措施。 我完全不熟悉異步或延遲作業。應用程序將只有一個或兩個用戶:不需要同時處理大量的部署請求。

我該如何完成這項任務?如果您需要更多信息,請在評論中提問。

回答

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類中更有意義,因爲您將更新部署狀態。