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。
我在 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。