[Kazehakase-devel 2587] Ruby拡張の初期化プロセスの変更

Back to archive index

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
を付け加えるのを忘れずに!))か,アクションファイルに直書き
で良いと思います.



Kazehakase-devel メーリングリストの案内
Back to archive index