Ruby on rails 使用Google Drive gem从Google Drive服务帐户删除文件
我们为Discussion创建了一个,它应该将备份同步到google drive服务帐户。Ruby on rails 使用Google Drive gem从Google Drive服务帐户删除文件,ruby-on-rails,ruby,google-drive-api,backup,discourse,Ruby On Rails,Ruby,Google Drive Api,Backup,Discourse,我们为Discussion创建了一个,它应该将备份同步到google drive服务帐户。 为了保持管理员的google drive帐户不乱,我们在同步器的末尾构建了一个方法,称为remove\u old\u files def remove_old_files google_files = session.files sorted = google_files.sort_by {|x| x.created_time} keep = sorted.take(SiteSetting.d
为了保持管理员的google drive帐户不乱,我们在同步器的末尾构建了一个方法,称为
remove\u old\u 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
我们可以获得谷歌硬盘帐户中所有文件的数组。在sorted
变量中,我们将它们从新到旧进行排序。在keep
变量中,我们取前几个(设置数量的管理员帽),在trash
变量中,我们定义其余的。在此之前,该方法在控制台中工作。
现在,在谷歌硬盘gem的文档中,有一个文件对象的delete
方法:但是当我试图通过rails控制台删除时,它告诉我
Success-nil
,好像一切都很顺利<但是当我计算或调用这些文件时,它们仍然存在。即使我试图删除它们设置permanent=true
:/
谷歌为什么不删除旧的备份文件?定义“仍然存在”。删除的确切响应是什么(即是200还是204)?你是删除还是删除?
def delete(permanent = false)
if permanent
@session.drive.delete_file(id)
else
@session.drive.update_file(id, { trashed: true }, {})
end
nil
end