|
- namespace :copy_attachment_files do
- desc "copy_attachment_files to out path"
- task done: :environment do
- cp_path = ENV['path'] || "/home/pdl/cp_files"
- container_type = ENV['_type']
- next if container_type.blank?
- Dir.mkdir(cp_path) unless Dir.exist?(cp_path)
- attachments = Attachment.where(container_type: container_type)
- attachments.each do |file|
- file_path = File.join(file.disk_directory.to_s, file.disk_filename.to_s)
- next unless File.exist?("#{Rails.root.to_s}/files/#{file_path}")
- dir_path_year = "#{cp_path}/#{file.disk_directory.to_s.split("/")[0]}"
- Dir.mkdir(dir_path_year) unless Dir.exist?(dir_path_year)
- dir_path = "#{cp_path}/#{file.disk_directory}"
- Dir.mkdir(dir_path) unless Dir.exist?(dir_path)
- puts "cp #{Rails.root.to_s + File.join("/files/", file_path)} #{dir_path}"
- system("cp #{Rails.root.to_s + File.join("/files/", file_path)} #{dir_path}")
- end
- end
-
- task memo: :environment do
- cp_path = ENV['path'] || "/home/pdl/cp_files"
- memos = Memo.where("content like '%/attachments/send_file/%'")
- att_ids = []
- memos.each do |memo|
- # 附件的格式为(/api/attachments/ + 附件id)的形式,提取出id进行附件属性关联,做附件访问权限控制
- att_ids += memo.content.to_s.scan(/\(\/attachments\/send_file\/.+\)/).map{|s|s.match(/\d+/)[0]}
- att_ids += memo.content.to_s.scan(/\/attachments\/send_file\/.+\"/).map{|s|s.match(/\d+/)[0]}
- att_ids += memo.content.to_s.scan(/\/attachments\/send_file\/\d+/).map{|s|s.match(/\d+/)[0]}
- end
- if att_ids.present?
- attachments = Attachment.where(id: att_ids)
- attachments.each do |file|
- file_path = File.join(file.disk_directory, file.disk_filename)
- dir_path_year = "#{cp_path}/#{file.disk_directory.to_s.split("/")[0]}"
- Dir.mkdir(dir_path_year) unless Dir.exist?(dir_path_year)
- dir_path = "#{cp_path}/#{file.disk_directory}"
- Dir.mkdir(dir_path) unless Dir.exist?(dir_path)
- puts "cp #{Rails.root.to_s + File.join("/files/", file_path)} #{dir_path}"
- system("cp #{Rails.root.to_s + File.join("/files/", file_path)} #{dir_path}")
- end
- end
- end
- end
|