Rafael Schaer { beYou media } wrote:
start your server with
script/server --debugger
or
script/server -u (this is the same)
then set a breakpoint in this method like
def find_cart
debugger
session[:cart] ||= Cart.new
end
then you can look, what is exactly in your session var
the development.log output of the console changes into irb mode
where you have access to all current given / set vars.
be careful, WHERE you are. If you are in the controller and have a
before_filter,
you won't have access yet to all variables, so you'd have to look for
an already set cart in your DB
greez
Hi,
Thanks for the response. While you were posting, I searched on google
for that rails error message. I read a post where someone posted their
development.log, so I poked around in my development.log, and I found
this:
Status: 500 Internal Server Error
can't dump hash with default proc
I took that to mean that I was trying to store an object in a session
that I shouldn't be. So I started flipping through the back half of
AWDWR(3rd), and in a section titled Cookies and Sessions/Rails
Sessions(p. 473) the book says,
Unlike raw cookies, sessions can hold any objects(as long as those
objects can be
marshaled), ... marshal ->
page 678
On p. 678 it says,
If the objects to be dumped ["marshaled"] include bindings, procedure
["proc"] or method objects, ...
a TypeError will be raised.
This is my initialize() method in the Cart class(which is called by
Cart.new):
class Cart
attr_reader :items
def initialize
@items = Hash.new do |hash, key|
hash[key] = 0
end
end
So I guess assigning a Cart object to a session doesn't work because a
Cart object has an internal object which is a Hash and that has a proc
object associated with it??
I changed my code to use an array (like the book does), and I don't get
that error message anymore.
I tried your 'debug' suggestion, but this is what happened:
/depot$ ruby script/server -u
=> Booting Mongrel
=> Rails 2.3.2 application starting on http://0.0.0.0:3000
You need to install ruby-debug to run the server in debugging mode. With
gems, use 'gem install ruby-debug'
So I'll have to install that gem.