2

DropBox フォルダーにファイルを保存するときに DropBox がファイルをアップロードするのと同じように、指定したフォルダーにファイルが追加/ドラッグ/保存されたことを OS が認識するたびに、ドキュメントを GoogleDocs にアップロードしたいと考えています。

これはRubyで何が必要ですか?パーツは何ですか?

  • ファイルが保存されたときにどのようにリッスンしますか?
  • ファイルがフォルダーに追加されたとき、どのようにリッスンしますか?

GoogleDocs API を使用してこれらのイベントを取得したらアップロードする方法は理解していますが、これがどのように機能するかはわかりません。

アップデート

ファイルがディレクトリに追加されたかどうかを確認する方法はまだわかりませんが、Guard for ruby​​ のおかげで、ファイルがいつ保存されたかをリッスンするのは非常に簡単になりました。

4

6 に答える 6

3

これに直面した場合は、git や bzr などを使用してバージョン チェックを処理し、スクリプトから add を呼び出して commit し、変更された (したがってアップロードする必要がある) ファイルを監視します。

これにより、ファイルに対する完全なバージョン管理の利点が追加され、ほとんどがクロスプラットフォームです (各プラットフォームのバイナリを含める場合)。

これはリスニングの問題を処理するものではなく、何かが変更されたことを知ったときに何をするかを示していることに注意してください。(さまざまなルートを介して) タスクをスケジュールすることもできますが、内部で適切な VCS を使用するというアイデアは気に入っています。

私はちょうどこれを見つけました: http://www.codeforpeople.com/lib/ruby/dirwatch/

その効率性や信頼性を保証することはできないので、読み直す必要があります。SQLite を使用しているように見えるので、10 秒に 1 回 (またはその線に沿って) 手動でチェックする方がよいかもしれません。

于 2009-11-06T23:02:33.657 に答える
1

Ruby には、ファイルの更新を「リッスン」する組み込みの方法が含まれていません。純粋な Ruby に固執したい場合は、ファイルがいつ保存されるかに関係なく、固定されたスケジュール (たとえば 5 分ごと) でアップロードを実行することをお勧めします。

これが受け入れられない場合は、この種のことをサポートする Java でアプリ (または少なくともその一部) を作成してみてください。アプリの Ruby と Java の部分を統合するには、JRuby を参照してください。

于 2009-11-06T23:01:17.663 に答える
1

ここに純粋なルビーの宝石があります:

http://github.com/TwP/directory_watcher

于 2010-03-13T21:35:13.293 に答える
0

I don't know the correct way of doing this, but a simple hack would be to have a script running in the background which checks the contents of a bunch of folders every n minutes and uses the associated timestamps to determine if the file was modified in that span of time

于 2009-11-06T22:52:16.960 に答える
0

監視サービス/クライアントを作成するには、ここでネイティブ OS コードが必要になることは間違いありません。クロス プラットフォームにしたい場合は、C++ を選択します。たとえば、.Net を使用することにした場合は、FileSystemWatcher クラスを使用して必要なことを実現できます (ドキュメントと関連記事はこちら)。

于 2009-11-06T22:54:02.700 に答える
0

古いスレッドのようなものですが、私は似たようなことをすることに直面していて、私の考えを投げかけたいと思っていました. 私が行くルートは、特定のディレクトリを監視してタイムスタンプをチェックする Ruby スクリプトを用意することです。すべてのファイルがアップロードされると、スクリプトは最新のタイムスタンプを保存し、ディレクトリを再度ポーリングして、ファイル/フォルダーが追加されているかどうかを確認します。ファイルが見つかった場合、スクリプトはそれらをアップロードし、グローバル タイムスタンプなどを更新します。

欠点は、Ruby スクリプトを継続的に (またはサービスとして) 実行するように設定するのがやや面倒なことです。しかし、それは圧倒的な作業ではなく、適切に検討する必要があるだけです.

また、ユーザーが Ruby をインストールするのに十分な能力があるかどうか、またはすべてをワンクリック インストーラーにパッケージ化する必要があるかどうかにも依存します。それは、私にとって、理解するのが最も難しい部分です。

于 2012-07-31T02:32:50.247 に答える