]> git.openstreetmap.org Git - rails.git/commitdiff
Remove support for legacy trace files
authorTom Hughes <tom@compton.nu>
Thu, 3 Mar 2022 19:47:40 +0000 (19:47 +0000)
committerTom Hughes <tom@compton.nu>
Thu, 3 Mar 2022 19:47:40 +0000 (19:47 +0000)
app/models/trace.rb
config/settings.yml
config/settings/test.yml
lib/tasks/migrate_traces_to_storage.rake [deleted file]
test/controllers/api/traces_controller_test.rb
test/controllers/traces_controller_test.rb
test/models/trace_test.rb

index f2d81e31aa861f7d700cb546f680af906e1d4a5f..957bea8bc043429b5df7c72e3b0c97c55a86d87e 100644 (file)
@@ -49,7 +49,6 @@ class Trace < ApplicationRecord
   validates :timestamp, :presence => true
   validates :visibility, :inclusion => %w[private public trackable identifiable]
 
-  after_destroy :remove_files
   after_save :set_filename
 
   def tagstring
@@ -98,47 +97,15 @@ class Trace < ApplicationRecord
   end
 
   def large_picture
-    if image.attached?
-      data = image.blob.download
-    else
-      f = File.new(large_picture_name, "rb")
-      data = f.sysread(File.size(f.path))
-      f.close
-    end
-
-    data
+    image.blob.download
   end
 
   def icon_picture
-    if icon.attached?
-      data = icon.blob.download
-    else
-      f = File.new(icon_picture_name, "rb")
-      data = f.sysread(File.size(f.path))
-      f.close
-    end
-
-    data
-  end
-
-  def large_picture_name
-    "#{Settings.gpx_image_dir}/#{id}.gif"
-  end
-
-  def icon_picture_name
-    "#{Settings.gpx_image_dir}/#{id}_icon.gif"
-  end
-
-  def trace_name
-    "#{Settings.gpx_trace_dir}/#{id}.gpx"
+    icon.blob.download
   end
 
   def mime_type
-    if file.attached?
-      file.content_type
-    else
-      content_type(trace_name)
-    end
+    file.content_type
   end
 
   def extension_name
@@ -198,8 +165,8 @@ class Trace < ApplicationRecord
   end
 
   def xml_file
-    with_trace_file do |trace_name|
-      filetype = Open3.capture2("/usr/bin/file", "-Lbz", trace_name).first.chomp
+    file.open do |tracefile|
+      filetype = Open3.capture2("/usr/bin/file", "-Lbz", tracefile.path).first.chomp
       gzipped = filetype.include?("gzip compressed")
       bzipped = filetype.include?("bzip2 compressed")
       zipped = filetype.include?("Zip archive")
@@ -209,22 +176,22 @@ class Trace < ApplicationRecord
         file = Tempfile.new("trace.#{id}")
 
         if tarred && gzipped
-          system("tar", "-zxOf", trace_name, :out => file.path)
+          system("tar", "-zxOf", tracefile.path, :out => file.path)
         elsif tarred && bzipped
-          system("tar", "-jxOf", trace_name, :out => file.path)
+          system("tar", "-jxOf", tracefile.path, :out => file.path)
         elsif tarred
-          system("tar", "-xOf", trace_name, :out => file.path)
+          system("tar", "-xOf", tracefile.path, :out => file.path)
         elsif gzipped
-          system("gunzip", "-c", trace_name, :out => file.path)
+          system("gunzip", "-c", tracefile.path, :out => file.path)
         elsif bzipped
-          system("bunzip2", "-c", trace_name, :out => file.path)
+          system("bunzip2", "-c", tracefile.path, :out => file.path)
         elsif zipped
-          system("unzip", "-p", trace_name, "-x", "__MACOSX/*", :out => file.path, :err => "/dev/null")
+          system("unzip", "-p", tracefile.path, "-x", "__MACOSX/*", :out => file.path, :err => "/dev/null")
         end
 
         file.unlink
       else
-        file = File.open(trace_name)
+        file = File.open(tracefile.path)
       end
 
       file
@@ -234,8 +201,8 @@ class Trace < ApplicationRecord
   def import
     logger.info("GPX Import importing #{name} (#{id}) from #{user.email}")
 
-    with_trace_file do |trace_name|
-      gpx = GPX::File.new(trace_name)
+    file.open do |file|
+      gpx = GPX::File.new(file.path)
 
       f_lat = 0
       f_lon = 0
@@ -300,26 +267,6 @@ class Trace < ApplicationRecord
     end
   end
 
-  def migrate_to_storage!
-    file.attach(:io => File.open(trace_name),
-                :filename => name,
-                :content_type => content_type(trace_name),
-                :identify => false)
-
-    if inserted
-      image.attach(:io => File.open(large_picture_name),
-                   :filename => "#{id}.gif",
-                   :content_type => "image/gif")
-      icon.attach(:io => File.open(icon_picture_name),
-                  :filename => "#{id}_icon.gif",
-                  :content_type => "image/gif")
-    end
-
-    save!
-
-    remove_files
-  end
-
   private
 
   def content_type(file)
@@ -334,23 +281,7 @@ class Trace < ApplicationRecord
     end
   end
 
-  def with_trace_file
-    if file.attached?
-      file.open do |file|
-        yield file.path
-      end
-    else
-      yield trace_name
-    end
-  end
-
   def set_filename
     file.blob.update(:filename => "#{id}#{extension_name}") if file.attached?
   end
