From: "rcastro (Ryan Castro)" Date: 2013-05-15T22:21:53+09:00 Subject: [ruby-core:55008] [ruby-trunk - Bug #8407] *args in method_missing not typing variables correctly Issue #8407 has been updated by rcastro (Ryan Castro). Yes, I clearly did. And now, this morning, my error stands out like a sore thumb. Sorry to waste time. ---------------------------------------- Bug #8407: *args in method_missing not typing variables correctly https://bugs.ruby-lang.org/issues/8407#change-39354 Author: rcastro (Ryan Castro) Status: Rejected Priority: Normal Assignee: Category: Target version: ruby -v: ruby 2.0.0p0 (2013-02-24) [i386-mingw32] Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN When setting a variable with *args, it will not cast my string to a string type. But when used directly, it casts it as a String without issue. I would expect it to operate like a normally array does, as demonstrated at the end of the code sample. : class Klass def method_missing(sym, *args, &block) puts *args[0].inspect # I am a string puts *args[0].class # I am a string mystring = *args[0] puts mystring.class # I am an array! again = *args[0][0] puts again.class # I am still an array! end end a = Klass.new a.doThings("AmIAString?") #And now, an array that doesn't use the "splat" {*} operator: c = [] c[0] = "a" d = c[0] puts d.class #String -- http://bugs.ruby-lang.org/