churp
December 22, 2009, 4:15pm
1
Hello Folks,
This gist user.rb · GitHub has an example user.rb,
user_spec.rb
At runtime, this snippet fails
u = User.find(123)
u.update_with_profile({…})
The error occurred while evaluating nil.select):
app/models/user.rb:6:in moderator_fields' app/models/user.rb:118:in
update_with_profile’
The spec passes all-green.
Could you tell me how this might be ?
Thanks,
Peter F.
(847) 687-7646
Email: [email protected]
IM GTalk: peter.fitzgibbons
IM AOL: [email protected]
churp
December 22, 2009, 4:25pm
2
On Tue, Dec 22, 2009 at 9:14 AM, Peter F. <
[email protected] > wrote:
app/models/user.rb:118:in `update_with_profile’
The spec passes all-green.
Could you tell me how this might be ?
The user in the spec comes from new_with_profile(), which sets instance
variables on the User class.
The user in the console comes from find(), and those ivars are not yet
set.
churp
December 22, 2009, 4:26pm
3
On Tue, Dec 22, 2009 at 9:22 AM, David C.
[email protected] wrote:
The user in the spec comes from new_with_profile(), which sets instance
variables on the User class.
The user in the console comes from find(), and those ivars are not yet set.
Also - @params in the User class (in the class methods) is not the same
@params in the User instances (in update_with_profile).
HTH,
David
churp
December 22, 2009, 4:38pm
4
On Tue, Dec 22, 2009 at 9:30 AM, Rick DeNatale
[email protected] wrote:
Also counting on class variables to retain state in Rails is a recipe
for disaster.
Did you read that in rails recipes?
:-/
churp
December 22, 2009, 4:32pm
5
On Tue, Dec 22, 2009 at 10:24 AM, David C. [email protected]
wrote:
The spec passes all-green.
HTH,
David
Also counting on class variables to retain state in Rails is a recipe
for disaster.
–
Rick DeNatale
Blog: http://talklikeaduck.denhaven2.com/
Twitter: http://twitter.com/RickDeNatale
WWR: http://www.workingwithrails.com/person/9021-rick-denatale
LinkedIn: Rick DeNatale - Developer - IBM | LinkedIn
churp
December 22, 2009, 7:53pm
6
DOH!
Thanks David,
Happy Holidays!
Peter F.
(847) 687-7646
Email: [email protected]
IM GTalk: peter.fitzgibbons
IM AOL: [email protected]
churp
December 28, 2009, 2:27pm
7
On Mon, Dec 28, 2009 at 12:18 AM, Andrew P. [email protected]
wrote:
2009/12/22 Rick DeNatale [email protected]
Please explain why - thanks.
Because, classes and class variables aren’t guaranteed to be persistent.
In development mode, classes can get reloaded, which wipes out class
(and class instance) variables.
In most deployment scenarios requests from a single user might be
handled by different processes, each with it’s own state.
State that needs to be around between requests needs to be somewhere
persistent like the DB, or the session.
–
Rick DeNatale
Blog: http://talklikeaduck.denhaven2.com/
Twitter: http://twitter.com/RickDeNatale
WWR: http://www.workingwithrails.com/person/9021-rick-denatale
LinkedIn: Rick DeNatale - Developer - IBM | LinkedIn
churp
December 28, 2009, 6:20am
8
2009/12/22 Rick DeNatale [email protected]
app/models/user.rb:118:in `update_with_profile’
Also - @params in the User class (in the class methods) is not the same
@params in the User instances (in update_with_profile).
HTH,
David
Also counting on class variables to retain state in Rails is a recipe
for disaster.
Please explain why - thanks.
Andrew