-
-  def remove_files
-    FileUtils.rm_f(trace_name)
-    FileUtils.rm_f(icon_picture_name)
-    FileUtils.rm_f(large_picture_name)
-  end
 end
index ef46ae216ab66327ba5c2db32037bdd50cae9a33..2172d2d874d5fb40c83b0a47cbff37960e1f5128 100644 (file)
@@ -65,9 +65,6 @@ spam_threshold: 50
 diary_feed_delay: 0
 # Default legale (jurisdiction location) for contributor terms
 default_legale: GB
-# Location of GPX traces and images
-gpx_trace_dir: "/home/osm/traces"
-gpx_image_dir: "/home/osm/images"
 # Location of data for attachments
 attachments_dir: ":rails_root/public/attachments"
 # Log file to use
index 3d940aec9a4e1886150c5a85e69b34c655f4fe5e..5c5673f7dfd3a364fa1edda5ec12c1dfa128fb23 100644 (file)
@@ -1,6 +1,3 @@
-# Trace directories for testing
-gpx_trace_dir: <%= Rails.root.join("test", "gpx", "traces") %>
-gpx_image_dir: <%= Rails.root.join("test", "gpx", "images") %>
 # Ignore the diary feed delay unless we're specifically testing it
 diary_feed_delay: 0
 # Geonames credentials for testing
diff --git a/lib/tasks/migrate_traces_to_storage.rake b/lib/tasks/migrate_traces_to_storage.rake
deleted file mode 100644 (file)
index 11909ff..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-namespace :traces do
-  desc "Migrate trace files to ActiveStorage"
-  task :migrate_to_storage => :environment do
-    Trace
-      .with_attached_file
-      .where(:file_attachment => { :id => nil })
-      .find_each(&:migrate_to_storage!)
-  end
-end
index 9719c7c921020b93f3f930d8c2564bd78cbd57f7..d85e5e1a4e484c0379f0f48dfa32d4e5b7095dcc 100644 (file)
@@ -2,22 +2,6 @@ require "test_helper"
 
 module Api
   class TracesControllerTest < ActionDispatch::IntegrationTest
-    # Use temporary directories with unique names for each test
-    # This allows the tests to be run in parallel.
-    def setup
-      @gpx_trace_dir_orig = Settings.gpx_trace_dir
-      @gpx_image_dir_orig = Settings.gpx_image_dir
-      Settings.gpx_trace_dir = Dir.mktmpdir("trace", Rails.root.join("test/gpx"))
-      Settings.gpx_image_dir = Dir.mktmpdir("image", Rails.root.join("test/gpx"))
-    end
-
-    def teardown
-      FileUtils.remove_dir(Settings.gpx_trace_dir)
-      FileUtils.remove_dir(Settings.gpx_image_dir)
-      Settings.gpx_trace_dir = @gpx_trace_dir_orig
-      Settings.gpx_image_dir = @gpx_image_dir_orig
-    end
-
     ##
     # test all routes which lead to this controller
     def test_routes
index 48b5c457f7fe98b2f024d09ba9db0894897a3a7b..8346debbf7735308543f144de13ee7a579370c8b 100644 (file)
@@ -1,22 +1,6 @@
 require "test_helper"
 
 class TracesControllerTest < ActionDispatch::IntegrationTest
-  # Use temporary directories with unique names for each test
-  # This allows the tests to be run in parallel.
-  def setup
-    @gpx_trace_dir_orig = Settings.gpx_trace_dir
-    @gpx_image_dir_orig = Settings.gpx_image_dir
-    Settings.gpx_trace_dir = Dir.mktmpdir("trace", Rails.root.join("test/gpx"))
-    Settings.gpx_image_dir = Dir.mktmpdir("image", Rails.root.join("test/gpx"))
-  end
-
-  def teardown
-    FileUtils.remove_dir(Settings.gpx_trace_dir)
-    FileUtils.remove_dir(Settings.gpx_image_dir)
-    Settings.gpx_trace_dir = @gpx_trace_dir_orig
-    Settings.gpx_image_dir = @gpx_image_dir_orig
-  end
-
   ##
   # test all routes which lead to this controller
   def test_routes
index 1322964c2734da4e5b907945c14a093970cc5497..99aac41d8115c79b074b885b36887f8f23ccacf7 100644 (file)
@@ -2,22 +2,6 @@ require "test_helper"
 require "gpx"
 
 class TraceTest < ActiveSupport::TestCase
-  # Use temporary directories with unique names for each test
-  # This allows the tests to be run in parallel.
-  def setup
-    @gpx_trace_dir_orig = Settings.gpx_trace_dir
-    @gpx_image_dir_orig = Settings.gpx_image_dir
-    Settings.gpx_trace_dir = Dir.mktmpdir("trace", Rails.root.join("test/gpx"))
-    Settings.gpx_image_dir = Dir.mktmpdir("image", Rails.root.join("test/gpx"))
-  end
-
-  def teardown
-    FileUtils.remove_dir(Settings.gpx_trace_dir)
-    FileUtils.remove_dir(Settings.gpx_image_dir)
-    Settings.gpx_trace_dir = @gpx_trace_dir_orig
-    Settings.gpx_image_dir = @gpx_image_dir_orig
-  end
-
   def test_visible
     public_trace_file = create(:trace)
     create(:trace, :deleted)