我有一个红宝石控制器
Save
所以在这里,我正在阅读像
这样的文件def new
counter = 1
fileW = File.new("query_output.txt", "w")
file = File.new("query_data.txt", "r")
while (line = file.gets)
puts "#{counter}: #{line}"
query = "select name,highway from planet_osm_line where name ilike '" +line+"'"
@output = PlanetOsmLine.connection.execute(query)
@output.each do |output|
fileW.write(output['highway'] + "\n")
end
counter = counter + 1
end
file.close
query = ""
@output = PlanetOsmLine.connection.execute(query)
end
在ruby控制台中,我可以看到所有查询都被执行但在query_output.txt中我只得到最后一个查询的输出。我在这里做错了什么?
答案 0 :(得分:1)
您使用filemode w
,每次都会重新创建输出文件(因此您将写入空文件)。而是按如下方式打开文件:
fileW = File.new("query_output.txt", "a")
a
代表append
。它将打开或创建文件,并附加在后面。
有关文件模式的更多信息:http://pubs.opengroup.org/onlinepubs/009695399/functions/fopen.html