将ActiveStorage s3资产从生产下载到本地磁盘以进行开发

问题描述

我想将实时站点的副本下载到我的本地计算机上以进行开发和检查。我已经下载了数据库并在本地还原了它。我已使用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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...