Module: Facter::Util::FileRead

Defined in:
lib/facter/util/file_read.rb

Overview

FileRead is a utility module intended to provide easily mockable methods that delegate to simple file read methods. The intent is to avoid the need to execute the cat system command or File.read directly in Ruby, as mocking these behaviors can have wide-ranging effects.

All Facter facts are encouraged to use this method instead of File.read or Facter::Core::Execution.exec(‘cat …’)

Class Method Summary collapse

Class Method Details

.read(path) ⇒ String?

read returns the raw content of a file as a string. If the file does not exist, or the process does not have permission to read the file then nil is returned.

Parameters:

  • path (String)

    the path to be read

Returns:

  • (String, nil)

    the raw contents of the file or nil if the file cannot be read because it does not exist or the process does not have permission to read the file.



25
26
27
28
29
30
# File 'lib/facter/util/file_read.rb', line 25

def self.read(path)
  File.read(path)
rescue Errno::ENOENT, Errno::EACCES => detail
  Facter.debug "Could not read #{path}: #{detail.message}"
  nil
end

.read_binary(path) ⇒ Object



32
33
34
# File 'lib/facter/util/file_read.rb', line 32

def self.read_binary(path)
  File.open(path, "rb") { |contents| contents.read }
end