问题描述
我想将实时站点的副本下载到我的本地计算机上以进行开发和检查。我已经下载了数据库并在本地还原了它。我已使用aws-cli将s3存储桶下载到存储目录。
运行网站时,图像和其他存储项目丢失了。
S3服务似乎使文件的结构与本地文件期望的结构不同。
本地化,它希望文件位于:
storage/am/n3/amn3khai208v632cbg8ywrtxj2j3
但是s3下载具有
storage/amn3khai208v632cbg8ywrtxj2j3
为什么会有区别?是否有修复它的内置方法,以便我可以将开发与生产同步?
我写了这个任务来做到这一点:
namespace :dev do
task :pics => :environment do
ActiveStorage::Blob.all.each do |blob|
puts blob.key
puts ActiveStorage::Blob.service.send(:path_for,blob.key)
unless File.exist? ActiveStorage::Blob.service.send(:path_for,blob.key)
begin
puts "replace"
FileUtils.mkdir_p File.dirname(ActiveStorage::Blob.service.send(:path_for,blob.key))
# FileUtils.cp 'test/fixtures/files/test.jpg',ActiveStorage::Blob.service.send(:path_for,blob.key)
FileUtils.cp "./../bloom/s3bk/#{blob.key}",blob.key)
rescue
byebug
end
else
puts "exists"
end
end
end
end
我不了解将事物放置在原处的原因,因此这可能无法100%起作用。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)