From: Lin Jen-Shin Date: 2011-02-16T00:12:27+09:00 Subject: [ruby-core:35255] [Ruby 1.9-Bug#4401][Open] override :method method breaks Psych --mimepart_4d5a97d64c798_1dc2b33b2fa302ee Content-Type: text/plain Content-Transfer-Encoding: Quoted-printable Content-Disposition: inline Bug #4401: override :method method breaks Psych http://redmine.ruby-lang.org/issues/show/4401 Author: Lin Jen-Shin Status: Open, Priority: Normal Assigned to: Aaron Patterson, Category: ext, Target version: 1.9.x ruby -v: ruby 1.9.2p136 (2010-12-25 revision 30365) [x86_64-darwin10.5.0]= I am not sure if this could be considered a bug, but it used to work. To reproduce it: ruby -r psych -v -e 'Psych.dump(Struct.new(:method).new)' ruby 1.9.2p136 (2010-12-25 revision 30365) [x86_64-darwin10.5.0] /usr/local/Cellar/ruby/1.9.2-p136/lib/ruby/1.9.1/psych/visitors/yaml_tree= .rb:48:in `method': wrong number of arguments(1 for 0) (ArgumentError) from /usr/local/Cellar/ruby/1.9.2-p136/lib/ruby/1.9.1/psych/visit= ors/yaml_tree.rb:48:in `accept' from /usr/local/Cellar/ruby/1.9.2-p136/lib/ruby/1.9.1/psych/visit= ors/yaml_tree.rb:36:in `<<' from /usr/local/Cellar/ruby/1.9.2-p136/lib/ruby/1.9.1/psych.rb:16= 5:in `dump' from -e:1:in `
' I don't have a good idea how to fix it, but here's some demonstration: https://github.com/godfat/ruby/commit/f4e0e8f781b05c767ad2472a43a4ed0727a= 75708 https://github.com/godfat/ruby/commit/c7a6cf975d88828c2ed27d253f41c480f9b= 66ad6 Patches attached as well, the same as above two commits. I think they are against r30885. Many thanks! p.s. this issue was found in delayed_job's: class PerformableMethod < Struct.new(:object, :method, :args) ---------------------------------------- http://redmine.ruby-lang.org --mimepart_4d5a97d64c798_1dc2b33b2fa302ee Content-Type: application/octet-stream; name=0001-psych-visitors-yaml_tree.rb-use-public_method-instea.patch Content-Transfer-Encoding: Base64 Content-Disposition: attachment; filename=0001-psych-visitors-yaml_tree.rb-use-public_method-instea.patch RnJvbSBmNGUwZThmNzgxYjA1Yzc2N2FkMjQ3MmE0M2E0ZWQwNzI3YTc1NzA4 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBMaW4gSmVuLVNoaW4g PGdvZGZhdEBnb2RmYXQub3JnPgpEYXRlOiBUdWUsIDE1IEZlYiAyMDExIDIy OjI1OjE4ICswODAwClN1YmplY3Q6IFtQQVRDSCAxLzJdIHBzeWNoL3Zpc2l0 b3JzL3lhbWxfdHJlZS5yYjogdXNlIHB1YmxpY19tZXRob2QgaW5zdGVhZCBv ZiBtZXRob2Q6CgpCZWZvcmUgdGhpcyBjb21taXQsIHdlIGNhbid0IGR1bXAg dGhpcyBvYmplY3Q6CgogICAgU3RydWN0Lm5ldyg6bWV0aG9kKS5uZXcoJ292 ZXJyaWRlJykKCmJlY2F1c2UgaXQgb3ZlcnJpZGVzIDptZXRob2QgbWV0aG9k LiBVc2UgcHVibGljX21ldGhvZCBkaWRuJ3QgcmVhbGx5CnNvbHZlIHRoZSBw cm9ibGVtLCBzaW5jZSBub3cgd2UgY2FuJ3QgZHVtcCBvYmplY3RzIG92ZXJy aWRlCnB1YmxpY19tZXRob2QuIEF0IGFueSByYXRlLCByZXNwb25kX3RvPyB3 aXRoIG9uZSBhcmd1bWVudCBvbmx5IGNoZWNrcwpmb3IgcHVibGljIG1ldGhv ZHMsIHNvIGhlcmUgc3RpbGwgbWlnaHQgYmUgYmV0dGVyIHRvIHVzZSBwdWJs aWNfbWV0aG9kCmluIHRlcm1zIG9mIGNvbnNpc3RlbmN5LgoKSSBhbSBub3Qg c3VyZSBob3cgdG8gc29sdmUgdGhpcyBwZXJmZWN0bHksIHNpbmNlIGFueSBt ZXRob2QgY291bGQgYmUKb3ZlcnJpZGRlbiBhbnl3YXkuIEJ1dCB0aGlzIG9w ZXJhdGlvbiBpcyBvbmx5IHVzZWQgdG8gZmluZCB0aGUgbG9jCm9mIGRlZmlu aW5nIGZpbGUgb2YgdG9feWFtbCwgYW5kIGxvYyBpcyBvbmx5IHVzZWQgdG8g ZW1pdCB3YXJuaW5ncywKaXQgbWlnaHQgYmUgT0sgdG8gc2tpcCBpdCBpZiB0 aGVyZSdzIHNvbWUgZXJyb3IuIEEgc2ltcGxlIGJlZ2luOwpyZXNjdWUgYmxv Y2sgcmVzY3VpbmcgU3RhbmRhcmRFcnJvciBtaWdodCBub3QgYmUgcmVhbGx5 IGJhZC4KCk5leHQgY29tbWl0IHdvdWxkIGFwcGx5IHRoaXMgcmVzY3VlIGJs b2NrLgotLS0KIGV4dC9wc3ljaC9saWIvcHN5Y2gvdmlzaXRvcnMveWFtbF90 cmVlLnJiIHwgICAgNCArKy0tCiB0ZXN0L3BzeWNoL3Zpc2l0b3JzL3Rlc3Rf eWFtbF90cmVlLnJiICAgICB8ICAgIDYgKysrKysrCiAyIGZpbGVzIGNoYW5n ZWQsIDggaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9leHQvcHN5Y2gvbGliL3BzeWNoL3Zpc2l0b3JzL3lhbWxfdHJlZS5y YiBiL2V4dC9wc3ljaC9saWIvcHN5Y2gvdmlzaXRvcnMveWFtbF90cmVlLnJi CmluZGV4IGU3ZDE4MmYuLmY3ZjExZjggMTAwNjQ0Ci0tLSBhL2V4dC9wc3lj aC9saWIvcHN5Y2gvdmlzaXRvcnMveWFtbF90cmVlLnJiCisrKyBiL2V4dC9w c3ljaC9saWIvcHN5Y2gvdmlzaXRvcnMveWFtbF90cmVlLnJiCkBAIC03Niw3 ICs3Niw3IEBAIG1vZHVsZSBQc3ljaAogICAgICAgICBlbmQKIAogICAgICAg ICBpZiB0YXJnZXQucmVzcG9uZF90bz8oOnRvX3lhbWwpCi0gICAgICAgICAg bG9jID0gdGFyZ2V0Lm1ldGhvZCg6dG9feWFtbCkuc291cmNlX2xvY2F0aW9u LmZpcnN0CisgICAgICAgICAgbG9jID0gdGFyZ2V0LnB1YmxpY19tZXRob2Qo OnRvX3lhbWwpLnNvdXJjZV9sb2NhdGlvbi5maXJzdAogICAgICAgICAgIGlm IGxvYyAhfiAvKHN5Y2tcL3J1Ynl0eXBlcy5yYnxwc3ljaFwvY29yZV9leHQu cmIpLwogICAgICAgICAgICAgdW5sZXNzIHRhcmdldC5yZXNwb25kX3RvPyg6 ZW5jb2RlX3dpdGgpCiAgICAgICAgICAgICAgIGlmICRWRVJCT1NFCkBAIC0y OTcsNyArMjk3LDcgQEAgbW9kdWxlIFBzeWNoCiAKICAgICAgICMgRklYTUU6 IHJlbW92ZSB0aGlzIG1ldGhvZCBvbmNlICJ0b195YW1sX3Byb3BlcnRpZXMi IGlzIHJlbW92ZWQKICAgICAgIGRlZiBmaW5kX2l2YXJzIHRhcmdldAotICAg ICAgICBsb2MgPSB0YXJnZXQubWV0aG9kKDp0b195YW1sX3Byb3BlcnRpZXMp LnNvdXJjZV9sb2NhdGlvbi5maXJzdAorICAgICAgICBsb2MgPSB0YXJnZXQu cHVibGljX21ldGhvZCg6dG9feWFtbF9wcm9wZXJ0aWVzKS5zb3VyY2VfbG9j YXRpb24uZmlyc3QKICAgICAgICAgdW5sZXNzIGxvYy5zdGFydF93aXRoPyhQ c3ljaDo6REVQUkVDQVRFRCkgfHwgbG9jLmVuZF93aXRoPygncnVieXR5cGVz LnJiJykKICAgICAgICAgICBpZiAkVkVSQk9TRQogICAgICAgICAgICAgd2Fy biAiI3tsb2N9OiB0b195YW1sX3Byb3BlcnRpZXMgaXMgZGVwcmVjYXRlZCwg cGxlYXNlIGltcGxlbWVudCBcImVuY29kZV93aXRoKGNvZGVyKVwiIgpkaWZm IC0tZ2l0IGEvdGVzdC9wc3ljaC92aXNpdG9ycy90ZXN0X3lhbWxfdHJlZS5y YiBiL3Rlc3QvcHN5Y2gvdmlzaXRvcnMvdGVzdF95YW1sX3RyZWUucmIKaW5k ZXggZWQ4OWU3OC4uMWNmMGQ2MyAxMDA2NDQKLS0tIGEvdGVzdC9wc3ljaC92 aXNpdG9ycy90ZXN0X3lhbWxfdHJlZS5yYgorKysgYi90ZXN0L3BzeWNoL3Zp c2l0b3JzL3Rlc3RfeWFtbF90cmVlLnJiCkBAIC0zOCw2ICszOCwxMiBAQCBt b2R1bGUgUHN5Y2gKICAgICAgICAgYXNzZXJ0X2VxdWFsIHMuZm9vLCBvYmou Zm9vCiAgICAgICBlbmQKIAorICAgICAgZGVmIHRlc3Rfb3ZlcnJpZGVfbWV0 aG9kCisgICAgICAgIHMgPSBTdHJ1Y3QubmV3KDptZXRob2QpLm5ldygnb3Zl cnJpZGUnKQorICAgICAgICBvYmogPSAgUHN5Y2gubG9hZChQc3ljaC5kdW1w KHMpKQorICAgICAgICBhc3NlcnRfZXF1YWwgcy5tZXRob2QsIG9iai5tZXRo b2QKKyAgICAgIGVuZAorCiAgICAgICBkZWYgdGVzdF9leGNlcHRpb24KICAg ICAgICAgZXggPSBFeGNlcHRpb24ubmV3ICdmb28nCiAgICAgICAgIGxvYWRl ZCA9IFBzeWNoLmxvYWQoUHN5Y2guZHVtcChleCkpCi0tIAoxLjcuNC4xCgo= --mimepart_4d5a97d64c798_1dc2b33b2fa302ee Content-Type: application/octet-stream; name=0002-psych-visitors-yaml_tree.rb-skip-warning-when-excpt-.patch Content-Transfer-Encoding: Base64 Content-Disposition: attachment; filename=0002-psych-visitors-yaml_tree.rb-skip-warning-when-excpt-.patch RnJvbSBjN2E2Y2Y5NzVkODg4MjhjMmVkMjdkMjUzZjQxYzQ4MGY5YjY2YWQ2 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBMaW4gSmVuLVNoaW4g PGdvZGZhdEBnb2RmYXQub3JnPgpEYXRlOiBUdWUsIDE1IEZlYiAyMDExIDIy OjUzOjMwICswODAwClN1YmplY3Q6IFtQQVRDSCAyLzJdIHBzeWNoL3Zpc2l0 b3JzL3lhbWxfdHJlZS5yYjogc2tpcCB3YXJuaW5nIHdoZW4gZXhjcHQgYXMg bGFzdCBjb21taXQgc2F5cwoKLS0tCiBleHQvcHN5Y2gvbGliL3BzeWNoL3Zp c2l0b3JzL3lhbWxfdHJlZS5yYiB8ICAgMzQgKysrKysrKysrKysrKysrKysr LS0tLS0tLS0tLQogMSBmaWxlcyBjaGFuZ2VkLCAyMiBpbnNlcnRpb25zKCsp LCAxMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9leHQvcHN5Y2gvbGli L3BzeWNoL3Zpc2l0b3JzL3lhbWxfdHJlZS5yYiBiL2V4dC9wc3ljaC9saWIv cHN5Y2gvdmlzaXRvcnMveWFtbF90cmVlLnJiCmluZGV4IGY3ZjExZjguLjk4 ZWYyZTQgMTAwNjQ0Ci0tLSBhL2V4dC9wc3ljaC9saWIvcHN5Y2gvdmlzaXRv cnMveWFtbF90cmVlLnJiCisrKyBiL2V4dC9wc3ljaC9saWIvcHN5Y2gvdmlz aXRvcnMveWFtbF90cmVlLnJiCkBAIC03NiwxNSArNzYsMjAgQEAgbW9kdWxl IFBzeWNoCiAgICAgICAgIGVuZAogCiAgICAgICAgIGlmIHRhcmdldC5yZXNw b25kX3RvPyg6dG9feWFtbCkKLSAgICAgICAgICBsb2MgPSB0YXJnZXQucHVi bGljX21ldGhvZCg6dG9feWFtbCkuc291cmNlX2xvY2F0aW9uLmZpcnN0Ci0g ICAgICAgICAgaWYgbG9jICF+IC8oc3lja1wvcnVieXR5cGVzLnJifHBzeWNo XC9jb3JlX2V4dC5yYikvCi0gICAgICAgICAgICB1bmxlc3MgdGFyZ2V0LnJl c3BvbmRfdG8/KDplbmNvZGVfd2l0aCkKLSAgICAgICAgICAgICAgaWYgJFZF UkJPU0UKLSAgICAgICAgICAgICAgICB3YXJuICJpbXBsZW1lbnRpbmcgdG9f eWFtbCBpcyBkZXByZWNhdGVkLCBwbGVhc2UgaW1wbGVtZW50IFwiZW5jb2Rl X3dpdGhcIiIKKyAgICAgICAgICBiZWdpbgorICAgICAgICAgICAgbG9jID0g dGFyZ2V0LnB1YmxpY19tZXRob2QoOnRvX3lhbWwpLnNvdXJjZV9sb2NhdGlv bi5maXJzdAorICAgICAgICAgICAgaWYgbG9jICF+IC8oc3lja1wvcnVieXR5 cGVzLnJifHBzeWNoXC9jb3JlX2V4dC5yYikvCisgICAgICAgICAgICAgIHVu bGVzcyB0YXJnZXQucmVzcG9uZF90bz8oOmVuY29kZV93aXRoKQorICAgICAg ICAgICAgICAgIGlmICRWRVJCT1NFCisgICAgICAgICAgICAgICAgICB3YXJu ICJpbXBsZW1lbnRpbmcgdG9feWFtbCBpcyBkZXByZWNhdGVkLCBwbGVhc2Ug aW1wbGVtZW50IFwiZW5jb2RlX3dpdGhcIiIKKyAgICAgICAgICAgICAgICBl bmQKKworICAgICAgICAgICAgICAgIHRhcmdldC50b195YW1sKDpub2R1bXAg PT4gdHJ1ZSkKICAgICAgICAgICAgICAgZW5kCi0KLSAgICAgICAgICAgICAg dGFyZ2V0LnRvX3lhbWwoOm5vZHVtcCA9PiB0cnVlKQogICAgICAgICAgICAg ZW5kCisgICAgICAgICAgcmVzY3VlCisgICAgICAgICAgICAjIHB1YmxpY19t ZXRob2Qgb3Igc291cmNlX2xvY2F0aW9uIG1pZ2h0IGJlIG92ZXJyaWRkZW4s CisgICAgICAgICAgICAjIGFuZCBpdCdzIE9LIHRvIHNraXAgaXQgc2luY2Ug aXQncyBvbmx5IHRvIGVtaXQgYSB3YXJuaW5nLgogICAgICAgICAgIGVuZAog ICAgICAgICBlbmQKIApAQCAtMjk3LDEyICszMDIsMTcgQEAgbW9kdWxlIFBz eWNoCiAKICAgICAgICMgRklYTUU6IHJlbW92ZSB0aGlzIG1ldGhvZCBvbmNl ICJ0b195YW1sX3Byb3BlcnRpZXMiIGlzIHJlbW92ZWQKICAgICAgIGRlZiBm aW5kX2l2YXJzIHRhcmdldAotICAgICAgICBsb2MgPSB0YXJnZXQucHVibGlj X21ldGhvZCg6dG9feWFtbF9wcm9wZXJ0aWVzKS5zb3VyY2VfbG9jYXRpb24u Zmlyc3QKLSAgICAgICAgdW5sZXNzIGxvYy5zdGFydF93aXRoPyhQc3ljaDo6 REVQUkVDQVRFRCkgfHwgbG9jLmVuZF93aXRoPygncnVieXR5cGVzLnJiJykK LSAgICAgICAgICBpZiAkVkVSQk9TRQotICAgICAgICAgICAgd2FybiAiI3ts b2N9OiB0b195YW1sX3Byb3BlcnRpZXMgaXMgZGVwcmVjYXRlZCwgcGxlYXNl IGltcGxlbWVudCBcImVuY29kZV93aXRoKGNvZGVyKVwiIgorICAgICAgICBi ZWdpbgorICAgICAgICAgIGxvYyA9IHRhcmdldC5wdWJsaWNfbWV0aG9kKDp0 b195YW1sX3Byb3BlcnRpZXMpLnNvdXJjZV9sb2NhdGlvbi5maXJzdAorICAg ICAgICAgIHVubGVzcyBsb2Muc3RhcnRfd2l0aD8oUHN5Y2g6OkRFUFJFQ0FU RUQpIHx8IGxvYy5lbmRfd2l0aD8oJ3J1Ynl0eXBlcy5yYicpCisgICAgICAg ICAgICBpZiAkVkVSQk9TRQorICAgICAgICAgICAgICB3YXJuICIje2xvY306 IHRvX3lhbWxfcHJvcGVydGllcyBpcyBkZXByZWNhdGVkLCBwbGVhc2UgaW1w bGVtZW50IFwiZW5jb2RlX3dpdGgoY29kZXIpXCIiCisgICAgICAgICAgICBl bmQKKyAgICAgICAgICAgIHJldHVybiB0YXJnZXQudG9feWFtbF9wcm9wZXJ0 aWVzCiAgICAgICAgICAgZW5kCi0gICAgICAgICAgcmV0dXJuIHRhcmdldC50 b195YW1sX3Byb3BlcnRpZXMKKyAgICAgICAgcmVzY3VlCisgICAgICAgICAg IyBwdWJsaWNfbWV0aG9kIG9yIHNvdXJjZV9sb2NhdGlvbiBtaWdodCBiZSBv dmVycmlkZGVuLAorICAgICAgICAgICMgYW5kIGl0J3MgT0sgdG8gc2tpcCBp dCBzaW5jZSBpdCdzIG9ubHkgdG8gZW1pdCBhIHdhcm5pbmcuCiAgICAgICAg IGVuZAogCiAgICAgICAgIHRhcmdldC5pbnN0YW5jZV92YXJpYWJsZXMKLS0g CjEuNy40LjEKCg== --mimepart_4d5a97d64c798_1dc2b33b2fa302ee--