gpt4 book ai didi

ruby-on-rails - 如何将CarrierWave文件迁移到新的存储机制?

转载 作者:行者123 更新时间:2023-12-04 03:37:35 26 4
gpt4 key购买 nike

我有一个Ruby on Rails站点,其模型使用CarrierWave进行文件处理,当前使用本地存储。我想开始使用云存储,并且需要将现有的本地文件迁移到云中。我想知道是否有人可以指出执行此操作的方法?

使用模型属性的好处是,该属性使我可以在后台逐行执行此操作,而不会因长时间停机而中断我的网站(换句话说,某些模型行仍将具有本地存储,而其他模型行仍将具有本地存储)。

我的第一个直觉是为使用云存储的每个模型创建一个新的上传器,因此我在每个模型上都有两个上传器,然后将文件从一个上传到另一个,并设置一个属性以指示应该使用哪个文件,直到全部使用为止转移,然后删除旧的上传器。似乎有点过分了。

最佳答案

最小到可能为零的Donwtime过程

我认为,在几乎没有停机的情况下完成您想要的事情的最简单,最快的方法是:(我假设您将使用AWS云,但是类似的过程适用于任何云服务)

  • 找出并设置您的 Assets 存储桶,存储桶策略等,以使 Assets 可公开访问。
  • 使用s3cmd(与S3交互的命令行工具)或GUI应用程序,将整个 Assets 文件夹从文件系统复制到S3中的相应文件夹。
  • 在您的应用程序中,设置载波并更新模型/上载器以存储:fog
  • 请勿重新启动您的应用程序。而是打开Rails控制台,并为您的模型检查新 Assets URL是否正确,是否可以按计划访问。例如,对于具有图片 Assets 的视频模型,您可以通过以下方式进行检查:
    Video.first.picture.url

    这将根据更新的设置为您提供完整的云URL。复制URL并粘贴到浏览器中,以确保可以正常使用。
  • 如果此方法适用于每种具有 Assets 的模型的至少一个实例,则可以重新启动应用程序。
  • 重新启动后,所有 Assets 都将通过云提供服务,并且模型中不需要任何迁移或多个上载器。
  • (基于@Frederick Cheung的评论):使用s3cmd(或类似的东西)rsyncsync从文件系统到 Assets S3的 Assets 文件夹,以计算在第2步和第5步之间上载的 Assets 。

  • PS:如果您需要帮助设置载波以进行云存储,请告诉我。

    关于ruby-on-rails - 如何将CarrierWave文件迁移到新的存储机制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24717309/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com