Path management in ruby


#1

Hi list,

While playing and coding with ruby, I found it often useful to have a
better
way to handle paths that in the actual version. I think it would be nice
to
have an unified way to manage paths.

$:.class => Array
ENV[‘PATH’] => String

class Path < Array def initialize(path = nil) if path.kind_of? String paths = path.split(':') paths.each do |p| push p end elsif path.kind_of? Array path.each do |p| push p end end end

def find(filename, ext=nil)
each do |path|
filepath = File.join(path, filename)
return filepath if File.exist?( filepath )
if ext
filepath = File.join(path, filename + ext)
return filepath if File.exist?( filepath )
end
end
return nil
end
alias :include? find

TODO : The join symbol changes between the platforms. Make this

dependent
of the platform.
def to_s
join(’:’)
end

end

p = Path.new($:)
p.include? ‘ipaddr.rb’
=> “/usr/lib/ruby/1.8/ipaddr.rb”


Cheers,
zimba.tm

weblog : http://zimba.oree.ch


#2

Have you seen the Pathname and Pathname2 modules? They’re part of the
standard library. They are also platform independant and give you all
the features of File, FileUtils, and more.

-Payton