From: Tom Hughes Date: Thu, 3 Mar 2022 19:47:40 +0000 (+0000) Subject: Remove support for legacy trace files X-Git-Tag: live~1252^2 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/92b122759f131d161c36987999eed437c6e3b0d5 Remove support for legacy trace files --- diff --git a/app/models/trace.rb b/app/models/trace.rb index f2d81e31a..957bea8bc 100644 --- a/app/models/trace.rb +++ b/app/models/trace.rb @@ -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 diff --git a/config/settings.yml b/config/settings.yml index ef46ae216..2172d2d87 100644 --- a/config/settings.yml +++ b/config/settings.yml @@ -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 diff --git a/config/settings/test.yml b/config/settings/test.yml index 3d940aec9..5c5673f7d 100644 --- a/config/settings/test.yml +++ b/config/settings/test.yml @@ -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 index 11909ff21..000000000 --- a/lib/tasks/migrate_traces_to_storage.rake +++ /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 diff --git a/test/controllers/api/traces_controller_test.rb b/test/controllers/api/traces_controller_test.rb index 9719c7c92..d85e5e1a4 100644 --- a/test/controllers/api/traces_controller_test.rb +++ b/test/controllers/api/traces_controller_test.rb @@ -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 diff --git a/test/controllers/traces_controller_test.rb b/test/controllers/traces_controller_test.rb index 48b5c457f..8346debbf 100644 --- a/test/controllers/traces_controller_test.rb +++ b/test/controllers/traces_controller_test.rb @@ -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 diff --git a/test/models/trace_test.rb b/test/models/trace_test.rb index 1322964c2..99aac41d8 100644 --- a/test/models/trace_test.rb +++ b/test/models/trace_test.rb @@ -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)