トップ «前の日記(2009-04-13) 最新 次の日記(2009-04-20)» 編集

Ussy Diary


2009-04-18

[Ruby]指定したディレクトリ以下にだけあるディレクトリ一覧のパスを取得する

久しぶりに Ruby を触り始めたのでリハビリ中です。標準にはディレクトリ一覧を取得するメソッドが用意されていないと思ったためつくってみました。

def directories(path = Dir.pwd)
  Dir.entries(path).map do |f|
    expand_path = File.expand_path(f, path)
    expand_path if File.directory?(expand_path)
  end[2..-1].delete_if {|v| v.nil?}
end

カレントディレクトリと親ディレクトリは使うことがないため除いています。さらに再帰的に辿れば指定したディレクトリ以下の一覧も取れると思います。 Find モジュールを使えば再帰にしなくてよさそうです。

map の結果に格納されるリストに対しては compact メソッドで directory にマッチしなかった nil を消していましたが、すべてディレクトリの場合は削除する対象がないため self を返さず nil を返すので見事にバグっていました。 delete_if は常に self を返すのでこちらを使うように修正しました。

無理矢理くっつけると分からなくなるなあ。普通にマッチしたものだけをリストに追加したほうがいいのかも。チェインはさじ加減が難しい。

[SSH][Git]パスワードなしで pull/push

Git で SSH アクセスする際にパスワードを毎回聞かれるのがうざかったので ssh-agent に登録してみました。

$ eval `ssh-agent`
$ ssh-add ~/.ssh/id_rsa

@IT:sshでパスワードなしにログインするには

Git 使ってるけど merge をほとんどしていないのであまり意味がない気がしますが、個人向けに Subversion より気軽にリポジトリがつくれるので良しとします。