2011-06-17 9 views
0

Rails3アプリケーション内の異なるサーバーに遅延FTPアップロードを実装する方法が必要です。Rails3 deferred ftp upload

  1. は、ユーザが自分の仕事を終了すると、単純なRails3 CMS (DONE)
  2. 、彼はデプロイ]ボタンをクリックしてしまうと、ファイルやサブフォルダの完全なフォルダを作成します:これはシナリオになります。
  3. システムは制御を受け取り、ユーザーの要求を保存します。
  4. システンはコントロールをユーザーに返します。この方法で、彼は他のものに取り組むことができます。
  5. 同時に、システムは同じフォルダのアップロード10 FTPのアップロードを開始します。
  6. アップロードが終了すると、ステータスがどこかに保存されます。
  7. ユーザーは、特定のページに移動することにより、いつでも展開状況を確認できます。

アップロードされたフォルダのサイズは、600Mbから1Gbになります。彼らはPNG画像、小さなmp4ムービー、xmlファイルを含みます。

WebサーバーとすべてのFTPサーバーは、同じネットワーク上にあり、同じサブネットにあります。今のところ特別なセキュリティは必要ありません。 私は、非同期ジョブや遅延ジョブに対して全く新しいです。アプリケーションには1人または2人のユーザーしかいないでしょう:同時に多くのデプロイメント要求を処理する必要はありません。

このタスクをどのように達成できますか?さらに詳しい情報が必要な場合は、コメントにお尋ねください。

答えて

1

delay_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クラスの方が意味があると思います。