123456789_123456789_123456789_123456789_123456789_

Module: MakeMakefile::Logging

Do not use. This module is for internal use only.
Relationships & Source Files
Defined in: lib/mkmf.rb

Overview

This is a custom logging module. It generates an mkmf.log file when you run your extconf.rb script. This can be useful for debugging unexpected failures.

This module and its associated methods are meant for internal use only.

Class Attribute Summary

Class Method Summary

Class Attribute Details

.log_opened?Boolean (readonly)

[ GitHub ]

  
# File 'lib/mkmf.rb', line 332

def self::log_opened?
  @log and not @log.closed?
end

.quiet (rw)

[ GitHub ]

  
# File 'lib/mkmf.rb', line 382

attr_accessor :quiet

Class Method Details

.log_close

[ GitHub ]

  
# File 'lib/mkmf.rb', line 356

def self::log_close
  if @log and not @log.closed?
    @log.flush
    @log.close
    @log = nil
  end
end

.log_open

[ GitHub ]

  
# File 'lib/mkmf.rb', line 327

def self::log_open
  @log ||= File::open(@logfile, 'wb')
  @log.sync = true
end

.logfile(file)

[ GitHub ]

  
# File 'lib/mkmf.rb', line 351

def self::logfile file
  @logfile = file
  log_close
end

.message(*s)

[ GitHub ]

  
# File 'lib/mkmf.rb', line 346

def self::message(*s)
  log_open
  @log.printf(*s)
end

.open

[ GitHub ]

  
# File 'lib/mkmf.rb', line 336

def self::open
  log_open
  $stderr.reopen(@log)
  $stdout.reopen(@log)
  yield
ensure
  $stderr.reopen(@orgerr)
  $stdout.reopen(@orgout)
end

.postpone

[ GitHub ]

  
# File 'lib/mkmf.rb', line 364

def self::postpone
  tmplog = "mkmftmp#{@postpone += 1}.log"
  open do
    log, *save = @log, @logfile, @orgout, @orgerr
    @log, @logfile, @orgout, @orgerr = nil, tmplog, log, log
    begin
      log.print(open {yield @log})
    ensure
      @log.close if @log and not @log.closed?
      File::open(tmplog) {|t| FileUtils.copy_stream(t, log)} if File.exist?(tmplog)
      @log, @logfile, @orgout, @orgerr = log, *save
      @postpone -= 1
      MakeMakefile.rm_f tmplog
    end
  end
end