Rails Paperclip S3 重命名数千个文件?

2023-12-28

我正在尝试重命名 s3 中的许多文件——更改当前的回形针has_attached_file :path from stuff/:id_:updated_at_:style.:extension to stuff/:id_:counter_:style.:extension, where :counter是与图像相同模型中的字段。

我对如何重命名所有文件一无所知——最好是在 rake 任务中。

顺便说一句,我会增加:counter每次将新文件保存到记录中。

这是 Rails 3 和截至本文发布时的最新 Paperclip。

有任何想法吗?

Thanks!


这是我的解决方案:

# This task changes all of the keys from the current format,
# :id_:image_updated_at_:style, to :id_:image_counter_:style.
# :image_counter is set arbitrarily at 1, since all records have
# a default of 1 in that field (until they're updated).
desc "One-time renaming of all the amazon s3 content for User.image"

task :rename_s3_files, [:bucket] => :environment do |t, args|
  require 'aws/s3'

  cred = YAML.load(File.open("#{Rails.root}/config/s3.yml")).symbolize_keys!
  AWS::S3::Base.establish_connection! cred

  bucket = AWS::S3::Bucket.find(args[:bucket])

  # Rename everything in the bucket, taking out the timestamp and replacing it with "1"
  bucket.each do |obj|
    arr = obj.key.split('_')
    obj.rename(arr[0] + '_1_' + arr[2])
  end

end

它只是遍历存储桶中的所有文件并根据这个新架构重命名它们。我将 Paperclip 路径中的 :counter 字段设置为默认值 1,因此_1_在新文件名中。

奇迹般有效!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rails Paperclip S3 重命名数千个文件? 的相关文章

  • Bundle 说 gem 丢失了 - 但事实并非如此?

    背景 我正在维护contentRuby On Rails 站点 但我确实没有 Rails 的经验 当尝试运行 Rails 服务器时 rails s我明白了 在任何来源中均找不到 activesupport 3 2 0 Run bundle
  • 为什么我收到“未定义的方法`assert_valid_keys`”?

    知道为什么我会收到此错误 Exception encountered
  • AWS S3 上传的图像已损坏

    我正在 AWS ec2 ubuntu 机器上工作 我的代码在 cakephp 中 当我尝试将任何图像上传到 AWS S3 时 它都会损坏 虽然它在核心 php 代码中运行良好 这是我的控制器代码 if this gt User gt sav
  • ruby从1.8.7升级到1.9.2(使用Rails 3.1.1)后本地服务器错误

    我刚刚安装了rvm并使用rvm将ruby从1 8 7升级到1 9 2 我在我的应用程序上运行了捆绑安装 它重新安装了我的 gems 当我在本地运行 Rails 服务器并将浏览器导航到 localhost 3000 时 服务器日志中显示以下错
  • 如何向 Rails 应用程序添加自定义字体?

    我想在 RoR 应用程序中使用几种字体 但它们的格式主要是 ttf 和 otf 等 我该如何将这些文件嵌入到我的 Rails 应用程序中 也就是说 一旦我将它们放入我的资产文件夹中 将它们嵌入我的 CSS 和 或 LESS 文件中的语法到底
  • 从 S3 提供 Django 的静态文件和媒体文件

    我遇到了一个奇怪的问题 我不知道是什么原因造成的 这是我当前的配置 使用Heroku MEDIA URL media STATIC URL static STATICFILES DIRS os path join PROJECT DIR s
  • kafka 连接 s3 源无法与 Minio 一起使用

    我已经验证了与 minio 的连接 确保凭据工作正常并且可以访问 minio 另外 如果我尝试任何其他值store url http minio 9000我无法保存配置 所以我猜想在可见性方面不存在问题卡夫卡连接容器和minio容器 我不确
  • 服务器上的 Rails 会话

    我想让一些 Rails 应用程序在不同的服务器上共享同一个会话 我可以在同一服务器内完成此操作 但不知道是否可以在不同服务器上共享 有人已经做过或者知道怎么做吗 Thanks Use the 数据库会话存储 https github com
  • 从父应用程序重新打开 Rails 3 引擎类

    就目前而言 您无法重新打开引擎中包含的引擎类 app只需在父应用程序的目录中添加相同的类即可 app目录 例如 my engine app controllers users controller rb my app app control
  • Heroku Rails 应用程序级别不记录日志

    我在 Heroku 上有一个 Rails 应用程序 它没有在应用程序级别进行日志记录 当前版本 红宝石1 9 3 导轨3 1 3 在 config environment development rb 中有以下几行 config logge
  • 无法在 Rails 4 中使用回形针保存图像属性

    我的 Rails 4 应用程序中有两个关联的模型 product rb and image rb 图像模型允许使用回形针 gem 附加文件 Images belong to一个产品 一个产品has many Images 我想使用该产品ne
  • 让 Rails 生产在端口 80 上运行

    我正在尝试让我的 Rails 应用程序在生产模式下运行 但遇到了一些困难 我正在使用 Passenger 和 apache 并运行 Ubuntu 12 04 我已经配置和创建了生产数据库 并设置了乘客 状态如下 rvmsudo passen
  • 嵌套 has_one 关联的强参数

    我似乎遗漏了一些明显的东西 但我无法允许嵌套的属性has one协会 控制器 def create crossword Crossword new crossword params if crossword save render show
  • 高效地重新安排 ActiveJob (resque/sidekiq)

    我正在玩Rails 4 2应用程序使用ActiveJob受支持resque sidekiq用于电子邮件安排 当用户创建时事通讯活动时 会创建一个新作业并安排在特定日期 这一切都很好 但是当用户更改交货日期时会发生什么 在这种情况下 每个作业
  • 即使路由存在,Rspec 命名空间路由规范也会失败

    我在用着rspec rails 2 8 1 and 导轨3 1 3 我正在尝试测试 Admin ZonesController 的路由 我已经通过运行验证了浏览器中存在该路由rake routes 我没有使用 ActiveRecord 如果
  • rake db 问题:迁移 -

    我无法为 Ruby on Rails 设置 MySQL 数据库 设置数据库并确保 config database yml 文件匹配后 我遇到了以下错误消息 U Rails alpha gt rake db migrate trace in
  • 如何根据域名更改视图格式

    我想知道是否有任何方法可以根据域名更改相同 Rails 应用程序的视图格式 例如 www domain com gt respond to format html api domain com gt respond to format xm
  • 如何在 mongoid 中使用 or 条件进行查询

    如何在 Mongoid 中使用 or 条件进行查询 这是 OR 在 mongoid 中查询 如果你想要像下面这样的查询 select from user where id 10 or name hitesh 在带有 mongoid 的 Ra
  • 如何在 Rails 中获取“应用程序跟踪”而不是完整的详细回溯?

    在开发环境的Rails默认错误页面中 您可以查看三个回溯 1 Application Trace 2 Framework Trace和3 Full Trace 但是如何在 Rails 控制器中获取 应用程序跟踪 完整跟踪 exception
  • Rails 6:每个用户只能创建一个配置文件

    我目前正在开发 Rails 6 应用程序 我有以下关联 用户有一个配置文件 并且配置文件属于用户 当编辑用户的配置文件时 我最终为该用户提供了两个配置文件 我希望每个用户只有一份个人资料 编辑表单 profile edit html erb

