Module: FileUtils

Defined in:
lib/rubyhacks.rb

Class Method Summary collapse

Class Method Details

.tail(file_name, lines = 10, sep = $/) ⇒ Object

def self.tail(file_name, lines = 10, sep = $/) file = File.open(file_name, ‘r’) string = “” pos = -1 n = 0 size = file.stat.size # return string if size == 0 while size > 0 file.sysseek(pos, IO::SEEK_END) char = file.sysread(1) n+= 1 if char == sep

break if n == lines + 1 string = char + string break if pos == - size pos -= 1 end file.close return string end



824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
# File 'lib/rubyhacks.rb', line 824

def self.tail(file_name, lines = 10, sep = $/)
  if lines > 49 and sep == "\n" # The command line utility will be much faster
    begin
      return `tail -n #{lines} #{file_name}`  
    rescue => err #in case the command tail can't be found
#         puts err
    end
  end
  file = File.open(file_name, 'r')
  string = ""
  pos = -1
  n = 0
  size = file.stat.size
  while size > 0
    file.sysseek(size + pos)
    char = file.sysread(1)
    n+= 1 if char == sep and not pos == -1  
    break if n == lines 
    string = char + string
    break if pos == - size 
    pos -= 1
  end
  file.close
  return string
end