class CheckFiles::Checker
Attributes
cache_path[R]
pattern[R]
Public Class Methods
new(pattern)
click to toggle source
# File lib/check_files/checker.rb, line 7 def initialize(pattern) @pattern = pattern pattern_digest = Digest::SHA1.hexdigest(pattern) @cache_path = Rails.root.join("tmp/cache/#{pattern_digest}") end
Public Instance Methods
changed?()
click to toggle source
# File lib/check_files/checker.rb, line 29 def changed? prev_digest = previous_digest if prev_digest prev_digest != current_digest else update_cache && false end end
compute_digest(entry)
click to toggle source
# File lib/check_files/checker.rb, line 44 def compute_digest(entry) content = File.exist?(entry) && File.read(entry) Digest::SHA1.hexdigest("#{entry}-#{content}") end
current_digest()
click to toggle source
# File lib/check_files/checker.rb, line 13 def current_digest entries = Dir[pattern].sort entries_digest = Digest::SHA1.hexdigest(entries.join) if pattern.end_with?("/*") entries_digest else content_digest = entries.map {|entry| compute_digest(entry) }.join Digest::SHA1.hexdigest("#{entries_digest}#{content_digest}") end end
previous_digest()
click to toggle source
# File lib/check_files/checker.rb, line 25 def previous_digest cache_path.file? && cache_path.read end
update_cache()
click to toggle source
# File lib/check_files/checker.rb, line 39 def update_cache FileUtils.mkdir_p(File.dirname(cache_path)) File.open(cache_path, "w") {|io| io << current_digest } end