Monday, October 4, 2010

Return the device name

This will return the name of the device on which the file resides on ...

class File::Stat
  def self.device_name(file)
    Dir['/dev/*'].inject({}) { |h, v|
      h.update(File.stat(v).rdev => v)
    }.values_at(File.stat(file).dev).first || nil
  end
end


Simple use-case:

(main):001:0> File::Stat.device_name('/etc/resolv.conf')
=> "/dev/sda3"


Please note that this code may not be portable enough as it relies on the content of /dev.

No comments: