Reassignment in if block that is not ran, causes variable to become nil
I came across a situation where, when reassigning a variable, inside an if statement that is evaluated to false, causes the variable to become nil.
I have included the code to reproduce the problem as a file.
Changing the line
variable = [variable]
@variable = [@variable]
seems to work as a temporary workaround, but this still seems to me as a pretty weird bug.
Updated by recursive-madman (Recursive Madman) over 4 years ago
Ruby is behaving as it should here. Your confusion is between local variables and method calls.
Before that 'if' block
mock_input resolves to the "mock_input" method of your class. The 'if' block then declares a variable with the same name, shadowing the method.