Module: File_Checking

Included in:
Logging
Defined in:
lib/file_checking.rb

Overview

A module to facilitate frequently occuring checks on file-system objects

Constant Summary collapse

@@text_messages =
{
  :exist? => "does not exist!",
  :exist => "does not exist!",
  :readable? => "is not readable!",
  :readable => "is not readable!",
  :executable? => "is not executable!",
  :executable => "is not executable!",
  :writable? => "is not writable!",
  :writable => "is not writable!",
  :directory? => "is not a directory!",
  :directory => "is not a directory!",
  :file? => "is not a file!",
  :file => "is not a file!",
}

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.file_check(file, *messages) ⇒ Object

Checks if the file with the name from the first parameter has the properties, listed in the second. The messages parameter is an array of one or all of :exist?, :readable?, :writable?, :directory? or their string-representations, respectively. Returns nil in case of success, otherwise an informative message, describing the first negative test-result.


64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/file_checking.rb', line 64

def self.file_check(file, *messages)
  msg = nil
	if(file && messages.respond_to?(:to_ary) && !messages.empty?)
		messages.each do |k|
			if(! k.to_s.end_with?('?'))	
				k = (k.to_s << '?').to_sym
			end
			@log.debug ('checking ' << k.to_s) if @log
			if(msg == nil && File.respond_to?(k) && ! File.send(k, file.to_s))
				msg = "#{file} #{@@text_messages[k.to_sym]}"
			end
		end
	end
	msg
end

Instance Method Details

#file_check(file, *messages) ⇒ Object

Checks if the file with the name from the first parameter has the properties, listed in the second. The messages parameter is an array of one or several of :exist?, :readable?, :writable?, :directory? or their string-representations, respectively. Returns nil in case of success, otherwise an informative message, describing the first negative test-result.


52
53
54
# File 'lib/file_checking.rb', line 52

def file_check(file, *messages)
  File_Checking.file_check(file, *messages)
end