Stack level too deep

Hi,

I have a SystemStackError. Here is the stack (sorry if it’s a little
long) :

app/models/line_item.rb:14:in `product’

app/models/line_item.rb:14:in `product’

app/controllers/store_controller.rb:188:in `redirect_to_paypal’

/opt/local/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/
active_record/associations/association_proxy

.rb:123:in `each’

/opt/local/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/
active_record/associations/association_proxy

.rb:123:in `send’

/opt/local/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/
active_record/associations/association_proxy

.rb:123:in `method_missing’

/opt/local/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/
active_record/associations/has_many_association

.rb:98:in `method_missing’

app/controllers/store_controller.rb:187:in `redirect_to_paypal’

/opt/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/
action_controller/base.rb:1095:in `send’

/opt/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/
action_controller/base.rb:1095:in `perform_a

ction_without_filters’

/opt/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/
action_controller/filters.rb:632:in `call_fi

lter’

/opt/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/
action_controller/filters.rb:638:in `call_fi

lter’

/opt/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/
action_controller/filters.rb:438:in `call’

/opt/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/
action_controller/filters.rb:637:in `call_fi

lter’

/opt/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/
action_controller/filters.rb:638:in `call_fi

lter’

/opt/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/
action_controller/filters.rb:438:in `call’

/opt/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/
action_controller/filters.rb:637:in `call_fi

lter’

/opt/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/
action_controller/filters.rb:638:in `call_fi

lter’

/opt/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/
action_controller/filters.rb:438:in `call’

/opt/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/
action_controller/filters.rb:637:in `call_fi

lter’

/opt/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/
action_controller/filters.rb:638:in `call_fi

lter’

/opt/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/
action_controller/filters.rb:438:in `call’

/opt/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/
action_controller/filters.rb:637:in `call_fi

lter’

/opt/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/
action_controller/filters.rb:619:in `perform

_action_without_benchmark’

/opt/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/
action_controller/benchmarking.rb:66:in `per

form_action_without_rescue’

/opt/local/lib/ruby/1.8/benchmark.rb:293:in `measure’

/opt/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/
action_controller/benchmarking.rb:66:in `per

form_action_without_rescue’

/opt/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/
action_controller/rescue.rb:83:in `perform_a

ction’

/opt/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/
action_controller/base.rb:430:in `send’

/opt/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/
action_controller/base.rb:430:in `process_wi

thout_filters’

/opt/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/
action_controller/filters.rb:624:in `process

_without_session_management_support’

/opt/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/
action_controller/session_management.rb:114:in

`process’

/opt/local/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/
action_controller/base.rb:330:in `process’

/opt/local/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/dispatcher.rb:41:in
`dispatch’

/opt/local/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/webrick_server.rb:
113:in `handle_dispatch’

/opt/local/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/webrick_server.rb:
79:in `service’

/opt/local/lib/ruby/1.8/webrick/httpserver.rb:104:in `service’

/opt/local/lib/ruby/1.8/webrick/httpserver.rb:65:in `run’

/opt/local/lib/ruby/1.8/webrick/server.rb:173:in `start_thread’

/opt/local/lib/ruby/1.8/webrick/server.rb:162:in `start’

/opt/local/lib/ruby/1.8/webrick/server.rb:162:in `start_thread’

/opt/local/lib/ruby/1.8/webrick/server.rb:95:in `start’

/opt/local/lib/ruby/1.8/webrick/server.rb:92:in `each’

/opt/local/lib/ruby/1.8/webrick/server.rb:92:in `start’

/opt/local/lib/ruby/1.8/webrick/server.rb:23:in `start’

/opt/local/lib/ruby/1.8/webrick/server.rb:82:in `start’

/opt/local/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/webrick_server.rb:
63:in `dispatch’

/opt/local/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/commands/servers/
webrick.rb:59

/opt/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in
`gem_original_require’

/opt/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in
`require’

/opt/local/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/
active_support/dependencies.rb:495:in `req

uire’

/opt/local/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/
active_support/dependencies.rb:342:in `new

_constants_in’

/opt/local/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/
active_support/dependencies.rb:495:in `req

uire’

/opt/local/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/commands/server.rb:
39

/opt/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in
`gem_original_require’

/opt/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in
`require’

script/server:3

This is the method that is being called :

def redirect_to_paypal
create_order
more_options = Hash.new

x = 1
@order.line_items.each do |item|
  more_options["item_name_#{x}"] = item.product.title # this is

the line that is causing the error
more_options[“amount_#{x}”] = item.product.price
more_options[“quantity_#{x}”] = item.quantity
x += 1
end

@html = render_to_string( :partial => "switch_to_paypal", :object

=> @order, :locals => { :more_options => more_options } )
end

Can someone figure out what is causing this error ?

Thanks, Marc

@html = render_to_string( :partial => "switch_to_paypal", :object

=> @order, :locals => { :more_options => more_options } )
end

i think it has to do with scope issues:

when you call :more_options to pass as a parameter, you’re creating a
local variable, and passing it the local variable that already exists
(but since it is the same variable-name, you are passing it the one you
are creating, which is the one that already exists, which is … a stack
way too deep.)

i think.
if you change the variable name you’ve created in the loop to something
else, does it work?

i.e

@order.line_items.each do |item|
  more_options_hsh["item_name_#{x}"] = item.product.title # this is

the line that is causing the error
more_options_hsh[“amount_#{x}”] = item.product.price
more_options_hsh[“quantity_#{x}”] = item.quantity

and then


…=> @order, :locals => { :more_options => more_options_hsh } )

?

Hi Shai,

Thanks for your advice. Unfortunately, I get the same error after
having renamed my variable.
I’ve googled the net and haven’t yet found a solution.

anyone ?

CPerry, thank you a thousand times ! I had in a LineItem model file a
function :

def product
self.product
end

this was causing the recursion ( I don’t know why I had written this
function in the first place).

Marc

I had this same problem yesterday, and it was because I was calling a
variable twice and it was simply looping itself over and over.
Renaming the variable worked for me. It was posting to a column in my
DB, then trying to post a value to the same column, so it just
continuously looped itself.

Sorry I can’t be more help! Just check to be sure that you are not
calling a variable and then calling it again somewhere else with
different values.

–Cory

Awesome, glad you found the error.

–Cory