self.configuration is also more readable, ie more obviously a method call.<br><br><div class="gmail_quote">On 21 September 2011 10:59, Graham Ashton <span dir="ltr"><<a href="mailto:graham@effectif.com">graham@effectif.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div class="im">On 21 Sep 2011, at 10:50, James Darling wrote:<br>
<br>
</div><div class="im">> I spent quite a while trying to isolate an issue yesterday. I've done so now, and worked around it, but now I'm interested in what's going on.<br>
<br>
</div>  def do_a_thing<br>
    configuration = configuration + 1<br>
  end<br>
<br>
If you've got a method on self called configuration, assignment like this poses a problem for Ruby. There's no hint whether you meant to create a local variable called configuration (which is actually what the code says), or call the method.<br>

<br>
It therefore assumes you're assigning to a local variable.<br>
<div class="im"><br>
> It seems that on line 9, the second use of the configuration getter method call is being parsed as a method variable, which is nil as it isn't set.<br>
<br>
</div>The configuration variable needs to refer to the same object wherever you refer to it within this scope, and it therefore both variables have to be local to the method.<br>
<div class="im"><br>
> Anyone come across this before? Any ideas why it happens? Is it fixable, or just an unfortunate byproduct of how ruby parses?<br>
<br>
</div>Yep, it cost me an hour of debugging a couple of years ago, after which point it's never managed to bite me again.<br>
<br>
`self.configuration =` will sort it.<br>
<div><div></div><div class="h5">_______________________________________________<br>
Chat mailing list<br>
<a href="mailto:Chat@lists.lrug.org">Chat@lists.lrug.org</a><br>
<a href="http://lists.lrug.org/listinfo.cgi/chat-lrug.org" target="_blank">http://lists.lrug.org/listinfo.cgi/chat-lrug.org</a><br>
</div></div></blockquote></div><br>