もっとPathname。

by tanabe on March 10, 2006

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



この記事へのコメント
どもども。
Posted by daigo at March 10, 2006 19:44
Pathnameにはいつもお世話になってます。
まさにHow Powerful Pathname Is!です。
Posted by sunao at March 11, 2006 03:04