class ProcessExecuter::Destinations::FilePathModePerms

Handles file paths with specific open modes and permissions

@api private

Attributes

file[R]

The opened file object

@return [File] the opened file

Public Class Methods

handles?(destination) click to toggle source

Determines if this class can handle the given destination

@param destination [Object] the destination to check @return [Boolean] true if destination is an Array with path, mode, and permissions

# File lib/process_executer/destinations/file_path_mode_perms.rb, line 59
def self.handles?(destination)
  destination.is_a?(Array) &&
    destination.size == 3 &&
    destination[0].is_a?(String) &&
    destination[1].is_a?(String) &&
    destination[2].is_a?(Integer)
end
new(destination) click to toggle source

Initializes a new file path with mode and permissions destination handler

Opens the file at the given path with the specified mode and permissions.

@param destination [Array<String, String, Integer>] array with file path, mode, and permissions

@raise [Errno::ENOENT] if the file path is invalid

@raise [ArgumentError] if the mode is invalid

# File lib/process_executer/destinations/file_path_mode_perms.rb, line 21
def initialize(destination)
  super
  @file = File.open(destination[0], destination[1], destination[2])
end

Public Instance Methods

close() click to toggle source

Closes the file if it’s open

@return [void]

# File lib/process_executer/destinations/file_path_mode_perms.rb, line 51
def close
  file.close unless file.closed?
end
write(data) click to toggle source

Writes data to the file

@example

perms_handler = ProcessExecuter::Destinations::FilePathModePerms.new(["output.log", "w", 0644])
perms_handler.write("Log entry with specific permissions")

@param data [String] the data to write

@return [Integer] the number of bytes written

@raise [IOError] if the file is closed

# File lib/process_executer/destinations/file_path_mode_perms.rb, line 43
def write(data)
  super
  file.write data
end