A me il codice
codice:
def leggi
File.open @file, 'r' do |f|
while line = f.gets
puts line
end
end
end
non da alcun problema. Quale versione di Ruby usi?
L'errore che da a te è probabilmente legato ad un errore di esecuzione. Infatti IOError è un errore restituito in caso di problemi con lo stream.
Ma tu valorizzi la variabile @file prima di lanciare il metodo?
Comunque non ha molto senso un metodo simile se non nel contesto di una classe.
Se lo vuoi tenere come metodo dovresti fare qualcosa tipo
codice:
def leggi(file_path)
File.open(file_path, 'r') do |f|
while line = f.gets
puts line
end
end
end
Il codice è poi ancora semplificabile in
codice:
def leggi(file_path)
File.foreach(file_path) do |line|
puts line
end
end
e per scriverlo alla Ruby way
codice:
def leggi(file_path)
File.foreach(file_path) { |line| puts line }
end