I’m using r4rmusic (from “Ruby for Rails”) as the basis for a
hangman game, but I appear to have broken something. For
some reason, @session is not retaining values for me.
At the end of the login method (user_controller.rb), I’m
setting values into @session, then redirecting, as:
puts ">>>>> redirecting" # TRACE
@session['foozle'] = 'bar'
if (@session['foozle'])
puts ">>>>> login: foozle = '#{@session['foozle']}'"
else
puts ">>>>> login: foozle is undefined"
end
redirect_to :controller => 'main',
:action => 'welcome'
This prints out
redirecting
login: foozle = ‘bar’
Then, in get_user (application.rb), I try to retrieve them:
if (@session)
puts ">>>>> @session is defined in get_user"
puts ">>>>> class = #{@session.class}"
if (@session['foozle'])
puts ">>>>> get_user: foozle = '#{@session['foozle']}'"
else
puts ">>>>> get_user: foozle is undefined"
end
This prints out
@session is defined in get_user
class = CGI::Session
get_user: foozle is undefined
I haven’t a clue how to debug this. Help?
-r
http://www.cfcl.com/rdm Rich M.
http://www.cfcl.com/rdm/resume [email protected]
http://www.cfcl.com/rdm/weblog +1 650-873-7841
Technical editing and writing, programming, and web development
Hi Rich,
Rich M. wrote:
@session is not retaining values for me.
You don’t say what version of Rails you’re using, but if it’s recent,
the
problem could be that ‘@session’ is no longer a supported way of
referencing
the session hash. Use ‘:session’ instead. The ‘@’ prefix denotes an
instance variable. Moving to :session reduces confusion.
hth,
Bill
On 10/13/06, Bill W. [email protected] wrote:
@session is not retaining values for me.
You don’t say what version of Rails you’re using, but if it’s recent, the
problem could be that ‘@session’ is no longer a supported way of
referencing
the session hash. Use ‘:session’ instead. The ‘@’ prefix denotes an
instance variable. Moving to :session reduces confusion.
@session and the other instance variables are deprecated but still
supported. You’ll see warnings galore until you update your code, but no
breakage. Use the session method (:session is a symbol, not a method
call)
rather than the @session instance variable.
Best,
jeremy
Hi –
On Fri, 13 Oct 2006, Jeremy K. wrote:
@session and the other instance variables are deprecated but still
supported. You’ll see warnings galore until you update your code, but no
breakage.
And sometimes after you update your code
$ for f in find app -type f -not -path "*svn*"
;
do grep “@flash” $a; done
$ cd test/integration
$ ruby user_changes_profile_test.rb
Loaded suite user_changes_profile_test
Started
DEPRECATION WARNING: @flash is deprecated! Call flash.[] instead of
@flash.[].
etc.
This is on edge (r. 5271). I haven’t dug into where it’s coming from
yet.
David
–
David A. Black | [email protected]
Author of “Ruby for Rails” [1] | Ruby/Rails training & consultancy [3]
DABlog (DAB’s Weblog) [2] | Co-director, Ruby Central, Inc. [4]
[1] Ruby for Rails | [3] http://www.rubypowerandlight.com
[2] http://dablog.rubypal.com | [4] http://www.rubycentral.org