2013-01-01から1年間の記事一覧

Rubyでトポロジカルソートする

トポロジカルソート - Wikipedia依存関係を定義したグラフを元に処理順決めるときに使ったりするあれです、あれ。 gitのコミットオブジェクト(複数の親を持つ可能性がある)を並び替える必要があったので調べた。Rubyには tsortというライブラリが標準添付されて…

ActiveRecord、STIする時のクラス決定ルールを自由に決める

前提 ActiveRecord 3.2.11 実装 クラスの決定はActiveRecord::Inheritance#instantiate(record)内で行ってるので、そこにパッチ当てればいける。 https://gist.github.com/4690748ただ、クラスの決定はロード時にしか行われないわけで、動的に変わるカラムを…

Ruby、method_addeみたいに定数が定義されたときフックしたい

けど無理っぽいので本体改造してみたModule#const_addedを定義しておいて、定数定義する関数の本体が rb_const_set(VALUE klass, ID id, VALUE val) なので、そこに細工して定数セット後に const_added を呼んでやればOK。 ただしrb_const_setはRuby起動時のク…