【发布时间】:2021-05-09 00:21:08
【问题描述】:
我在开发中清除了一堆附件,并从生产中删除了所有附件。例如,User.find(1).avatar.purge 在开发中删除了附加的头像,但也从 S3 中删除了该文件。所以,现在生产中的相关记录有一个损坏的 img。
确认(只是为了确定)Rails.env 确实返回开发。
我确认 storage.yml 本地是:
local:
service: Disk
root: <%= Rails.root.join("storage") %>
development.rb 有:
config.active_storage.service = :local
有没有设置或我错过了什么?为什么会这样?
【问题讨论】:
-
你能分享一下你运行的命令吗?或者你具体做了哪些步骤。
-
我只是简单地对各种记录进行了清除。例如 User.find(1).avatar.purge 在开发中删除了附加的头像,但也从 S3 中删除了文件。所以,现在生产中的相关记录有一个损坏的 img。
-
听起来你开发和生产使用同一个bucket?我看到您对问题的编辑,但是为不同的
envs设置了哪些存储桶?您能否验证生产和开发使用不同的存储桶?我假设他们没有使用相同的数据库凭据。 -
我也是这么想的。我仔细检查了我的水桶。在 storage.yml 中,local 定义本地存储(参见问题)和 amazon,其中包括定义存储桶。 Development.rb 将 active_storage.service 设置为本地,production.rb 将 active_storage.service 设置为 amazon。 .env 确实为开发定义了一个 S3_BUCKET,我确认 ENV['S3_BUCKET'] 是从我的本地 .env 中提取的。很奇怪。某处断线了……
-
话虽这么说......开发桶甚至不应该发挥作用,因为 development.rb 设置为本地存储。
标签: ruby-on-rails rails-activestorage ruby-on-rails-6.1