川o・-・)<2nd lifeさんで、Pathnameの話題が出てましたね。
ぼくもdaigoさんのRedHandedでの紹介を見てからすっかりPathnameの虜です。一度使うと離れられないです。
Pathnameファンとしては、このあたりもおすすめ。
- mkpath
- find
- rmtree
使い方はこんなかんじ。
Pathname.mkpath
Pathname.new('/tmp/foo').exist? # => false
Pathname.new('/tmp/foo/bar/hoge').mkpath # => 上位のディレクトリも自動的に生成
Pathname.new('/tmp/foo/bar/hoge').exist? # => true
Pathname.new('/tmp/foo').exist? # => true
Pathname.find(&block)
Pathname.new('/tmp/foo').find do |f|
p f.basename.to_s if f.directory?
end
# => "foo"
# => "bar"
# => "hoge"
Pathname.rmtree
Pathname.new('/tmp/foo/bar/hoge').mkpath
p = Pathname.new('/tmp/foo')
p.exist? # => true
p.rmtree # => 配下のディレクトリも再帰的に削除
p.exist? # => false
Find.findがしっくり来なかったんで、Pathname知った時はうれしかったなぁ。あと、コードも簡潔でめりはりあって好きです。
# そういえば、ちょっと前にWindows環境でPathname.cleanpathを使ってはまったような。。
# なんかぐちゃぐちゃやって解決したような覚えがあるんだけど、どうやって解決したんだっけか。