加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-17 04:18:44 所属栏目:百科 来源:网络整理
导读:我有一个 Ruby on Rails站点,其中模型使用CarrierWave进行文件处理,目前使用的是本地存储.我想开始使用云存储,我需要将现有的本地文件迁移到云端.我想知道是否有人可以指出这样做的方法? 使用模型属性的加分点,允许我在后台逐行执行此操作,而不会中断我的站
我有一个 Ruby on Rails站点,其中模型使用CarrierWave进行文件处理,目前使用的是本地存储.我想开始使用云存储,我需要将现有的本地文件迁移到云端.我想知道是否有人可以指出这样做的方法?

使用模型属性的加分点,允许我在后台逐行执行此操作,而不会中断我的站点以延长停机时间(换句话说,某些模型行仍然具有本地存储,而其他模型行则使用云存储).

我的第一直觉是为每个使用云存储的模型创建一个新的上传器,所以我在每个模型上有两个上传器,然后将文件从一个传输到另一个,设置一个属性来指示应该使用哪个文件,直到它们全部转移,然后删除旧的上传者.这似乎有点过分.

解决方法

最小到可能为零的Donwtime程序

在我看来,通过几乎没有停机时间来实现您想要的最简单,最快捷的方法是:(我将假设您将使用AWS云,但类似的程序适用于任何云服务)

>找出并设置资产桶,存储桶策略等,以使资产可公开访问.
>使用s3cmd(用于与S3交互的命令行工具)或GUI应用程序,将整个资产文件夹从文件系统复制到S3中的相应文件夹.
>在您的应用中,设置carrierwave并更新模型/上传器:雾存储.
>不要重新启动您的应用程序.而是调出rails控制台和模型,检查新资产URL是否正确且可按计划访问.例如,对于带有图片资源的视频模型,您可以这样检查:

Video.first.picture.url

这将根据更新的设置为您提供完整的云URL.复制URL并粘贴到浏览器中以确保您可以正常使用.
>如果这适用于每个具有资产的模型的至少一个实例,则可以重新启动应用程序.
>重新启动后,您的所有资产都将从云端提供,您的模型中不需要任何迁移或多个上传程序.
>(基于@Frederick Cheung的评论):使用s3cmd(或类似的东西)rsync或将资产文件夹从文件系统同步到S3,以考虑在步骤2和5之间上传的资产(如果有的话).

PS:如果您需要帮助为云存储设置carrierwave,请告诉我们.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读