From ba38ccf1dd2da3bac1d7f55c1d96e9cf9831636f Mon Sep 17 00:00:00 2001 From: Philipp Bayer Date: Mon, 16 Jun 2014 16:13:04 +1000 Subject: [PATCH] Adds a rake task, and a task to whenevers schedule, to delete all zips in public/data/zip older than 2 days --- config/schedule.rb | 4 ++++ lib/tasks/dump_clean.rake | 22 ++++++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 lib/tasks/dump_clean.rake diff --git a/config/schedule.rb b/config/schedule.rb index e015bf4..83b354c 100644 --- a/config/schedule.rb +++ b/config/schedule.rb @@ -22,3 +22,7 @@ every :day, at: '1am' do rake 'dump:full', environment: 'production' end + +every 7.days, at: '1am' do + rake 'dump:clean', environment: 'production' +end diff --git a/lib/tasks/dump_clean.rake b/lib/tasks/dump_clean.rake new file mode 100644 index 0000000..6a00a12 --- /dev/null +++ b/lib/tasks/dump_clean.rake @@ -0,0 +1,22 @@ +namespace :dump do + desc 'clean everything in public/zip older than 2 days' + task clean: :environment do + dir = File.join(Rails.root, 'public/data/zip') + # Don't ever delete the link and what is linked to + datadump = File.join(dir, 'opensnp_datadump.current.zip') + forbidden_files = [datadump] + forbidden_files << File.readlink(datadump) unless not File.file? datadump + + Dir.entries(dir).each do |f| + f = File.join(dir, f) + # Has to be older than 2 days, don't delete important files, only delete archives + if (get_file_age_in_days(f) > 2) and (not forbidden_files.include? f) and (f.ends_with? 'zip') + File.delete(f) + end + end + end +end + +def get_file_age_in_days(file) + (Time.now - File.mtime(file)) / (60 * 60 * 24) +end