Kouhei Sutou
kou****@cozmi*****
2006年 1月 22日 (日) 14:01:19 JST
須藤です. CレベルでRuby拡張の初期化時のエラー処理を書くのが面倒だった ので,ほとんどをRubyレベルに追い出しました. ということで,今は以下のようになっています. Ruby拡張の初期化(kz-rb-ext.c:kz_ext_init) ↓ kazehakase-init-pre.rbの呼び出し (Ruby/GTK2が使えるかとかチェック. チェックに失敗したらこれ以上なにもしない) ↓ バインディング周りの初期化(Init_kz_rb_*) ↓ kazehakase-init.rbの呼び出し ↓ Kz.reloadの呼び出し(kazehakase.rbのロード) あと,前は$LOAD_PATHと$LOADED_FEATURESをKz.reloadのたびにリ セットしていましたが,$LOAD_PATHだけリセットするようにしまし た. 理由は以下のふたつです. * 各アクションはどうせreadしてevalしているから $LOADED_FEATURESの影響は受けない * 普通のライブラリ(NKFとか)が二重にロードされるのが気持 ち悪い Kz.reloadするごとに再読み込みしたい場合(例えば Kz::RubyDialogをいじっている時など)はrequireをloadに変える (require 'kz/ruby-dialog' -> load 'kz/ruby-dialog.rb'(.rb を付け加えるのを忘れずに!))か,アクションファイルに直書き で良いと思います.