фильтр, определенный в контроллере приложения, не найден в дочернем контроллере в рельсах 6

Я работаю сrails 6.0.2 и используя zeitwerk.

В моем контроллере приложения я определяю фильтр под названием set_localeкоторый я использую в ряде дочерних контроллеров. Например;

  # app/controllers/application_controller
  class ApplicationController < ActionController::Base

    def set_locale
      ...
    end
  end

Затем в другом контроллере у меня

# app/controllers/clubs_controller
class ClubsController < ApplicationController
  before_action :set_locale

end

Эта схема работает в рельсах 5 и работает в рельсах 6 в test а также productionсреды. Вdevelopment режим, код работает, пока я не внесу изменения в код в clubs_controller. Когда я перезагружаю страницу, я вижу следующее исключение:

NoMethodError - undefined method `set_locale' for #<ClubsController:0x00007fd9ed227ad0>
Did you mean?  set_club_cookie:

Если я добавлю Rails.autoloaders.log! к config/application.rb, то когда я запускаю сервер, я вижу следующие две записи

Zeitwerk@rails.main: autoload set for ApplicationController, to be loaded from /Users/Chris/Sites/some_app/app/controllers/application_controller.rb

а потом

Zeitwerk@rails.main: constant ApplicationController loaded from file /Users/Chris/Sites/some_app/app/controllers/application_controller.rb
Started GET "/clubs/index"

как и ожидалось. Но когда я вношу изменения и перезагружаю страницу, я вижу

Zeitwerk@rails.main: ApplicationController unloaded

тогда позже

Zeitwerk@rails.main: autoload set for ApplicationController, to be loaded from /Users/Chris/Sites/some_app/app/controllers/application_controller.rb

что выглядит обнадеживающим, но затем, наконец,

    Zeitwerk@rails.main: constant ClubsController loaded from file /Users/Chris/Sites/some_app/app/controllers/clubs_controller.rb
    Processing by ClubsController#carry_distances as HTML
Related errors to 'undefined method `set_locale' for

то есть никаких признаков ApplicationController перезагружается.

Если я перезапущу сервер, он снова заработает правильно. Как это исправить?

0 ответов

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