Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Transfer Rails 7.0.0.alpha2, get "NoMethodError (undefined method `failure_app' for nil:NilClass)" #3444

Closed
HeppokoNeet opened this issue Dec 3, 2021 · 5 comments

Comments

@HeppokoNeet
Copy link

HeppokoNeet commented Dec 3, 2021

Curentlly I've transfered my environment following the below.

Previous version New version
Rails 5.12 Rails 7.0.0.alpha2
Ruby 2.4.1 Ruby 3.0.0

Then rails_admin hasn't worked anymore.
Full error messages are:

Started GET "/admin" for ::1 at 2021-12-03 18:21:32 +0900
Processing by RailsAdmin::MainController#dashboard as HTML
Completed 401 Unauthorized in 1ms (ActiveRecord: 0.0ms | Allocations: 1317)


  
NoMethodError (undefined method `failure_app' for nil:NilClass):
  
devise (8593801130f2) lib/devise/delegator.rb:13:in `failure_app'
devise (8593801130f2) lib/devise/delegator.rb:7:in `call'
warden (1.2.9) lib/warden/manager.rb:143:in `call_failure_app'
warden (1.2.9) lib/warden/manager.rb:129:in `process_unauthenticated'
warden (1.2.9) lib/warden/manager.rb:44:in `call'
rack (2.2.3) lib/rack/tempfile_reaper.rb:15:in `call'
rack (2.2.3) lib/rack/etag.rb:27:in `call'
rack (2.2.3) lib/rack/conditional_get.rb:27:in `call'
rack (2.2.3) lib/rack/head.rb:12:in `call'
actionpack (7.0.0.alpha2) lib/action_dispatch/http/permissions_policy.rb:22:in `call'
actionpack (7.0.0.alpha2) lib/action_dispatch/http/content_security_policy.rb:18:in `call'
rack (2.2.3) lib/rack/session/abstract/id.rb:266:in `context'
rack (2.2.3) lib/rack/session/abstract/id.rb:260:in `call'
actionpack (7.0.0.alpha2) lib/action_dispatch/middleware/cookies.rb:693:in `call'
activerecord (7.0.0.alpha2) lib/active_record/migration.rb:603:in `call'
actionpack (7.0.0.alpha2) lib/action_dispatch/middleware/callbacks.rb:27:in `block in call'
activesupport (7.0.0.alpha2) lib/active_support/callbacks.rb:99:in `run_callbacks'
actionpack (7.0.0.alpha2) lib/action_dispatch/middleware/callbacks.rb:26:in `call'
actionpack (7.0.0.alpha2) lib/action_dispatch/middleware/executor.rb:14:in `call'
actionpack (7.0.0.alpha2) lib/action_dispatch/middleware/actionable_exceptions.rb:17:in `call'
actionpack (7.0.0.alpha2) lib/action_dispatch/middleware/debug_exceptions.rb:28:in `call'
web-console (4.2.0) lib/web_console/middleware.rb:132:in `call_app'
web-console (4.2.0) lib/web_console/middleware.rb:28:in `block in call'
web-console (4.2.0) lib/web_console/middleware.rb:17:in `catch'
web-console (4.2.0) lib/web_console/middleware.rb:17:in `call'
actionpack (7.0.0.alpha2) lib/action_dispatch/middleware/show_exceptions.rb:26:in `call'
railties (7.0.0.alpha2) lib/rails/rack/logger.rb:36:in `call_app'
railties (7.0.0.alpha2) lib/rails/rack/logger.rb:25:in `block in call'
activesupport (7.0.0.alpha2) lib/active_support/tagged_logging.rb:99:in `block in tagged'
activesupport (7.0.0.alpha2) lib/active_support/tagged_logging.rb:37:in `tagged'
activesupport (7.0.0.alpha2) lib/active_support/tagged_logging.rb:99:in `tagged'
railties (7.0.0.alpha2) lib/rails/rack/logger.rb:25:in `call'
sprockets-rails (3.4.1) lib/sprockets/rails/quiet_assets.rb:13:in `call'
actionpack (7.0.0.alpha2) lib/action_dispatch/middleware/remote_ip.rb:93:in `call'
request_store (1.5.0) lib/request_store/middleware.rb:19:in `call'
actionpack (7.0.0.alpha2) lib/action_dispatch/middleware/request_id.rb:26:in `call'
rack (2.2.3) lib/rack/method_override.rb:24:in `call'
rack (2.2.3) lib/rack/runtime.rb:22:in `call'
activesupport (7.0.0.alpha2) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call'
actionpack (7.0.0.alpha2) lib/action_dispatch/middleware/executor.rb:14:in `call'
actionpack (7.0.0.alpha2) lib/action_dispatch/middleware/static.rb:24:in `call'
rack (2.2.3) lib/rack/sendfile.rb:110:in `call'
actionpack (7.0.0.alpha2) lib/action_dispatch/middleware/host_authorization.rb:96:in `call'
rack-mini-profiler (2.3.3) lib/mini_profiler/profiler.rb:393:in `call'
railties (7.0.0.alpha2) lib/rails/engine.rb:530:in `call'
puma (5.5.2) lib/puma/configuration.rb:249:in `call'
puma (5.5.2) lib/puma/request.rb:77:in `block in handle_request'
puma (5.5.2) lib/puma/thread_pool.rb:340:in `with_force_shutdown'
puma (5.5.2) lib/puma/request.rb:76:in `handle_request'
puma (5.5.2) lib/puma/server.rb:447:in `process_client'
puma (5.5.2) lib/puma/thread_pool.rb:147:in `block in spawn_thread'

I have no idea for fixing.
Any advice you could give would be much appreciated.

@mshibuya
Copy link
Member

mshibuya commented Dec 3, 2021

Can you paste your config/initializers/rails_admin.rb?

@HeppokoNeet
Copy link
Author

Thank you fo replying.
This is config/initializers/rails_admin.rb.

require './lib/rails_admin_custom_action/show_project'

RailsAdmin.config do |config|
  ### Popular gems integration

  ## == Devise ==
  config.authenticate_with { warden.authenticate! scope: :admin_user }
  config.current_user_method(&:current_admin_user)

  ## == Cancan ==
  config.authorize_with :cancancan

  ## == Pundit ==
  # config.authorize_with :pundit

  ## == PaperTrail ==
  config.audit_with :paper_trail, 'AdminUser', 'PaperTrail::Version' # PaperTrail >= 3.0.0

  ### More at https://github.com/sferik/rails_admin/wiki/Base-configuration

  ## == Gravatar integration ==
  ## To disable Gravatar integration in Navigation Bar set to false
  # config.show_gravatar = true

  RailsAdmin.config do |c|
    c.actions do
      dashboard { statistics false }

      # collection actions
      index # mandatory
      new
      export
      history_index
      bulk_delete

      # member actions
      show
      edit
      delete
      history_show
      show_in_app
    end
  end

  config.model 'Project' do
    label ''
    list do
      field :id
      field :is_in_review
      field :title
      field :contents
      field :skills
      field :location
      field :databases do
        visible false
      end
      field :frameworks do
        visible false
      end
      field :career_up_point do
        visible false
      end
      field :recommended_for do
        visible false
      end
      field :comment do
        visible false
      end
      field :required do
        visible false
      end
      field :preferred do
        visible false
      end
      field :memo do
        visible false
      end
      field :coordinator do
        visible false
      end
      field :skills do
        searchable :name
      end

      items_per_page 100
    end
  end

  config.model 'User' do
    label ''
    list do
      field :id
      field :created_at
      field :inflow_souce
      field :job_area
      field :full_name_age
      field :evaluations do
        searchable :name
      end
      field :name_sei do
        visible false
      end
      field :name_mei do
        visible false
      end
      field :email do
        visible false
      end
      field :tel do
        visible false
      end
      field :birth do
        visible false
      end
      field :memo do
        visible false
      end
      field :suggestion do
        visible false
      end
      field :coordinator do
        visible false
      end
      field :station do
        visible false
      end
      field :correspondence_history do
        visible false
      end
      field :sex do
        visible false
      end
      field :desired_pay do
        visible false
      end
      field :correspondence_history do
        visible false
      end
      field :updated_at do
        visible false
      end
    end
    edit do
      field :updated_at do
        read_only true
        help ''
      end
      field :inflow_souce do
        required true
      end
      field :job_area
      field :name_sei
      field :name_mei
      field :kana_sei
      field :kana_mei
      field :email
      field :password do
      end
      field :sex
      field :birth
      field :zip
      field :prefecture
      field :addr1
      field :addr2
      field :tel
      field :final_education_date
      field :final_education
      field :current_situation
      field :qualification
      field :desired_pay
      field :working_start_day
      field :available_works
      field :station
      field :demand
      field :line
      field :cv
      field :cv2
      field :cv3
      field :custom_cv
      field :custom_cv2
      field :custom_cv3
      field :memo
      field :correspondence_history
      field :suggestion
      field :coordinator do
        required true
      end
      field :evaluations do
        required true
      end
      field :skill_other
      field :skills
      field :positions
      field :user_engineer_attribute
    end
    show do
      field :inflow_souce
      field :job_area
      field :created_at
      field :id
      field :name_sei
      field :name_mei
      field :kana_sei
      field :kana_mei
      field :email
      field :sex
      field :birth
      field :zip
      field :prefecture
      field :addr1
      field :addr2
      field :tel
      field :final_education_date
      field :final_education
      field :current_situation
      field :qualification
      field :desired_pay
      field :working_start_day
      field :available_works
      field :station
      field :demand
      field :line
      field :cv
      field :cv2
      field :cv3
      field :custom_cv
      field :custom_cv2
      field :custom_cv3
      field :memo
      field :correspondence_history
      field :suggestion
      field :coordinator
      field :evaluations
      field :skill_other
      field :projects
      field :skills
      field :positions
      field :user_engineer_attribute
    end

    config.model 'AdminUser' do
      label ''
    end

    config.model 'Client' do
      label ''
    end

    config.model 'Coordinator' do
      label ''
    end

    config.model 'MailHistory' do
      label ''
    end

    config.model 'MailTemplate' do
      label ''
    end

    config.model 'PaperTrail::Version' do
      visible false
    end

    config.model 'PaperTrail::VersionAssociation' do
      visible false
    end

    config.model 'MailHistoryReceiver' do
      visible false
    end

    config.model 'Area' do
      visible false
    end

    config.model 'AvailableWork' do
      visible false
    end

    config.model 'Characteristic' do
      visible false
    end

    config.model 'ClientEvaluation' do
      visible false
    end

    config.model 'Column' do
      visible false
    end

    config.model 'Database' do
      visible false
    end

    config.model 'DevProcess' do
      visible false
    end

    config.model 'EntryProject' do
      visible false
    end

    config.model 'Framework' do
      visible false
    end

    config.model 'InflowSouce' do
      visible false
    end

    config.model 'Interview' do
      visible false
    end

    config.model 'JobArea' do
      visible false
    end

    config.model 'Location' do
      visible false
    end

    config.model 'MailDelivery' do
      visible false
    end

    config.model 'OperatingSystem' do
      visible false
    end

    config.model 'Position' do
      visible false
    end

    config.model 'Prefecture' do
      visible false
    end

    config.model 'ProjectCharacteristic' do
      visible false
    end

    config.model 'ProjectDatabase' do
      visible false
    end

    config.model 'ProjectDevProcess' do
      visible false
    end

    config.model 'ProjectFramework' do
      visible false
    end

    config.model 'ProjectOperatingSystem' do
      visible false
    end

    config.model 'ProjectPosition' do
      visible false
    end

    config.model 'ProjectSkill' do
      visible false
    end

    config.model 'ProjectTool' do
      visible false
    end

    config.model 'Reward' do
      visible false
    end

    config.model 'Role' do
      visible false
    end

    config.model 'Sex' do
      visible false
    end

    config.model 'Skill' do
      visible false
    end

    config.model 'Station' do
      visible false
    end

    config.model 'Term' do
      visible false
    end

    config.model 'Tool' do
      visible false
    end

    config.model 'UserAvailableWorkDay' do
      visible false
    end

    config.model 'UserEngineerAttribute' do
      visible false
    end

    config.model 'Evaluation' do
      visible false
    end

    config.model 'UserEvaluation' do
      visible false
    end

    config.model 'UserPosition' do
      visible false
    end

    config.model 'UserSkill' do
      visible false
    end

    config.model 'Version' do
      visible false
    end

    config.model 'VersionAssociation' do
      visible false
    end
  end
end

module RailsAdmin
  module Config
    module Fields
      module Types
        class Datetime < RailsAdmin::Config::Fields::Base
          register_instance_option :date_format do
            :default
          end
        end
        class Date < RailsAdmin::Config::Fields::Types::Datetime
          register_instance_option :date_format do
            :default
          end
        end
      end
    end
  end
end

@mshibuya
Copy link
Member

mshibuya commented Dec 4, 2021

Can you paste the content of Devise.mappings using your Rails console?

% rails c
Loading development environment (Rails 7.0.0.alpha2)
irb(main):001:0> Devise.mappings
=>
{:user=>
  #<Devise::Mapping:0x000000012bd9d240
  ...

If :admin_user isn't included in its key, your devise is not configured properly.

@HeppokoNeet
Copy link
Author

the resulet of console is here:

[16] pry(main)> Devise.mappings
=> {:user=>
  #<Devise::Mapping:0x00007fbedd024998
   @class_name="User",
   @controllers=
    {:omniauth_callbacks=>"users/omniauth_callbacks",
     :registrations=>"users/registrations",
     :sessions=>"users/sessions",
     :passwords=>"users/passwords",
     :confirmations=>"users/confirmations"},
   @failure_app=Devise::FailureApp,
   @format=nil,
   @klass=#<Devise::Getter:0x00007fbedd024380 @name="User">,
   @modules=[:database_authenticatable, :rememberable, :omniauthable, :recoverable, :registerable, :validatable, :confirmable, :trackable],
   @path="users",
   @path_names=
    {:registration=>"",
     :new=>"new",
     :edit=>"edit",
     :sign_in=>"sign_in",
     :sign_out=>"sign_out",
     :password=>"password",
     :sign_up=>"sign_up",
     :cancel=>"cancel",
     :confirmation=>"confirmation"},
   @path_prefix=nil,
   @router_name=nil,
   @routes=[:session, :omniauth_callback, :password, :registration, :confirmation],
   @scoped_path="users",
   @sign_out_via=:get,
   @singular=:user,
   @strategies=[:rememberable, :database_authenticatable],
   @used_helpers=[:session, :omniauth_callback, :password, :registration, :confirmation],
   @used_routes=[:session, :omniauth_callback, :password, :registration, :confirmation]>}

it seems not including :admin_user.
in short it's not rails_admin problem, the problem is devise ?

@mshibuya
Copy link
Member

mshibuya commented Dec 4, 2021

To be precise, it's your app's problem. Please make sure to configure devise correctly.
https://www.rubydoc.info/github/heartcombo/devise/master/ActionDispatch/Routing/Mapper%3Adevise_for

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants