Path management in ruby

Z

zimba.tm

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

<code>
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"
</code>
 
P

Payton Swick

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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,141
Messages
2,570,817
Members
47,362
Latest member
ChandaWagn

Latest Threads

Top