我在rails服务器上有一个ruby,它维护用于移动应用程序的可视化自动化测试的图像。开发人员在每个拉取请求上运行可视化自动化,因此他或她确切地知道进入仓库的内容。
已经过了一个多月的生产使用,我开始考虑如何删除旧版本或旧图像,这样我就可以节省空间(以及每个循环的一些时间)。活动记录如下:
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
我希望能够在超过一个月的时候删除构建版本。如何在不触及上个月运行的构建的情况下在生产环境中执行此操作?
非常感谢任何帮助。
答案 0 :(得分:1)
您需要cron
来实现它。如果您的生产环境位于Heroku
,那么您需要了解Heroku Scheduler
。它可以帮助您每天运行某项任务。在该任务中,您将检索created_at
/ updated_at
或您自己的时间戳小于1.month.ago
的所有构建并删除它们。
答案 1 :(得分:1)
我会按照以下步骤执行此操作:
创建一个rake任务,其中包含删除旧记录的逻辑和查询。
使用生产服务器上的whenever或rufus-scheduler等gem来安排任务。