A FTP server writes the received file data in several chunks, so it'll trigger multiple events on the same file. I think adding a hook the the FTP server itself is a better solution.
On a server I'd prefer to go directly with the command line tools like `inotifywatch`, so there's no overhead with a full blown Ruby process.
Michael