Ruby on rails 为什么开发中的净化会影响生产?

Ruby on rails 为什么开发中的净化会影响生产?,ruby-on-rails,rails-activestorage,ruby-on-rails-6.1,Ruby On Rails,Rails Activestorage,Ruby On Rails 6.1,我在开发过程中清除了一堆附件,它从生产中删除了所有附件。例如,User.find(1).avatar.purge在开发中删除了附加的化身,但也从S3中删除了该文件。因此,现在生产中的相关记录有一个损坏的img 确认(只是为了确保)Rails.env确实返回了开发 我确认存储。yml本地为: local: service: Disk root: <%= Rails.root.join("storage") %> 有没有我错过的场景或什么?为什么会发生这种情

我在开发过程中清除了一堆附件,它从生产中删除了所有附件。例如,User.find(1).avatar.purge在开发中删除了附加的化身,但也从S3中删除了该文件。因此,现在生产中的相关记录有一个损坏的img

确认(只是为了确保)Rails.env确实返回了开发

我确认存储。yml本地为:

local:
  service: Disk
  root: <%= Rails.root.join("storage") %>

有没有我错过的场景或什么?为什么会发生这种情况?

这不一定是Rails中的错误,尽管这有点出乎意料。我为此提交了一个问题,得到了很好的回应。基本上,继续的方法是使用Rails.env为每个bucket命名。这样,在dev AS中调用purge时将找不到映像。看起来很奇怪,Rails会有这样一个松散的一端。但是,就目前而言……确实如此


问题:

您可以分享您运行的具体命令吗?或者你到底做了什么。我只是简单地对各种记录进行了清除。例如User.find(1).avatar.purge在开发中删除了附加的化身,但也从S3中删除了该文件。那么,现在生产中的相关记录有一个损坏的img。听起来您的开发和生产使用的是同一个桶?我看到您对该问题的编辑,但是为不同的
环境设置了哪些桶?您能否验证生产和开发使用的是不同的桶?我认为他们使用的数据库凭证不一样。我也这么认为。我仔细检查了我的水桶。在storage.yml中,local定义了本地存储(参见问题),amazon定义了存储桶。Development.rb将active_storage.service设置为local,production.rb将active_storage.service设置为amazon。env确实为开发定义了一个S3_BUCKET,我确认env['S3_BUCKET']是从我的本地.env中提取的。很奇怪。这里有一个断开的地方…也就是说…由于development.rb是为本地存储设置的,所以开发桶甚至不应该在运行中。
config.active_storage.service = :local