随机推荐

  • C#:shlwapi.dll 中 StrCmpLogicalW 的实现或替代

    为了在我的应用程序中进行自然排序 我当前在 shlwapi dll 中 P Invoke 一个名为 StrCmpLogicalW 的函数 我正在考虑尝试在 Mono 下运行我的应用程序 但当然我不能拥有这个 P Invoke 东西 据我所知
  • Python 继承 - 如何禁用函数

    在 C 中 您可以通过在子类中将其声明为私有来禁用父类中的函数 在 Python 中如何做到这一点 IE 如何从孩子的公共界面隐藏父母的功能 Python 中确实不存在任何真正的 私有 属性或方法 您可以做的一件事就是简单地重写子类中不需要
  • 声明空析构函数可防止编译器调用 memmove() 来复制连续对象

    考虑以下定义Foo struct Foo uint64 t data 现在 考虑以下定义Bar 它具有相同的数据成员Foo 但有一个empty 用户声明的析构函数 struct Bar Bar lt empty user declared
  • 反转位数组中的位顺序

    我有一长串位存储在无符号长整数数组中 如下所示 struct bit array int size nr of bits unsigned long array the container that stores bits 我正在尝试设计一
  • 将图像从 url 转换为 Base64

    使用图像文件 我获取需要发送到网络服务的图像的 URL 从那里图像必须保存在我的系统本地 我正在使用的代码 var imagepath imageid val from this getting the path of the select
  • Cordova iOS 将单页屏幕方向更改为横向

    我有一个用 Cordova 3 为 iPhone 开发的应用程序 目前该应用程序运行良好 我还限制了当前应用程序的横向视图 即应用程序仅以纵向显示 应用程序由大量描述和报告页面组成 我想要的是纵向显示所有页面并横向显示报告页面 我使用 Ba
  • 在MFC中创建窗口时如何获得最大可能的窗口大小?

    我需要获得正在创建的窗口的最大可能高度和宽度 窗口不会首先最大化 怎么做 您可以使用获取系统指标 https msdn microsoft com en us library windows desktop ms724385 v vs 85
  • 将 SQL 转换为 LINQ 查询 [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我有以下 SQL 查询 我需要将它放在 LINQ 中 我尝试了几件事 但无法让它工作 这是 SQL 查询 SELECT ST Descrip
  • 如何在 ColdFusion <2016 中保留结构中的分配顺序

    ColdFusion 不保留元素分配给结构的顺序 在我的特定情况下 当我需要从此结构创建 SOAP 信封并且接收者需要以特定顺序接收信封中的数据时 这就产生了问题 从 ColdFusion 2016 及更高版本开始 StructNew 方法
  • 如何使用固定位置的 jQuery 可拖动?

    它在 Firefox 中完美运行 但在 ie chrome 和 Opera 中不起作用 div has position fixed and is draggable 除了 Firefox 之外它不起作用 不要在 CSS 中设置固定 它适用
  • 将winsound转换为linux平台?

    在我不久前编写的一个聊天脚本中 我使用winsound python 库在收到新消息时播放 ding 声音 ding wav 现在我想知道如何才能使其在 Linux 上工作 仅使用 ogg 音频文件 代码如下 import sys impo
  • 在 std::views::join 之后使用 std::views::filter 无法编译

    我在使用时遇到问题std views filter在加入的流 范围上 我不知道这里到底出了什么问题 我想这些元素可能无法使用正确的 复制 移动 语义传递 应该使用引用包装器或其他东西 include
  • 将 mp4 视频保存到设备相机胶卷

    我从一个 NSString 开始 它是 mp4 文件的 url 从这里我希望将该视频保存到设备相机胶卷中 看来我只能保存 mov 文件 所以我必须首先转换 mp4 但我看到的关于此的几篇文章没有帮助 谁能帮助我完成这个任务 提前致谢 您可以
  • C# 使用 StreamReader 读取资源内的文本文件时出现 FileNotFound 异常

    using SteamReader sr new StreamReader text txt 我也尝试不将文本文件放在 resx file The StreamReader您正在使用的构造函数期望该文件存在于磁盘上 如果该文件嵌入到程序集中
  • 当我的应用程序关闭时,如何处理通知操作?

    问题概要 我正在编写一个 iOS 应用程序 它发送提醒通知 让用户通过 x callback url 运行其他应用程序 如果应用程序位于前台或后台 我的一切都可以完美运行 但当我的应用程序关闭时 它就无法运行 当我的应用程序关闭时 通知也会
  • 如何在 Xamarin 中重用相同的视图? XAML

    所以我得到了这段代码 我需要在或多或少的所有页面上重复使用 但是我有点厌倦了更改一个页面并且必须在 10 个或更多地方做同样的事情 有没有更好的方法做这个 使用 Xamarin Forms 也许可以使用自定义控制器或使用标记扩展在堆栈布局内
  • 使用 ISO V2 Coated 等颜色配置文件将 CMYK 颜色转换为 RGB?

    我知道这个问题之前已经以多种不同的方式提出过 但似乎没有一个与我的问题相关 我想转换一个CMYK准确地着色RGB使用颜色配置文件 例如ISO Coated V2 我想这样做 因为简单的数学转换会导致明亮的颜色无法在CMYK色彩空间 理想情况
  • 在 JSON 请求中发送图像

    我在用着JSON with REST用于使用 Web 服务的 api 现在我还需要根据请求发送图像 是否可以 如果是 我需要在客户端 服务器端进行哪些更改 在我的Java代码中 我应该如何发送图像内容 是否需要单独设置内容类型 执行此操作的
  • Python:无需 OpenCV 即可访问相机

    同志们 我想用 Python 从笔记本电脑摄像头捕获图像 目前所有迹象都指向 OpenCV 问题是 OpenCV 的安装是一场噩梦 而且每次您在新系统上重新安装代码时 这个噩梦都会再次发生 有没有更轻量级的方法在Python中捕获相机数据
  • Rails Paperclip S3 重命名数千个文件?

    我正在尝试重命名 s3 中的许多文件 更改当前的回形针has attached file path from stuff id updated at style extension to stuff id counter style ext