1

我的生产和开发数据库有些同步,因此开发可以从生产路径(S3)读取图像。

问题是当我删除、更新或创建开发记录时,它会影响 S3 映像。

我不希望这种行为发生在开发中,但它应该发生在生产中。

有没有将回形针变成只读模式的选项?我仍然想看到来自 S3 的图像(而不是 404 图像)。

我看到了:preserve_files可以很好地保护删除的选项。是否有保护覆盖/禁用上传的选项?

4

2 回答 2

1

好吧,对于未来的版本来说,不完整、丑陋和不安全,但同时也能完成这项工作。

config/initializers/paperclip.rb

if Rails.env.development?
  module Paperclip
    class Attachment
      def assign uploaded_file
      end

      def save
      end

      def clear(*)
      end

      def destroy
      end

      private
      def post_process(*)
      end

      def post_process_styles(*)
      end

      def post_process_style(*)
      end

      def queue_some_for_delete(*)
      end

      def queue_all_for_delete
      end

      def after_flush_writes
      end
    end
  end
end
于 2012-08-22T08:59:51.217 回答
0

假设您需要在开发中使用生产数据,我认为创建一个用户只能读取某些 S3 资源的“用户策略”会更有意义。然后相应地更改您的环境变量 https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-policies-s3.html

然后,您可以处理开发中的错误(如果您尝试使用只读权限进行更新,S3 客户端应该会失败)。这可确保您在生产中无法触及任何东西

例如(伪代码),

if Rails.env.development?
  // do not update
else
  Model.attachment.assign()
end
于 2021-04-07T16:22:36.990 回答