2011-08-07 1 views
1

Ruby(ファイルA)でシリアル化されたデータをxml形式(ファイルB)に変換するアプリケーションを作成しています。 変更されていないファイルを再変換しないようにするには、すでに変更日のチェックを追加しました。ファイルAの最後の変更がファイルBの最後の変更より古い場合、新しい変換を避けることができます。ファイルが実際に変更されたかどうかを確認するには、ルビーの最良の方法は何ですか?

Unf。一部のファイルAは上書きされますが、同じ内容を維持します。これは変換プロセスを無駄にし、私はそれを避けたいと思います。

私は、ディスクに最後に変換されたファイルAのハッシュを格納し、次に変換前にファイルのハッシュが変更されたかどうかを確認することを考えていました。

ルビにこのようなハッシュコードを簡単に作成する方法はありますか?

答えて

5
require 'digest/sha1' 

Digest::SHA1.hexdigest(File.read("/a")) # => "da39a3ee5e6b4b0d3255bfef95601890afd80709" 
0

ファイルのサイズはどれくらいですか?

それほど大きくない場合は、ファイルBを更新するたびに、ファイルCにファイルAのコピーを書き込むことができます。

再度ファイルBを更新したい場合は、あなたがファイルAとBの差分を行い、彼らが異なっている場合、あなたはファイルBを更新

+0

また、チェックを行うたびに差分が2倍になる – Matteo

0

他のソリューションがあります。

    は、
  • シリアライズされたファイルを書き換えて、先頭にコメントを挿入するか、すでに変換済みであることを示すコメントを末尾に追加するだけです。

  • conveの後にファイルをサブディレクトリに移動しますrsion

関連する問題