Jerome
Jerome

Reputation: 16

Stack level too deep (SystemStackError) actionpack

I am developing a web application with ruby ​​on rails and I have an error.

The error appears randomly after navigating several times in the RAILS ADMIN console :

SystemStackError in RailsAdmin::MainController#dashboard

I do not know which way to go to solve the problem.

rake routes

Controller#Action
         new_user_session GET    /users/sign_in(.:format)                                                                 devise/sessions#new
             user_session POST   /users/sign_in(.:format)                                                                 devise/sessions#create
     destroy_user_session DELETE /users/sign_out(.:format)                                                                devise/sessions#destroy
        new_user_password GET    /users/password/new(.:format)                                                            devise/passwords#new
       edit_user_password GET    /users/password/edit(.:format)                                                           devise/passwords#edit
            user_password PATCH  /users/password(.:format)                                                                devise/passwords#update
                          PUT    /users/password(.:format)                                                                devise/passwords#update
                          POST   /users/password(.:format)                                                                devise/passwords#create
 cancel_user_registration GET    /users/cancel(.:format)                                                                  devise/registrations#cancel
    new_user_registration GET    /users/sign_up(.:format)                                                                 devise/registrations#new
   edit_user_registration GET    /users/edit(.:format)                                                                    devise/registrations#edit
        user_registration PATCH  /users(.:format)                                                                         devise/registrations#update
                          PUT    /users(.:format)                                                                         devise/registrations#update
                          DELETE /users(.:format)                                                                         devise/registrations#destroy
                          POST   /users(.:format)                                                                         devise/registrations#create
              rails_admin        /admin                                                                                   RailsAdmin::Engine
                     root GET    /                                                                                        home#index
                  contact GET    /contact(.:format)                                                                       home#contact
                   propos GET    /propos(.:format)                                                                        home#propos
                 settings GET    /settings(.:format)                                                                      settings#index
                  collect GET    /collect(.:format)                                                                       collect#index
            dashboardPres GET    /dashboardPres(.:format)                                                                 dashboard#index
                          POST   /settings(.:format)                                                                      settings#index
                          POST   /dashboardPres(.:format)                                                                 dashboard#index
                          POST   /collect(.:format)                                                                       collect#index
           collect_update POST   /collect_update(.:format)                                                                collect#update
       rails_service_blob GET    /rails/active_storage/blobs/:signed_id/*filename(.:format)                               active_storage/blobs#show
rails_blob_representation GET    /rails/active_storage/representations/:signed_blob_id/:variation_key/*filename(.:format) active_storage/representations#show
       rails_disk_service GET    /rails/active_storage/disk/:encoded_key/*filename(.:format)                              active_storage/disk#show
update_rails_disk_service PUT    /rails/active_storage/disk/:encoded_token(.:format)                                      active_storage/disk#update
     rails_direct_uploads POST   /rails/active_storage/direct_uploads(.:format)                                           active_storage/direct_uploads#create

Routes for RailsAdmin::Engine:
  dashboard GET         /                                      rails_admin/main#dashboard
      index GET|POST    /:model_name(.:format)                 rails_admin/main#index
        new GET|POST    /:model_name/new(.:format)             rails_admin/main#new
     export GET|POST    /:model_name/export(.:format)          rails_admin/main#export
bulk_delete POST|DELETE /:model_name/bulk_delete(.:format)     rails_admin/main#bulk_delete
bulk_action POST        /:model_name/bulk_action(.:format)     rails_admin/main#bulk_action
       show GET         /:model_name/:id(.:format)             rails_admin/main#show
       edit GET|PUT     /:model_name/:id/edit(.:format)        rails_admin/main#edit
     delete GET|DELETE  /:model_name/:id/delete(.:format)      rails_admin/main#delete
show_in_app GET         /:model_name/:id/show_in_app(.:format) rails_admin/main#show_in_app

Main Controller

class ApplicationController < ActionController::Base
  rescue_from DeviseLdapAuthenticatable::LdapException do |exception|
    render :text => exception, :status => 500
  end
  before_action :persist_last_visited_path, :authenticate_user!
  before_action :configure_devise_parameters, if: :devise_controller?


  rescue_from CanCan::AccessDenied do |exception|
      redirect_to root_url, :alert => exception.message
  end

  def after_sign_in_path_for(resource)
    if cookies[:last_visited_path].present?
      cookies[:last_visited_path]
     else
      root_path
     end
  end

  def configure_devise_parameters
      devise_parameter_sanitizer.permit(:sign_up) { |u| u.permit(:username, :email, :password, :password_confirmation) }
  end


  def persist_last_visited_path
    unless Rails.configuration.ignored_paths.include?(request.path) || request.xhr?   
      cookies[:last_visited_path] = request.path
    end
  end

end

The full trace :

actionpack (5.2.2) lib/action_dispatch/routing/mapper.rb:689:in `block (2 levels) in define_generate_prefix'
actionpack (5.2.2) lib/action_dispatch/routing/mapper.rb:689:in `block (2 levels) in define_generate_prefix'
actionpack (5.2.2) lib/action_dispatch/routing/mapper.rb:689:in `block (2 levels) in define_generate_prefix'
actionpack (5.2.2) lib/action_dispatch/routing/mapper.rb:689:in `block (2 levels) in define_generate_prefix'
actionpack (5.2.2) lib/action_dispatch/routing/mapper.rb:689:in `block (2 levels) in define_generate_prefix'
actionpack (5.2.2) lib/action_dispatch/routing/mapper.rb:689:in `block (2 levels) in define_generate_prefix'
actionpack (5.2.2) lib/action_dispatch/routing/mapper.rb:689:in `block (2 levels) in define_generate_prefix'
actionpack (5.2.2) lib/action_dispatch/routing/mapper.rb:689:in `block (2 levels) in define_generate_prefix'
actionpack (5.2.2) lib/action_dispatch/routing/mapper.rb:689:in `block (2 levels) in define_generate_prefix'
actionpack (5.2.2) lib/action_dispatch/routing/mapper.rb:689:in `block (2 levels) in define_generate_prefix'
actionpack (5.2.2) lib/action_dispatch/routing/mapper.rb:689:in `block (2 levels) in define_generate_prefix'
actionpack (5.2.2) lib/action_dispatch/routing/mapper.rb:689:in `block (2 levels) in define_generate_prefix'
actionpack (5.2.2) lib/action_dispatch/routing/mapper.rb:689:in `block (2 levels) in define_generate_prefix'
actionpack (5.2.2) lib/action_dispatch/routing/route_set.rb:813:in `url_for'
actionpack (5.2.2) lib/action_dispatch/routing/route_set.rb:273:in `call'
actionpack (5.2.2) lib/action_dispatch/routing/route_set.rb:214:in `call'
actionpack (5.2.2) lib/action_dispatch/routing/route_set.rb:331:in `block (2 levels) in define_url_helper'
rails_admin (1.4.2) app/views/rails_admin/main/dashboard.html.haml:12:in `block in __usr_local_bundle_gems_rails_admin_______app_views_rails_admin_main_dashboard_html_haml___4103999051765141740_69997247796300'
rails_admin (1.4.2) app/views/rails_admin/main/dashboard.html.haml:10:in `each'
rails_admin (1.4.2) app/views/rails_admin/main/dashboard.html.haml:10:in `__usr_local_bundle_gems_rails_admin_______app_views_rails_admin_main_dashboard_html_haml___4103999051765141740_69997247796300'
actionview (5.2.2) lib/action_view/template.rb:159:in `block in render'
activesupport (5.2.2) lib/active_support/notifications.rb:170:in `instrument'
actionview (5.2.2) lib/action_view/template.rb:354:in `instrument_render_template'
actionview (5.2.2) lib/action_view/template.rb:157:in `render'
actionview (5.2.2) lib/action_view/renderer/template_renderer.rb:54:in `block (2 levels) in render_template'
actionview (5.2.2) lib/action_view/renderer/abstract_renderer.rb:44:in `block in instrument'
activesupport (5.2.2) lib/active_support/notifications.rb:168:in `block in instrument'
activesupport (5.2.2) lib/active_support/notifications/instrumenter.rb:23:in `instrument'
activesupport (5.2.2) lib/active_support/notifications.rb:168:in `instrument'
actionview (5.2.2) lib/action_view/renderer/abstract_renderer.rb:43:in `instrument'
actionview (5.2.2) lib/action_view/renderer/template_renderer.rb:53:in `block in render_template'
actionview (5.2.2) lib/action_view/renderer/template_renderer.rb:61:in `render_with_layout'
actionview (5.2.2) lib/action_view/renderer/template_renderer.rb:52:in `render_template'
actionview (5.2.2) lib/action_view/renderer/template_renderer.rb:16:in `render'
actionview (5.2.2) lib/action_view/renderer/renderer.rb:44:in `render_template'
actionview (5.2.2) lib/action_view/renderer/renderer.rb:25:in `render'
actionview (5.2.2) lib/action_view/rendering.rb:103:in `_render_template'
actionpack (5.2.2) lib/action_controller/metal/streaming.rb:219:in `_render_template'
actionview (5.2.2) lib/action_view/rendering.rb:84:in `render_to_body'
actionpack (5.2.2) lib/action_controller/metal/rendering.rb:52:in `render_to_body'
actionpack (5.2.2) lib/action_controller/metal/renderers.rb:142:in `render_to_body'
actionpack (5.2.2) lib/abstract_controller/rendering.rb:25:in `render'
actionpack (5.2.2) lib/action_controller/metal/rendering.rb:36:in `render'
actionpack (5.2.2) lib/action_controller/metal/instrumentation.rb:46:in `block (2 levels) in render'
activesupport (5.2.2) lib/active_support/core_ext/benchmark.rb:14:in `block in ms'
/usr/local/lib/ruby/2.5.0/benchmark.rb:308:in `realtime'
activesupport (5.2.2) lib/active_support/core_ext/benchmark.rb:14:in `ms'
actionpack (5.2.2) lib/action_controller/metal/instrumentation.rb:46:in `block in render'
actionpack (5.2.2) lib/action_controller/metal/instrumentation.rb:87:in `cleanup_view_runtime'
activerecord (5.2.2) lib/active_record/railties/controller_runtime.rb:31:in `cleanup_view_runtime'
actionpack (5.2.2) lib/action_controller/metal/instrumentation.rb:45:in `render'
/usr/local/bundle/bundler/gems/remotipart-999f98133c6f/lib/remotipart/render_overrides.rb:17:in `render_with_remotipart'
rails_admin (1.4.2) lib/rails_admin/config/actions/dashboard.rb:37:in `block (2 levels) in <class:Dashboard>'
rails_admin (1.4.2) app/controllers/rails_admin/main_controller.rb:22:in `instance_eval'
rails_admin (1.4.2) app/controllers/rails_admin/main_controller.rb:22:in `dashboard'
actionpack (5.2.2) lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'
actionpack (5.2.2) lib/abstract_controller/base.rb:194:in `process_action'
actionpack (5.2.2) lib/action_controller/metal/rendering.rb:30:in `process_action'
actionpack (5.2.2) lib/abstract_controller/callbacks.rb:42:in `block in process_action'
activesupport (5.2.2) lib/active_support/callbacks.rb:132:in `run_callbacks'
actionpack (5.2.2) lib/abstract_controller/callbacks.rb:41:in `process_action'
actionpack (5.2.2) lib/action_controller/metal/rescue.rb:22:in `process_action'
actionpack (5.2.2) lib/action_controller/metal/instrumentation.rb:34:in `block in process_action'
activesupport (5.2.2) lib/active_support/notifications.rb:168:in `block in instrument'
activesupport (5.2.2) lib/active_support/notifications/instrumenter.rb:23:in `instrument'
activesupport (5.2.2) lib/active_support/notifications.rb:168:in `instrument'
actionpack (5.2.2) lib/action_controller/metal/instrumentation.rb:32:in `process_action'
actionpack (5.2.2) lib/action_controller/metal/params_wrapper.rb:256:in `process_action'
activerecord (5.2.2) lib/active_record/railties/controller_runtime.rb:24:in `process_action'
actionpack (5.2.2) lib/abstract_controller/base.rb:134:in `process'
actionview (5.2.2) lib/action_view/rendering.rb:32:in `process'
actionpack (5.2.2) lib/action_controller/metal.rb:191:in `dispatch'
actionpack (5.2.2) lib/action_controller/metal.rb:252:in `dispatch'
actionpack (5.2.2) lib/action_dispatch/routing/route_set.rb:52:in `dispatch'
actionpack (5.2.2) lib/action_dispatch/routing/route_set.rb:34:in `serve'
actionpack (5.2.2) lib/action_dispatch/journey/router.rb:52:in `block in serve'
actionpack (5.2.2) lib/action_dispatch/journey/router.rb:35:in `each'
actionpack (5.2.2) lib/action_dispatch/journey/router.rb:35:in `serve'
actionpack (5.2.2) lib/action_dispatch/routing/route_set.rb:840:in `call'
railties (5.2.2) lib/rails/engine.rb:524:in `call'
railties (5.2.2) lib/rails/railtie.rb:190:in `public_send'
railties (5.2.2) lib/rails/railtie.rb:190:in `method_missing'
actionpack (5.2.2) lib/action_dispatch/routing/mapper.rb:19:in `block in <class:Constraints>'
actionpack (5.2.2) lib/action_dispatch/routing/mapper.rb:48:in `serve'
actionpack (5.2.2) lib/action_dispatch/journey/router.rb:52:in `block in serve'
actionpack (5.2.2) lib/action_dispatch/journey/router.rb:35:in `each'
actionpack (5.2.2) lib/action_dispatch/journey/router.rb:35:in `serve'
actionpack (5.2.2) lib/action_dispatch/routing/route_set.rb:840:in `call'
rack-pjax (1.1.0) lib/rack/pjax.rb:12:in `call'
/usr/local/bundle/bundler/gems/remotipart-999f98133c6f/lib/remotipart/middleware.rb:32:in `call'
warden (1.2.8) lib/warden/manager.rb:36:in `block in call'
warden (1.2.8) lib/warden/manager.rb:34:in `catch'
warden (1.2.8) lib/warden/manager.rb:34:in `call'
rack (2.0.6) lib/rack/tempfile_reaper.rb:15:in `call'
rack (2.0.6) lib/rack/etag.rb:25:in `call'
rack (2.0.6) lib/rack/conditional_get.rb:25:in `call'
rack (2.0.6) lib/rack/head.rb:12:in `call'
actionpack (5.2.2) lib/action_dispatch/http/content_security_policy.rb:18:in `call'
rack (2.0.6) lib/rack/session/abstract/id.rb:232:in `context'
rack (2.0.6) lib/rack/session/abstract/id.rb:226:in `call'
actionpack (5.2.2) lib/action_dispatch/middleware/cookies.rb:670:in `call'
activerecord (5.2.2) lib/active_record/migration.rb:559:in `call'
actionpack (5.2.2) lib/action_dispatch/middleware/callbacks.rb:28:in `block in call'
activesupport (5.2.2) lib/active_support/callbacks.rb:98:in `run_callbacks'
actionpack (5.2.2) lib/action_dispatch/middleware/callbacks.rb:26:in `call'
actionpack (5.2.2) lib/action_dispatch/middleware/executor.rb:14:in `call'
actionpack (5.2.2) lib/action_dispatch/middleware/debug_exceptions.rb:61:in `call'
web-console (3.7.0) lib/web_console/middleware.rb:135:in `call_app'
web-console (3.7.0) lib/web_console/middleware.rb:22:in `block in call'
web-console (3.7.0) lib/web_console/middleware.rb:20:in `catch'
web-console (3.7.0) lib/web_console/middleware.rb:20:in `call'
actionpack (5.2.2) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call'
railties (5.2.2) lib/rails/rack/logger.rb:38:in `call_app'
railties (5.2.2) lib/rails/rack/logger.rb:26:in `block in call'
activesupport (5.2.2) lib/active_support/tagged_logging.rb:71:in `block in tagged'
activesupport (5.2.2) lib/active_support/tagged_logging.rb:28:in `tagged'
activesupport (5.2.2) lib/active_support/tagged_logging.rb:71:in `tagged'
railties (5.2.2) lib/rails/rack/logger.rb:26:in `call'
sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:13:in `call'
actionpack (5.2.2) lib/action_dispatch/middleware/remote_ip.rb:81:in `call'
actionpack (5.2.2) lib/action_dispatch/middleware/request_id.rb:27:in `call'
rack (2.0.6) lib/rack/method_override.rb:22:in `call'
rack (2.0.6) lib/rack/runtime.rb:22:in `call'
activesupport (5.2.2) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call'
actionpack (5.2.2) lib/action_dispatch/middleware/executor.rb:14:in `call'
actionpack (5.2.2) lib/action_dispatch/middleware/static.rb:127:in `call'
rack (2.0.6) lib/rack/sendfile.rb:111:in `call'
railties (5.2.2) lib/rails/engine.rb:524:in `call'
puma (3.12.0) lib/puma/configuration.rb:225:in `call'
puma (3.12.0) lib/puma/server.rb:658:in `handle_request'
puma (3.12.0) lib/puma/server.rb:472:in `process_client'
puma (3.12.0) lib/puma/server.rb:332:in `block in run'
puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread' 

Can someone help me to solve this problem ?

Thanks

Upvotes: 0

Views: 1230

Answers (1)

Jessica Simpson
Jessica Simpson

Reputation: 106

An option is that RailsAdmin cannot decide the prefix for your admin routes since there's an overlap in them. You can check all generated routes by running rake routes on your console.

Do you have a redirect on your MainController? Because from the stacktrace it seems like you are either in a redirect loop caused by a redirect_to or by not having a valid admin session. If you can post the code of your home#index or the whole MainController I could provide a better answer.

Upvotes: 2

Related Questions