Let’s assume a scenario where you continuously sync images from other application into your application and you dont have a way to identify if image is updated or not. Here now instead of simply updating image every time you can compare MD5 hash of those images to identify if image is updated or not.
Example1: When your images are present on internet
new_image_url = 'http://source.com/user/100/profile.jpg'
existing_image_url = 'http://destination.com/user/100/profile.jpg'
new_image_file = URI.parse(new_image_url).open
existing_image_file = URI.parse(existing_image_url).open
new_image_md5 = Digest::MD5.file(new_image_file.path).hexdigest
existing_image_md5 = Digest::MD5.file(existing_image_file.path).hexdigest
if new_image_md5 != existing_image_md5
user.update_profile(new_image_file)
end
Example2: When your images are present on file system
new_image_path = '/Users/myuser/user_service/source_images/100/profile.jpg'
new_image_path = '/Users/myuser/user_service/destination_images/100/profile.jpg'new_image_file = File.open(new_image_path)
existing_image_file = File.open(existing_image_path)new_image_md5 = Digest::MD5.file(new_image_file.path).hexdigest
existing_image_md5 = Digest::MD5.file(existing_image_file.path).hexdigestif new_image_md5 != existing_image_md5
user.update_profile(new_image_file)
end