htree を OSX にインストールするときにこけた

htreexmlやhtmlをparseするための rubyのライブラリらしい。

ruby install.rb

とやったらば、

install.rb:19:in `target_directory': could not find target install directory (RuntimeError)

となってこけた。

ruby初心者なのでよくわからないけど、

def target_directory
  $:.each {|loc|
    if %r{/site_ruby/[\d.]+\z} =~ loc
      return loc
    end
  }
  raise "could not find target install directory"
end

となっていて、一方 $: (requireとかで参照するディレクトリらしい)は

>> p $:
["/Library/Ruby/Site/1.8", "/Library/Ruby/Site/1.8/powerpc-darwin9.0", "/Library/Ruby/Site/1.8/universal-darwin9.0", "/Library/Ruby/Site", "/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8", "/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/powerpc-darwin9.0", "/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin9.0", "."]

だった。 OSXにバンドルされている ruby には site_ruby というディレクトリ名がついてないっぽ

    if %r{/Site/[\d.]+\z} =~ loc

と修正したらば /Library/Ruby/Site/1.8 に入った。めでたし

正規表現

というかエスケープ文字の復習。

  • \d は数字
  • \z は EOF (ここでは文字の終端)