Bug #12253
closedtkとmechanizeを併用してTkButtonを押すと"TypeError: allocator undefined for TkEvent::Event"エラーが起こる
Description
Rubyコミュニティ 御中
恐れ入りますがお尋ねしたいことがあり、チケットを切りました。
ruby/tkとmechanizeを併用した際に「TypeError: allocator undefined for TkEvent::Event」というエラーが発生します。
2.2.4ではエラーになるのですが、2.1.8では問題なく動作します。
2.3.0はいまのところ "gem install mechanize" が失敗する(mechanizeが依存しているnokogiriが2.3.0未対応の)ため、調査はできていません。
誠に恐れ入りますが、当方に誤りがあるか、何らかの不具合か、ご確認をお願いできますでしょうか?
急ぎではないためお時間があればで大丈夫です。
実験に使ったコード、エラーメッセージ、インストールしているgemを以下に記載致します。
コード
require 'tk' require 'mechanize' root = TkRoot.new root.title = "test" test_button = TkButton.new(root, 'text' => 'test').pack test_button.bind('ButtonRelease-1', proc {|ev| puts "test"}) Tk.mainloop エラー
TypeError: allocator undefined for TkEvent::Event ---< backtrace of Ruby side >----- C:/Apps/ruby/2.2.4-x64/lib/ruby/2.2.0/tk/event.rb:517:in `new' C:/Apps/ruby/2.2.4-x64/lib/ruby/2.2.0/tk/event.rb:517:in `block in install_bind_for_event_class' C:/Apps/ruby/2.2.4-x64/lib/ruby/2.2.0/tk.rb:1460:in `call' C:/Apps/ruby/2.2.4-x64/lib/ruby/2.2.0/tk.rb:1460:in `eval_cmd' C:/Apps/ruby/2.2.4-x64/lib/ruby/2.2.0/tk.rb:1460:in `cb_eval' C:/Apps/ruby/2.2.4-x64/lib/ruby/2.2.0/tk.rb:1407:in `call' C:/Apps/ruby/2.2.4-x64/lib/ruby/2.2.0/tk.rb:1611:in `block in callback' C:/Apps/ruby/2.2.4-x64/lib/ruby/2.2.0/tk.rb:1610:in `catch' C:/Apps/ruby/2.2.4-x64/lib/ruby/2.2.0/tk.rb:1610:in `callback' C:/Apps/ruby/2.2.4-x64/lib/ruby/2.2.0/tk.rb:1305:in `mainloop' C:/Apps/ruby/2.2.4-x64/lib/ruby/2.2.0/tk.rb:1305:in `block in <module:TkCore>' ---< backtrace of Tk side >------- invoked from within "rb_out c00001 26 ?? ?? ?? 0 ?? ?? ?? 0x0000000000000000 0x0000000000000000 5 .w00000 174 149 ?? 1 ?? ?? ?? ?? 0x000000000013025A ?? ?? ?? ?? 264 35014..." (command bound to event) エラーが生じるrubyのバージョン
C:\Users\dummy\Desktop>ruby -v ruby 2.2.4p230 (2015-12-16 revision 53155) [x64-mingw32] C:\Users\dummy\Desktop>gem -v 2.4.5.1 C:\Users\dummy\Desktop>gem list *** LOCAL GEMS *** bigdecimal (1.2.6) domain_name (0.5.20160310) http-cookie (1.0.2) io-console (0.4.3) json (1.8.1) mechanize (2.7.4) mime-types (2.99.1) mini_portile2 (2.0.0) minitest (5.4.3) net-http-digest_auth (1.4) net-http-persistent (2.9.4) nokogiri (1.6.7.2 x64-mingw32) ntlm-http (0.1.1) power_assert (0.2.2) psych (2.0.8) rake (10.4.2) rdoc (4.2.0) test-unit (3.0.8) unf (0.1.4) unf_ext (0.0.7.2 x64-mingw32) webrobots (0.1.2) 問題なく動作するrubyのバージョン
C:\Users\dummy\Desktop>ruby -v ruby 2.1.8p440 (2015-12-16 revision 53160) [x64-mingw32] C:\Users\dummy\Desktop>gem -v 2.2.5 C:\Users\dummy\Desktop>gem list *** LOCAL GEMS *** bigdecimal (1.2.4) domain_name (0.5.20160310) http-cookie (1.0.2) io-console (0.4.3) json (1.8.1) mechanize (2.7.4) mime-types (2.99.1) mini_portile2 (2.1.0) minitest (4.7.5) net-http-digest_auth (1.4) net-http-persistent (2.9.4) nokogiri (1.6.8.rc3 x64-mingw32) ntlm-http (0.1.1) pkg-config (1.1.7) psych (2.0.5) rake (10.1.0) rdoc (4.1.0) test-unit (2.1.8.0) unf (0.2.0.beta2) webrobots (0.1.2) 以上、恐れ入りますがよろしくお願いいたします。
Files
Updated by aves_ramphastos (Seigo Ishigane) over 9 years ago
申し訳ありません。いま気づいて上記のコードから
require 'mechanize'
をはずしたらどうなるかを試しました。
結果は同じで、2.1.8では動作しますが、2.2.4では上記と同様のエラーでした。
タイトルは「2.2.4ではTkRootを明示的にnewするとエラーになる」のほうが適切だったかもしれません。
Updated by aves_ramphastos (Seigo Ishigane) over 9 years ago
はじめのコードより
require 'mechanize'
をはずして2.3.0p0で試した結果、エラー無く動作しました。
申し訳ありません、当方の早とちりでお手数をお掛けしました。
恐れ入りますがチケットのクローズをお願い致します。
Updated by nobu (Nobuyoshi Nakada) over 9 years ago
- Description updated (diff)
- Status changed from Open to Closed
- Backport changed from 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN to 2.1: DONTNEED, 2.2: REQUIRED, 2.3: DONTNEED
backport r50338.
Updated by usa (Usaku NAKAMURA) over 9 years ago
- Backport changed from 2.1: DONTNEED, 2.2: REQUIRED, 2.3: DONTNEED to 2.1: DONTNEED, 2.2: DONE, 2.3: DONTNEED
ruby_2_2 r54672 merged revision(s) 50338.