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