]> git.openstreetmap.org Git - rails.git/blobdiff - app/models/trace.rb
Work around the fact that exists? no longer works for models with
[rails.git] / app / models / trace.rb
index fef9983ddd69a74189c9d06bda8fde80f7af45b0..d28c2c6f42f98a1bf6bff40b769c9707b0e71515 100644 (file)
@@ -145,23 +145,25 @@ class Trace < ActiveRecord::Base
     tarred = filetype =~ /tar archive/
 
     if gzipped or bzipped or zipped or tarred then
-      file = Tempfile.new("trace.#{id}");
+      tmpfile = Tempfile.new("trace.#{id}");
 
       if tarred and gzipped then
-        system("tar -zxOf #{trace_name} > #{file.path}")
+        system("tar -zxOf #{trace_name} > #{tmpfile.path}")
       elsif tarred and bzipped then
-        system("tar -jxOf #{trace_name} > #{file.path}")
+        system("tar -jxOf #{trace_name} > #{tmpfile.path}")
       elsif tarred
-        system("tar -xOf #{trace_name} > #{file.path}")
+        system("tar -xOf #{trace_name} > #{tmpfile.path}")
       elsif gzipped
-        system("gunzip -c #{trace_name} > #{file.path}")
+        system("gunzip -c #{trace_name} > #{tmpfile.path}")
       elsif bzipped
-        system("bunzip2 -c #{trace_name} > #{file.path}")
+        system("bunzip2 -c #{trace_name} > #{tmpfile.path}")
       elsif zipped
-        system("unzip -p #{trace_name} > #{file.path}")
+        system("unzip -p #{trace_name} > #{tmpfile.path}")
       end
 
-      file.unlink
+      tmpfile.unlink
+
+      file = tmpfile.file
     else
       file = File.open(trace_name)
     end
@@ -181,7 +183,7 @@ class Trace < ActiveRecord::Base
     # If there are any existing points for this trace then delete
     # them - we check for existing points first to avoid locking
     # the table in the common case where there aren't any.
-    if Tracepoint.exists?(['gpx_id = ?', self.id])
+    if Tracepoint.find(:first, :conditions => ['gpx_id = ?', self.id])
       Tracepoint.delete_all(['gpx_id = ?', self.id])
     end
 
@@ -189,6 +191,7 @@ class Trace < ActiveRecord::Base
       if first
         f_lat = point['latitude']
         f_lon = point['longitude']
+        first = false
       end
 
       tp = Tracepoint.new