我的生产和开发数据库有些同步,因此开发可以从生产路径(S3)读取图像。
问题是当我删除、更新或创建开发记录时,它会影响 S3 映像。
我不希望这种行为发生在开发中,但它应该发生在生产中。
有没有将回形针变成只读模式的选项?我仍然想看到来自 S3 的图像(而不是 404 图像)。
我看到了:preserve_files
可以很好地保护删除的选项。是否有保护覆盖/禁用上传的选项?
我的生产和开发数据库有些同步,因此开发可以从生产路径(S3)读取图像。
问题是当我删除、更新或创建开发记录时,它会影响 S3 映像。
我不希望这种行为发生在开发中,但它应该发生在生产中。
有没有将回形针变成只读模式的选项?我仍然想看到来自 S3 的图像(而不是 404 图像)。
我看到了:preserve_files
可以很好地保护删除的选项。是否有保护覆盖/禁用上传的选项?
好吧,对于未来的版本来说,不完整、丑陋和不安全,但同时也能完成这项工作。
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
假设您需要在开发中使用生产数据,我认为创建一个用户只能读取某些 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