Hallo Liste, schlage mich seit einigen Tagen mit einem Problem herum und sehe einfach kein Land.
Zur Situation: Ich habe einen kleinen Daemon in meine Rails app integriert, der ein Folder, dass als Dropbox dient, auf neue Dateieingänge überwachen soll. Ist eine Datei eingegangen, soll diese in ein temporäres Verzeichnis geschoben werden, auf das der User erstmal keinen Zugriff hat. Nun stehe ich vor folgendem Problem: Kopiere ich zum Beispiel über das Netzwerk eine große Datei in die Dropbox macht sich der Daemon fröhlich daran diese zu verschieben, obwohl sie noch gar nicht vollständig ist. Ich würde daher gerne vorher überprüfen, ob ein anderer Prozess grade an der Datei schreibt. Leider hat File kein Attribut um das filelock ab zu fragen, sondern nur eine Methode um es zu setzen... Hatte schon überlegt bei jedem Durchgang des Loop zu schauen, ob sich die Größe der Datei verändert hat, aber ich habe gehofft, dass es da evtl. einen saubereren Weg gibt. Bin bei meiner suche auch auf folgenden Codeschnipsel gestoßen: class File def flocked? &block status = flock LOCK_EX|LOCK_NB case status when false return true when 0 begin block ? block.call : false ensure flock LOCK_UN end else raise SystemCallError, status end end end Allerdings scheint dies nicht wirklich zu funktionieren, da File.flock? mir stets meldet, dass die Datei nicht gelockt sei - was ja eigentlich nicht wirklich sein kann, da ja ein anderer Prozess die Datei grade auf die Platte schreibt... Ich weiß, das mehr oder weniger ein reines Ruby - Problem, aber vielleicht hat jemand von Euch eine Idee, wie man so etwas hinbekommen kann? Grüße Matze _______________________________________________ rubyonrails-ug mailing list rubyonrails-ug@headflash.com http://mailman.headflash.com/listinfo/rubyonrails-ug