Ruby on Rails 在给定时间后从数据库中清除旧行

Ruby on Rails purge old rows from database after a given amount of time

我在 rails 服务器上有一个 ruby 维护移动应用程序视觉自动化测试的图像。开发人员 运行 对每个拉取请求进行可视化自动化,因此他或她确切地知道回购中的内容。

生产使用已经一个多月了,我开始考虑如何删除旧版本或旧图像,以便节省 space(以及一些 each 循环的时间)。活动记录如下:

class Project < ActiveRecord::Base
  has_many :test_suites
  has_many :builds
end

迁移看起来像这样:

class AddProjectToBuild < ActiveRecord::Migration
  def change
    add_reference :builds, :project, index: true
  end
end

我希望能够删除超过 1 个月的构建。我如何才能在生产环境中执行此操作而不触及上个月具有 运行 的构建?

如有任何帮助,我们将不胜感激。

您需要 cron 才能实现。如果您的生产环境在 Heroku 上,您需要研究 Heroku Scheduler。它可以帮助您每天 运行 完成某项任务。在该任务中,您将检索所有 created_at/updated_at 或您自己的时间戳小于 1.month.ago 的构建并删除它们。

我将按照以下步骤进行操作:

  • 创建一个 rake 任务,其中包含删除旧记录的逻辑和查询。

  • 在您的生产服务器上使用 gem 安排任务,例如 whenever or rufus-scheduler