[#83773] [Ruby trunk Bug#14108] Seg Fault with MinGW on svn 60769 — usa@...
Issue #14108 has been updated by usa (Usaku NAKAMURA).
9 messages
2017/11/15
[#83774] Re: [Ruby trunk Bug#14108] Seg Fault with MinGW on svn 60769
— Eric Wong <normalperson@...>
2017/11/15
usa@garbagecollect.jp wrote:
[#83775] Re: [Ruby trunk Bug#14108] Seg Fault with MinGW on svn 60769
— "U.NAKAMURA" <usa@...>
2017/11/15
Hi, Eric
[#83779] Re: [Ruby trunk Bug#14108] Seg Fault with MinGW on svn 60769
— Eric Wong <normalperson@...>
2017/11/15
"U.NAKAMURA" <usa@garbagecollect.jp> wrote:
[#83781] Re: [Ruby trunk Bug#14108] Seg Fault with MinGW on svn 60769
— "U.NAKAMURA" <usa@...>
2017/11/15
Hi, Eric,
[#83782] Re: [Ruby trunk Bug#14108] Seg Fault with MinGW on svn 60769
— Eric Wong <normalperson@...>
2017/11/15
"U.NAKAMURA" <usa@garbagecollect.jp> wrote:
[ruby-core:83846] [Ruby trunk Feature#14111] ArgumentErrorが発生した時メソッドのプロトタイプをメッセージに含む
From:
ewfawefw3@...
Date:
2017-11-20 21:51:00 UTC
List:
ruby-core #83846
Issue #14111 has been updated by esjee (SJ Stoker). File add_receiver_and_method_name_to_argument_error_for_application_code.diff added nobu (Nobuyoshi Nakada) wrote: > ... 返事してくれてありがとうございました。 数時間RubyのCをいじったらなんとか進みました。 必要なレシーバとメソッド名をArgumentErrorをinstance_variableとして加えてみました。パッチを添付しました。 GitHubにもプッシュしましたから、これで同じパッチが見えるはず: https://github.com/ruby/ruby/compare/trunk...esjee:print_prototype?expand=1 RubyじゃなくCで自装されてるメソッドは残念ながらまだです。 そういうメソッドは全部変えていかないと駄目みたいです。 まだこの方法が望ましいかどかも分からないいまではそれはやりすぎかと。 添付したパッチはどう思いますか?多分ですけど、改善できるところもあるとおもいます。 ---------------------------------------- Feature #14111: ArgumentErrorが発生した時メソッドのプロトタイプをメッセージに含む https://bugs.ruby-lang.org/issues/14111#change-67877 * Author: esjee (SJ Stoker) * Status: Open * Priority: Normal * Assignee: * Target version: ---------------------------------------- (日本人じゃないですが、日本語を勉強してますから、日本語でレポートしてみました 日本語で会話することはまだ馴れてないから、読みつらいや見苦しいところもあると思います そういうを指摘してくれれば幸いです) # Abstract ArgumentErrorが発生したときのメッセージをより有意義にするため、コールしたメソッドのプロトタイプを表示することを提案したいと思います # Background 今ではArgumentErrorが発生するとこんな感じです ``` [1] pry(main)> cat ./spec/kerk_class.rb class Kerk def foo1(a) end end [2] pry(main)> require './spec/kerk_class.rb' => true [3] pry(main)> Kerk.new.foo1 ArgumentError: wrong number of arguments (0 for 1) from /home/esjee/src/printprototype/spec/kerk_class.rb:2:in `foo1' ``` 簡単なメソッドやよく使うメソッドではこれでも問題ありません しかし、他の人のコードとか、あまり使わないメソッドだとこのメソッドのソースを読まないと分からないこともある Rubyのメソッドだとマニュアルを参照するしかないかもしれない # Proposal ArgumentErrorのメッセージにコールしたメソッドのプロトタイプを含む 例えば ``` [4] pry(main)> Kerk.new.foo1 ArgumentError: wrong number of arguments (0 for 1) Method prototype: def foo1(a) from /home/esjee/src/printprototype/spec/kerk_class.rb:2:in `foo1' ``` # Implementation https://github.com/esjee/PrintPrototype とくにこのファイル https://github.com/esjee/PrintPrototype/blob/master/lib/printprototype/core_ext/argument_error.rb # Evaluation ですけど、この実装には複数の問題があります * 複数のラインで書かれたメソッドのプロトタイプはどうやって見つければ? * 全ファイルを読み込んでるため、巨大なファイルだとパフォーマンスに問題があるかもしれない * Ruby自身のメソッドではrbファイルが見つからないため、表示できない * sentry-ravenに頼ってはいけないでしょう # Discussion これまで読んでいただいて、ありがとうございました 私から二つの質問があります * これはよいfeatureだと思いますか? * 上で挙げられた複数な問題をどうやって乗り越えられるでしょうか? # Summary ArgumentErrorが発生した時にもっと有意義なメッセージを表示したいと思います 私はこれをgemにしようと思いましたが、満足のできる実装にはできませんでした 小さくても、これはRubyを改良するfeatueだと信じてるです 皆さんの意見と助けを求め、これを書きました ---Files-------------------------------- add_receiver_and_method_name_to_argument_error_for_application_code.diff (4.5 KB) -- https://bugs.ruby-lang.org/ Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe> <http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>