class ChefFS::FileSystem::CookbookFile
Attributes
file[R]
Public Class Methods
new(name, parent, file)
click to toggle source
Calls superclass method
ChefFS::FileSystem::BaseFSObject::new
# File lib/chef_fs/file_system/cookbook_file.rb, line 25 def initialize(name, parent, file) super(name, parent) @file = file end
Public Instance Methods
checksum()
click to toggle source
# File lib/chef_fs/file_system/cookbook_file.rb, line 32 def checksum file[:checksum] end
compare_to(other)
click to toggle source
# File lib/chef_fs/file_system/cookbook_file.rb, line 61 def compare_to(other) other_value = nil if other.respond_to?(:checksum) other_checksum = other.checksum else begin other_value = other.read rescue ChefFS::FileSystem::NotFoundError return [ false, nil, :none ] end other_checksum = calc_checksum(other_value) end [ checksum == other_checksum, nil, other_value ] end
read()
click to toggle source
# File lib/chef_fs/file_system/cookbook_file.rb, line 36 def read old_sign_on_redirect = rest.sign_on_redirect rest.sign_on_redirect = false begin tmpfile = rest.get_rest(file[:url], true) rescue Timeout::Error => e raise ChefFS::FileSystem::OperationFailedError.new(:read, self, e), "Timeout reading #{file[:url]}: #{e}" rescue Net::HTTPServerException => e raise ChefFS::FileSystem::OperationFailedError.new(:read, self, e), "#{e.message} retrieving #{file[:url]}" ensure rest.sign_on_redirect = old_sign_on_redirect end begin tmpfile.open tmpfile.read ensure tmpfile.close! end end
rest()
click to toggle source
# File lib/chef_fs/file_system/cookbook_file.rb, line 57 def rest parent.rest end
Private Instance Methods
calc_checksum(value)
click to toggle source
# File lib/chef_fs/file_system/cookbook_file.rb, line 78 def calc_checksum(value) Digest::MD5.hexdigest(value) end