【问题标题】:Why would purge in development affect production?为什么开发中的清洗会影响生产?
【发布时间】: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


【解决方案1】:

这不一定是 Rails 中的错误,尽管有点出乎意料。我为此提交了一个问题并得到了很好的回应。基本上,继续的方法是使用 Rails.env 命名每个存储桶。这样,在 dev AS 中调用 purge 时将找不到图像。 Rails 有这个松散​​的结局似乎很奇怪。但是,目前……确实如此。

问题:https://github.com/rails/rails/issues/42186

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-28
    • 1970-01-01
    • 1970-01-01
    • 2019-06-13
    • 2011-03-15
    • 2019-06-24
    • 1970-01-01
    • 2014-07-23
    相关资源
    最近更新 更多