OpenStruct#method_missing handles #= wrongly
|ruby -v:||ruby 1.8.7 (2009-06-12 patchlevel 174) [universal-darwin10.0]||Backport:|
## Code to reproduce:
require "ostruct" OpenStruct.new[:foo] = true
NoMethodError to be raised, as
OpenStruct#= is not a defined method.
wrong number of arguments (2 for 1) (ArgumentError)
I wrote a test case to check that it would raise
NoMethodError when you call
OpenStruct#=, and then amended
OpenStruct#method_missing to fix the bug. Patch attached with both test case (including a check that
OpenStruct# raises a
NoMethodError too) and the fix in it.
- lib/ostruct.rb (method_missing): Handle  and = correctly. Based on a patch by Caius Durling, bug #4179
#1 Updated by Caius Durling over 4 years ago
On 20 Dec 2010, at 23:43, Caius Durling wrote:
Erm, not quite sure why reloading the redmine page triggered another notification about the ticket to be sent to the list. Apologies about that.
On 20 Dec 2010, at 23:43, Caius Durling wrote:Bug #4179: OpenStruct#method_missing handles #= wronglyhttp://redmine.ruby-lang.org/issues/show/4179Erm, not quite sure why reloading the redmine page triggered another notification about the ticket to be sent to the list. Apologies about that.C---Caius Durlingcaius@caius.name+44 (0) 7960 268 100http://caius.name/
#3 Updated by Marc-Andre Lafortune about 4 years ago
- Status changed from Open to Closed
- Target version set to 1.9.3
- % Done changed from 0 to 100
Thanks for the patch.
It was modified so that:
- s also raises an error
- s=2 states that "=" is the missing method (not "")
Applied as r31753, RubySpec updated as 9d36c78