Module: FileDaemon::ClassMethods

Defined in:
lib/file_daemon.rb

Overview

:nodoc:

Instance Method Summary collapse

Instance Method Details

#after_forkObject

Public: Reopen all file descriptors that have been stored through the before_fork hook.

Returns nothing.



39
40
41
42
43
44
45
46
47
# File 'lib/file_daemon.rb', line 39

def after_fork
  @files_to_reopen.each do |file|
    begin
      file.reopen file.path, "a+"
      file.sync = true
    rescue ::IOError # rubocop:disable HandleExceptions
    end
  end
end

#before_forkObject

Public: Store the list of currently open file descriptors so that they may be reopened when a new process is spawned.

Returns nothing.



31
32
33
# File 'lib/file_daemon.rb', line 31

def before_fork
  @files_to_reopen = ObjectSpace.each_object(File).reject(&:closed?)
end

#reopen_filesObject

Public: Force-reopen all files at their current paths. Allows for rotation of log files outside of the context of an actual process fork.

Returns nothing.



22
23
24
25
# File 'lib/file_daemon.rb', line 22

def reopen_files
  before_fork
  after_fork
end