Ruby

windows & gem で hpricot のインストール

はまったのでメモmechanize を入れようとしたら hpricot をインストールするとこでビルドできないっていうエラーがでた。windowsのrubyでhpricotのインストールエラー - (゚∀゚)o彡 sasata299's blogの方法でもいいんだけど、もうちょっと調査してみた。なんで…

mingw で qdbm の拡張ライブラリをビルド

bsfilter で qdbm が使いたくなって頑張ってみた。 使ったのは ruby-1.8.4-i386-mingw32 qdbm-1.8.75のソース rbconfig.rb の編集 まずは RUBY_DIR/lib/ruby/1.8/i386-mingw32/rbconfig.rb をこんな感じで修正する。 こうしておくと mkmf.rb が作る Makefile…

Dir.glob を Shift_JIS でも動くようにする

こんなんでいけた。 ただ、ruby 1.8.3 以降だと必要ないとかって噂もある。使ってないから判らないけど。 ruby で defadvice とか aspect っぽい事をやるにはこうすればいいのね。 Module.method で symbol-function みたいに元の定義を取っておいて、上書き…

ruby で css でスクレイプ

こんなのがあるんだって。 http://blog.labnotes.org/category/scrapi/ ruby でスクレイピングして web の情報を取得するのには、今まで正規表現か xpath でやってたので、わりと面倒でした。で、ふと scrAPI というスクレイピングツールキットを知ったので…

to_yamlする時にmapのキーでソートする。

こうする。 to_yaml[:SortKeys=true]ソート順を指定したい場合はこんなんでいけた。 h = {'a' => 1, 'b' => 2, 'c' => 3, 'd' => 4} def h.sort super {|a, b| a[1] <=> b[1] } end puts h.to_yaml(:SortKeys => true)

親クラスのコンストラクタ

親クラスのメソッドを呼ぶときと同じでいいみたい。 class Base attr_reader :field def initialize(field) @field = field end def to_s instance_variables.map {|v| "#{v}=#{eval(v)}" }.join(',') end end class Derive < Base attr_reader :field2 def …