[#41278] [BUG:1.9] BINARY should not be ASCII-compatible — Yugui <yugui@...>

Yuguiです。

15 messages 2010/05/11

[#41407] [Bug #3339] win32ole test failure — Usaku NAKAMURA <redmine@...>

Bug #3339: win32ole test failure

20 messages 2010/05/25
[#41411] Re: [Bug #3339] win32ole test failure — Masaki Suketa <masaki.suketa@...> 2010/05/25

助田です。

[#41412] Re: [Bug #3339] win32ole test failure — "U.Nakamura" <usa@...> 2010/05/25

こんにちは、なかむら(う)です。

[ruby-dev:41474] Re: NoMethodErrorなどのmessage

From: Masatoshi SEKI <m_seki@...>
Date: 2010-05-30 21:32:07 UTC
List: ruby-dev #41474
咳といいます。

On 2010/05/30, at 23:33, Yukihiro Matsumoto wrote:

> まつもと ゆきひろです
> 
> In message "Re: [ruby-dev:41471] Re: NoMethodErrorなどのmessage"
>    on Sun, 30 May 2010 16:09:41 +0900, Masatoshi SEKI <m_seki@mva.biglobe.ne.jp> writes:
> 
> |とても長いっぷりは、RWikiのプロセスが1Gを超えるんですが
> |その根になるオブジェクトへのNoMethodErrorのときなどに
> |とても待たされます、って感じです。
> 
> となると、問題になるのはNoMethodErrorではなくてinspectであっ
> て、かつ問題になりそうな対象がわかってるんですから、その根と
> なるオブジェクトのinspectを再定義するのはどうでしょうか。そ
> れとも、単なる配列とかなのかな?

はい。すでにそれはもう対処しました。
サーバ側では次のようにしました。
私のケースではうまくいきます。

class Object
  def inspect
    to_s
  end
end

drbをrequireしたらinspectをいつも上書きしようかと
思いました。



NoMethodErrorのメッセージは、inspect結果の文字列が
長かったら(65文字?)、to_sの方が呼ばれてしまうので、
多くの場合(ちょっと嘘ですが)、inspectの後にto_sする
ことになって、もったいないように思うんです。
状況によってオブジェクトの文字列表現が変わるので、
メッセージを機械的に処理することもできないし。

inspectに文字列の長さの上限を与えられたら良かったんでしょうね。



> 
> |--
> |a = Array.new(ARGV.shift.to_i)
> |
> |begin
> |  a.foo
> |rescue
> |  Marshal.dump($!)
> |end
> |--
> |
> |こんなのを書いて、profileとるとinspectが呼ばれているのがわかります。
> 
> なるほど。ご指摘のように
> 
> |Marshal.dumpのほうは、
> |
> |    rb_define_method(rb_cNameErrorMesg, "_dump", name_err_mesg_to_str, 1);
> |
> |が関係あるのかなあと想像してます。
> 
> のせいでしょうね。この辺は中田さんのコードなので、早急に判断
> できないのですが、ここはなんらかの対処した方が良いかもしれま
> せん。





In This Thread