What is the best way to get diskspace information with ruby. I would prefer a pure ruby solution. If not possible (even with additional gems), it could also use any command available in a standard ubuntu desktop installation to parse the information into ruby.
You could use the sys-filesystem gem (cross platform friendly)
require 'sys/filesystem'
stat = Sys::Filesystem.stat("/")
mb_available = stat.block_size * stat.blocks_available / 1024 / 1024
How about simply:
spaceMb_i = `df -m /dev/sda1`.split(/\b/)[24].to_i
where '/dev/sda1' is the path, determined by simply running df
(Ruby) Daniel Berger maintains a lot of gems in this field. To be found there: sys-cpu, sys-uptime, sys-uname, sys-proctable, sys-host, sys-admin, sys-filesystem. They are (AFAIK) multi-platform.
This is an extension to dkams answer which is not wrong, but calculated the complete space of ones drive, to check for the remaining usable .i.e. the FREE space on a drive substitute kdams secodn line with the following:
gb_available = stat.bytes_free / 1024 / 1024 / 1024
This will return the remaining free space on your drive in Gigs.
Hi i have created gem for that: https://github.com/pr0d1r2/free_disk_space
gem 'free_disk_space' # add line to Gemfile
FreeDiskSpace.terabytes('/')
FreeDiskSpace.gigabytes('/')
FreeDiskSpace.megabytes('/')
FreeDiskSpace.kilobytes('/')
FreeDiskSpace.bytes('/')
This works only on a Linux system: If you don't mind calling out to the shell, you can use df
for a filesystem and parse the output with a Regexp:
fs_to_check = '/boot'
df_output = `df #{fs_to_check}`
disk_line = df_output.split(/\n/)[1]
disk_free_bytes = disk_line.match(/(.+)\s+(\d+)\s+(\d+)\s+(\d+)\s+/)[4].to_i
disk_free_mbs = disk_free_bytes / 1024
puts(disk_free_mbs)
Similar to comment rogerdpack's comment to get the space free in GB / MB you may try following
# Get free space in Gb in present partition
gb_free = `df -BG .`.split[10].to_i
# Get free space in MB in /dev/sda1 partition
mb_free = `df -BM /dev/sda1`.split[10].to_i
puts gb_free, mb_free
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With