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

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs