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_samemay betrue,falseornil(which means “don’t know”).valueandother_valuemust either be the text ofselforother,:none(if the entry does not exist or has no value) ornilif the value was not retrieved. -
nilif 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 |