Method: Chef::ChefFS::FileSystem::BaseFSObject#compare_to

Defined in:
lib/chef/chef_fs/file_system/base_fs_object.rb

#compare_to(other) ⇒ Object

Override this if you have a special comparison algorithm that can tell you whether this entry is the same as another–either a quicker or a more reliable one. Callers will use this to decide whether to upload, download or diff an object.

You should not override this if you’re going to do the standard self.read == other.read. If you return nil, the caller will call other.compare_to(you) instead. Give them a chance :)

Parameters

  • other - the entry to compare to

Returns

  • [ are_same, value, other_value ] are_same may be true, false or nil (which means “don’t know”). value and other_value must either be the text of self or other, :none (if the entry does not exist or has no value) or nil if the value was not retrieved.

  • nil if a definitive answer cannot be had and nothing was retrieved.

Example

are_same, value, other_value = entry.compare_to(other)
if are_same.nil?
  are_same, other_value, value = other.compare_to(entry)
end
if are_same.nil?
  value = entry.read if value.nil?
  other_value = entry.read if other_value.nil?
  are_same = (value == other_value)
end


81
82
83
# File 'lib/chef/chef_fs/file_system/base_fs_object.rb', line 81

def compare_to(other)
  nil
end