Как лучше всего в ruby ​​проверить, был ли файл действительно изменен? - PullRequest
1 голос
/ 07 августа 2011

Я пишу приложение, которое преобразует данные, сериализованные в ruby ​​(файл A), в формат xml (файл B).Чтобы избежать повторного преобразования неизмененных файлов, я уже добавил проверку даты изменения: если последнее изменение в файле A старше, чем последнее изменение в файле B, мы можем избежать нового преобразования.

Unf.некоторый файл A перезаписывается, но содержит тот же контент.Это делает процесс преобразования бесполезным, и я хотел бы избежать его.

Я думал о сохранении на диске хэша последнего преобразованного файла A, а затем перед преобразованием я мог проверить, если хэш файлаизменилось.

Есть ли способ легко создать такой хэш-код в ruby?

Ответы [ 3 ]

5 голосов
/ 07 августа 2011
require 'digest/sha1'

Digest::SHA1.hexdigest(File.read("/a")) # => "da39a3ee5e6b4b0d3255bfef95601890afd80709" 
0 голосов
/ 07 августа 2011

Существуют и другие решения:

  • переписать сериализованный файл и вставить комментарий вверху или просто добавить в конец комментарий, помечающий его как уже преобразованный

  • переместить файлы в подкаталог после преобразования

0 голосов
/ 07 августа 2011

Насколько велики ваши файлы?

Если они не такие большие, вы можете записывать копию файла A в файл C каждый раз, когда файл B. обновляется.

Когда вы хотите обновить файл B еще раз, вы выполняете сравнение файлов A и B, если они различаются, вы обновляете файл B.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...