forgeplus/lib/tasks/copy_attachment_files.rake

44 lines
2.2 KiB
Ruby
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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