Rails 6中的自动加载和Zeitwerk模式

时间:2019-12-27 19:27:34

标签: ruby-on-rails ruby-on-rails-6

在Rails 6的Zeitwerk模式下,这些代码中的任何一个是否已贬值?

 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 个答案:

答案 0 :(得分:6)

这里没有什么不推荐使用,但是值得一提的是documentation

可以通过修改config / application.rb中的config.autoload_paths来扩展自动加载路径的数组,但如今不鼓励这样做。

Rails 5+不鼓励使用手动扩展 config.autoload_paths ,因为它可能在您的生产环境中引起潜在的问题。讨论可以追溯到2013年,您可以阅读有关here的信息。

默认情况下,会从Rails 5+自动加载 app / 下的所有目录。如果您想遵循Rails的建议,则应删除此行

dim=0

并将您的查询目录移动到“#{Rails.root} / app” 文件夹下。