Forum: Ruby-dev [ruby-trunk - Bug #6502][Assigned] include Syslog

Posted by mame (Yusuke Endoh) (Guest)
on 2012-05-26 19:54
(Received via mailing list)
Issue #6502 has been reported by mame (Yusuke Endoh).

----------------------------------------
Bug #6502: include Syslog
https://bugs.ruby-lang.org/issues/6502

Author: mame (Yusuke Endoh)
Status: Assigned
Priority: Low
Assignee: knu (Akinori MUSHA)
Category:
Target version: 2.0.0
ruby -v: ruby 2.0.0dev (2012-05-26 trunk 35811) [i686-linux]


knu さん

http://d.hatena.ne.jp/nagachika/20120521#r35737

で指摘されていますが、Syslog#inspect が rb_define_module_function なのは意図的でしょうか。
rb_define_singleton_method の方が適切なように思います。

具体的には、以下のように include したクラスが inspect できません。

$ ruby -rsyslog -e 'class A; include Syslog; end; p A.new'
-e:1:in `inspect': wrong argument type A (expected Module) (TypeError)
        from -e:1:in `p'
        from -e:1:in `<main>'

r35737 前はこのコードで SEGV していたようなので、改善されたのは確かです。

--
Yusuke Endoh <mame@tsg.ne.jp>
Posted by knu (Akinori MUSHA) (Guest)
on 2013-02-18 05:23
(Received via mailing list)
Issue #6502 has been updated by knu (Akinori MUSHA).

Target version changed from 2.0.0 to 2.1.0

これ、Syslogをクラスからモジュールに変えた大昔のコードですね。
もはやSyslogは継承できないのでそれが正しそうです。2.1.0までに直します。
----------------------------------------
Bug #6502: include Syslog
https://bugs.ruby-lang.org/issues/6502#change-36490

Author: mame (Yusuke Endoh)
Status: Assigned
Priority: Low
Assignee: knu (Akinori MUSHA)
Category:
Target version: 2.1.0
ruby -v: ruby 2.0.0dev (2012-05-26 trunk 35811) [i686-linux]


knu さん

http://d.hatena.ne.jp/nagachika/20120521#r35737

で指摘されていますが、Syslog#inspect が rb_define_module_function なのは意図的でしょうか。
rb_define_singleton_method の方が適切なように思います。

具体的には、以下のように include したクラスが inspect できません。

$ ruby -rsyslog -e 'class A; include Syslog; end; p A.new'
-e:1:in `inspect': wrong argument type A (expected Module) (TypeError)
        from -e:1:in `p'
        from -e:1:in `<main>'

r35737 前はこのコードで SEGV していたようなので、改善されたのは確かです。

--
Yusuke Endoh <mame@tsg.ne.jp>
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.