向Ruby文件写入,然后从Ruby文件读取

向Ruby文件写入,然后从Ruby文件读取,ruby,file-io,Ruby,File Io,我正在编写一个Ruby CGI程序,该程序将附加到一个文件(如果文件不存在,则创建一个,然后写入),然后应立即读取该文件并以字符串形式返回输出。我有一个有效的方法,但是,我希望优化它,因为我使用的方法似乎不是最有效的方法。我对Ruby比较陌生,所以任何建议都很好。我已经查阅了Ruby中文件的文档,但是我对内存使用和优化有点不确定。多谢各位 def writeToFile(valuesToWrite) out_file = File.new("out.txt", "a+") out_f

我正在编写一个Ruby CGI程序,该程序将附加到一个文件(如果文件不存在,则创建一个,然后写入),然后应立即读取该文件并以字符串形式返回输出。我有一个有效的方法,但是,我希望优化它,因为我使用的方法似乎不是最有效的方法。我对Ruby比较陌生,所以任何建议都很好。我已经查阅了Ruby中文件的文档,但是我对内存使用和优化有点不确定。多谢各位

def writeToFile(valuesToWrite)
   out_file = File.new("out.txt", "a+")
   out_file.puts(valuesToWrite)

   fhandle = File.new("out.txt","a+")
   lines = fhandle.readlines()

   return lines
end

是的,你可以这样写:

def write_to_file(values_to_write)
   offset = File.size("out.txt")
   File.write("out.txt", values_to_write, offset)
   File.readlines("out.txt")
end
医生说:

打开文件,可以选择查找给定偏移量,写入字符串,然后返回写入的长度写入确保文件在返回之前关闭。如果未给出偏移量,则文件将被截断。否则,它不会被截断

也请阅读

这里的要点是,我不需要考虑文件关闭,它将由Ruby自己完成。

试试这个:

def writeToFile(values_to_write)
  out_file = File.new("out.txt", "a+")
  out_file.puts(values_to_write)
  out_file.rewind
  lines = out_file.readlines
  out_file.close
  lines
end

@ArupRakshit:变量名必须与参数列表中的变量名保持一致。这是我的错误。。按照我们遵循的Ruby约定进行更改。不需要回滚它:)