(Hopefully) a quick question about variable scope issues. In one of my controllers, I have a class variable: class TestController < ApplicationController @@testClassVariable = 0 ... The problem is, in my "list" method I'm trying to increment this variable by one each time, printing it out, but it seems to reset to 0 every time the list method is called: def list ... @@testClassVariable += 1 logger.info @@testClassVariable #prints "1" each time ... end All the examples I've found online tell me this should work, printing out incrementally higher numbers. Do I have a problem with my scope that I'm just not understanding? Or are controller classes special beasts? Any clarification would be greatly appreciated!
on 2005-12-29 08:54
on 2005-12-29 10:16
If you're running in development mode, your classes are being reloaded (effectively 'reset') for every request... you might instead want to consider storing this information in the session hash, or even in the database itself. - james
on 2005-12-29 17:46
On 12/29/05, Ben CH <firstname.lastname@example.org> wrote: > > beasts? Any clarification would be greatly appreciated! > One possible 'hack-around' would be to say: @@testClassVariable ||= 0 instead of @@testClassVariable = 0 ..which means "Assign 0 to @@testClassVariable unless it already has a value." James's suggestion of the session or database is definitely more robust, though.
on 2005-12-29 21:04
Thank you for both your replies! Jame's comment about running in development mode is exactly right I think, and storing the variables in the session sounds like a great solution. Thanks again!