Автозагрузка и режим Zeitwerk в Rails 6

Является ли какой-либо из этого кода устаревшим в Zeitwerk Mode в Rails 6?

 class Application < Rails::Application
    # Initialize configuration defaults for originally generated Rails version.
    config.load_defaults 5.2

    # config/application.rb
    config.i18n.load_path += Dir[Rails.root.join("config", "locales", "**", "*.{rb,yml}")]
    config.i18n.fallbacks = true

    # Settings in config/environments/* take precedence over those specified here.
    # Application configuration can go into files in config/initializers
    # -- all .rb files in that directory are automatically loaded after loading
    # the framework and any gems in your application.
    config.autoload_paths += ["#{config.root}/app/queries/"]


    # https://gist.github.com/maxim/6503591 (should remove this and fix)
    config.eager_load_paths << Rails.root.join("lib")

Я читал, что автозагрузка удаляется, и пока это не вызывало проблем, но я хотел удалить устаревший код. Если он обесценился, как мне загрузить свой код?

1 ответ

Решение

Все, что у вас есть, не является устаревшим, однако стоит упомянуть одну вещь из документации:

Массив путей автозагрузки можно расширить, изменив config.autoload_paths в config / application.rb, но в настоящее время это не рекомендуется.

Rails 5+ не рекомендует использовать расширение config.autoload_paths вручную из-за потенциальных проблем, которые это может вызвать в вашей производственной среде. Обсуждение датируется 2013 годом, и вы можете прочитать об этом здесь.

В Rails 5+ все каталоги в app/ по умолчанию загружаются автоматически. Если вы хотите следовать рекомендации Rails, вам следует удалить эту строку

config.autoload_paths += ["#{config.root}/app/queries/"]

и переместите каталог запросов в папку "#{Rails.root}/app".

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