Added File.foreach method.

Improved error management in File.new (Errno can be undefined)
This commit is contained in:
Paolo Bosetti
2014-03-04 10:43:46 +01:00
parent d9f3fd868a
commit 7ff049457f
+18
View File
@@ -12,9 +12,17 @@ class File < IO
if fd_or_path.kind_of? Fixnum
super(fd_or_path, mode)
else
if Object.const_defined? :Errno
eclass = [Errno::ENOENT, Errno::ENFILE]
else
eclass = FileError
end
@path = fd_or_path
begin
fd = IO.sysopen(@path, mode, perm)
rescue RuntimeError => e
raise FileError, "Could not open file (#{e})"
rescue Errno::EMFILE, Errno::ENFILE
GC.start
fd = IO.sysopen(@path, mode, perm)
@@ -119,6 +127,16 @@ class File < IO
end
end
def self.foreach(file)
if block_given?
self.open(file) do |f|
f.each {|l| yield l}
end
else
return self.new(file)
end
end
def self.directory?(file)
FileTest.directory?(file)
end