DEV: use DiskSpace module for all disk space calculations

This normalizes it so we only carry one place for grabbing disk space size

It also normalizes the command made so it uses Discourse.execute_command
which splits off params in a far cleaner way.
This commit is contained in:
Sam Saffron 2020-02-18 15:13:09 +11:00
parent 28292d2759
commit 64b3512084
No known key found for this signature in database
GPG Key ID: B9606168D2FFD9F5
3 changed files with 12 additions and 4 deletions

View File

@ -215,7 +215,7 @@ class Admin::BackupsController < Admin::AdminController
private
def has_enough_space_on_disk?(size)
`df -Pk #{Rails.root}/public/backups | awk 'NR==2 {printf "%.0f", $4 * 1024;}'`.to_i > size
DiskSpace.free("#{Rails.root}/public/backups") > size
end
def ensure_backups_enabled

View File

@ -685,7 +685,7 @@ class CookedPostProcessor
end
def available_disk_space
100 - `df -P #{Rails.root}/public/uploads | tail -1 | tr -s ' ' | cut -d ' ' -f 5`.to_i
100 - DiskSpace.percent_free("#{Rails.root}/public/uploads")
end
def dirty?

View File

@ -12,11 +12,19 @@ class DiskSpace
end
def self.free(path)
`df -Pk #{path} | awk 'NR==2 {print $4;}'`.to_i * 1024
output = Discourse::Utils.execute_command('df', '-Pk', path)
size_line = output.split("\n")[1]
size_line.split(/\s+/)[3].to_i * 1024
end
def self.percent_free(path)
output = Discourse::Utils.execute_command('df', '-P', path)
size_line = output.split("\n")[1]
size_line.split(/\s+/)[4].to_i
end
def self.used(path)
`du -s #{path}`.to_i * 1024
Discourse::Utils.execute_command("du", "-s", path).to_i * 1024
end
def self.uploads_path