From: "zimba.tm" Date: 2006-03-06T18:41:39+09:00 Subject: Path management in ruby 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