Ошибка включая разработку в рельсах 4 полного двигателя

Я пишу полный движок, который будет включать в себя устройство, следующее за этим руководством. Однако это руководство основано на монтируемом двигателе, а не на полном двигателе, что, я думаю, может быть причиной следующей ошибки:

RuntimeError: Rails::Application::RoutesReloader#execute_if_updated delegated to updater.execute_if_updated, but updater is nil: #<Rails::Application::RoutesReloader:0x007f843d9518e8 

routes.rb

Rails.application.routes.draw do

  # Some other stuff

  devise_for :users, {
    class_name: 'User',
    module: :devise
  }, controllers: {
    registrations: 'users/registrations', 
    sessions: 'users/sessions', 
    passwords: 'users/passwords'
  }
end

Инициализаторы /devise.rb

Devise.setup do |config|
  config.router_name = :user
  config.secret_key = 'secret_key'
end

Библиотека /my_engine/engine.rb

module MyEngine
  class Engine < ::Rails::Engine
    require "devise"
  end
end

1 ответ

Решение

Rails не показывает правильную ошибку из-за проблемы, найденной здесь: https://github.com/rails/rails/issues/10559

Попробуйте отформатировать инструкцию devise_for следующим образом:

  devise_for :users, {
    class_name: 'User',
    module: :devise,
    controllers: {
      registrations: 'users/registrations', 
      sessions: 'users/sessions', 
      passwords: 'users/passwords'
    }
  }

Похоже, ваш файл devise.rb был сгенерирован старой версией гема. Попробуйте удалить devise.rb и запустить rails g devise:install

Другие вопросы по тегам