$plugin = true のときの動作 (Re: [Hiki-dev] mingplot plugin)

Satoru Takabayashi sator****@namaz*****
2003年 8月 13日 (水) 00:39:34 JST


TAKEUCHI Hitoshi:
 
> > いただきたいと思います。こういうサイト<http://nais.to/hiki/> 
> > を作るためのプラグインです。
> 
> おもしろいですねぇ。私も自分のところに環境を作って試したいと思っている
> のですが、ttf2fft の make がうまくいかないという体たらくです…

あらら。mingplot にはかずひこさん作の efont の
EfontSerifB.fdb が入っているので、普通に使うだけなら、特に 
ttf2fft の make は必要ないかなと思います。


表題の件ですが、Hiki 0.5-devel-20030730 で $plugin_debug =
true にして次のようなプラグイン

  def foo
    bar
  end

  def bar
    baz
  end

  def baz
     1 - nil
  end

の foo メソッドを呼ぶと、

  Hiki::PluginException(nil can't be coerced into Fixnum): foo
  ./style/default/html_formatter.rb:321:in `call_plugin_method'
  ./style/default/html_formatter.rb:174:in `to_s'
  ./style/default/html_formatter.rb:124:in `each'
  ./style/default/html_formatter.rb:124:in `to_s'
  ./hiki/command.rb:137:in `cmd_view'
  ./hiki/command.rb:77:in `send'
  ./hiki/command.rb:77:in `dispatch'
  /www/www.nais.to/hiki/hiki.cgi:28
  /www/www.nais.to/hiki/hiki.cgi:26:in `open_db'
  /www/www.nais.to/hiki/hiki.cgi:26

というメッセージが表示されて、プラグイン内のバックトレースが
表示されず、不便です。そこで、mingplot プラグインのデバッグ
次のようなコードを書いてごまかしていました。

  def foo_debug
    begin
      foo
    rescue => e
      sprintf("%s\n%s", e.message, e.backtrace)
    end
  end

この場合はプラグイン内のバックトレースが表示されます。

nil can't be coerced into Fixnum (eval):8:in `-'(eval):8:in `baz'(eval):5:in `bar'(eval):2:in `foo'(eval):13:in `foo_debug'./style/default/html_formatter.rb:315:in `send'./style/default/html_formatter.rb:315:in `call_plugin_method'./style/default/html_formatter.rb:174:in `to_s'./style/default/html_formatter.rb:124:in `each'./style/default/html_formatter.rb:124:in `to_s'./hiki/command.rb:137:in `cmd_view'./hiki/command.rb:77:in `send'./hiki/command.rb:77:in `dispatch'/www/www.nais.to/hiki/hiki.cgi:28/www/www.nais.to/hiki/hiki.cgi:26:in `open_db'/www/www.nais.to/hiki/hiki.cgi:26

$plugin_debug = true のときはプラグイン内のバックトレースを
表示するようにすると便利なんじゃないかと思いますが、いかがで
しょうか。もし CVS の最新版で改善していたりしたらすみません。




Hiki-dev メーリングリストの案内
Back to archive index