私は最新のものを使用しますか?ファイルを再コンパイル/再リンク/再生成する必要があるかどうかを判断するためのRubyのメソッド。これらのステップで使用するビルドフレームワークが非常に高速であるため、出力ファイルと前提条件ファイルのファイル変更タイムスタンプがまったく同じになる場合があります。 。これにより、ビルドフレームワークがファイルを不必要に再コンパイル/再リンクします。
私はそのように構築するためのタイムスタンプを比較します-
compile_file(file) unless uptodate?(file, %W(#{dependencies}))
ソースを調べて最新のものを探しましたか?ここから、このように見えます-
def uptodate?(new, old_list, options = nil)
raise ArgumentError, 'uptodate? does not accept any option' if options
return false unless File.exist?(new)
new_time = File.mtime(new)
old_list.each do |old|
if File.exist?(old)
return false unless new_time > File.mtime(old)
end
end
true
end
疑われるように、タイムスタンプが等しい場合はfalseを返します。この問題を回避するための最もエレガントな方法は何ですか?LinuxとWindowsでフレームワークを実行しようとしましたが、同じ問題が発生します。私がここで読んだことから、ファイルシステム固有のファイル変更時間の解決の問題である可能性は低いです(ext4の解像度は1マイクロ秒であるため)。