我们为话语创建了synchronizer plugin,它应该将备份同步到Google云端硬盘服务帐户
为了保持管理员的谷歌驱动器帐户clutterfree,我们在同步器的末尾构建了一个方法,称为remove_old_files
def remove_old_files
google_files = session.files
sorted = google_files.sort_by {|x| x.created_time}
keep = sorted.take(SiteSetting.discourse_sync_to_googledrive_quantity)
trash = google_files - keep
trash.each { |d| d.delete(true) }
end
我们在实例变量之前记住了会话对象。因此,使用session.files
,我们会在google云端硬盘帐户中获取所有文件的数组。在sorted
变量中,我们将它们从新到旧排序。在keep
变量中,我们采用前几个(管理员设置数量),在trash
变量中我们定义其余部分。在此之前,该方法在控制台中工作。
现在,在Google云端硬盘的文档中,File对象有一个delete
方法:
File 'lib/google_drive/file.rb', line 182
def delete(permanent = false)
if permanent
@session.drive.delete_file(id)
else
@session.drive.update_file(id, { trashed: true }, {})
end
nil
end
但是当我尝试通过rails控制台删除时,它会告诉我Success - nil
好像一切都很顺利。 但是!当我计算或调用它们时,文件仍然存在。即使我尝试删除它们设置permanent = true
:/
为什么不谷歌删除旧的备份文件?