川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を使ってはまったような。。
# なんかぐちゃぐちゃやって解決したような覚えがあるんだけど、どうやって解決したんだっけか。