diff --git a/.gitignore b/.gitignore index 25c5ca18f..f68f787af 100644 --- a/.gitignore +++ b/.gitignore @@ -22,9 +22,10 @@ *.iws public/uploads +public/downloads bin/* config/initializers/token.rb doc/*.svg rubocop.html config/france_connect.yml -vendor/**/* \ No newline at end of file +vendor/**/* diff --git a/app/uploaders/downloader.rb b/app/uploaders/downloader.rb index 0f9d6691a..c6e5da35a 100644 --- a/app/uploaders/downloader.rb +++ b/app/uploaders/downloader.rb @@ -1,7 +1,7 @@ require 'securerandom' class Downloader - BASE_PATH_DISK = File.join(Rails.root, "public/") + BASE_PATH_DISK = File.join(Rails.root, "public/downloads/") def initialize(filename, filename_suffix = '') @filename = filename.to_s @@ -10,11 +10,11 @@ class Downloader generate_random_base_path! - FileUtils.cp @filename, "#{@base_path}/#{@filename_suffix}.#{@extension}" + FileUtils.ln_s @filename, "#{@base_path}/#{@filename_suffix}.#{@extension}" end def url - @url ||= File.join(TPS::Application::URL, random_folder_name, "#{@filename_suffix}.#{@extension}") + @url ||= File.join(TPS::Application::URL, 'downloads', random_folder_name, "#{@filename_suffix}.#{@extension}") end protected @@ -26,6 +26,11 @@ class Downloader loop do self.random_folder_name = SecureRandom.hex base_path = File.join(BASE_PATH_DISK, self.random_folder_name) + + unless File.directory?(BASE_PATH_DISK) + Dir.mkdir(BASE_PATH_DISK) + end + unless File.directory?(base_path) Dir.mkdir(base_path) break base_path