discourse/lib/disk_space.rb
Sam Saffron a3d576534a
FIX: correct upload statistics report for external storage
Follows up #64b35120

This also corrects it so bytes used for internal storage counts all the space
used, previously it was only counting uploads not optimized images.

Additionally we now correctly count storage for optimized images.
2020-02-20 15:15:53 +11:00

41 lines
922 B
Ruby

# frozen_string_literal: true
class DiskSpace
def self.uploads_used_bytes
if Discourse.store.external?
Upload.sum(:filesize).to_i + OptimizedImage.sum(:filesize).to_i
else
used(uploads_path)
end
end
def self.uploads_free_bytes
if Discourse.store.external?
0
else
free(uploads_path)
end
end
def self.free(path)
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)
Discourse::Utils.execute_command("du", "-s", path).to_i * 1024
end
def self.uploads_path
"#{Rails.root}/public/#{Discourse.store.upload_path}"
end
private_class_method :uploads_path
end