Module: Gibbler::File

Includes:
Object
Included in:
File, TempFile
Defined in:
lib/gibbler.rb

Overview

Creates a digest based on: CLASS:PATHLENGTH:PATH where PATHLENGTH is the length of the PATH string. PATH is not modified in any way (it is not converted to an absolute path).

NOTE: You may expect this method to include other information like the file contents and modified date (etc…). The reason we do not is because Gibbler is concerned only about Ruby and not the outside world. There are many complexities in parsing file data and attributes which would make it difficult to run across platforms and Ruby versions / engines. If you want to

e.g.

File.new('.')        # => c8bc8b3a
File.new('/tmp')     # => 3af85a19
File.new('/tmp/')    # => 92cbcb7d

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Object

#digest_cache, #freeze, #gibbled?, #gibbler, #gibbler_debug, #gibbler_fields, gibbler_fields

Class Method Details

.included(obj) ⇒ Object



651
652
653
654
# File 'lib/gibbler.rb', line 651

def self.included(obj)
  obj.extend Attic
  obj.attic :gibbler_cache
end

Instance Method Details

#__gibbler(digest_type = nil) ⇒ Object

Creates a digest for the current state of self.



657
658
659
660
661
662
663
# File 'lib/gibbler.rb', line 657

def __gibbler(digest_type=nil)
  klass = self.class
  value = self.nil? ? "\0" : self.path
  a = Gibbler.digest "%s:%d:%s" % [klass, value.size, value], digest_type
  gibbler_debug klass, a, [klass, value.size, value]
  a
end