gpt4 book ai didi

ruby-on-rails - rails 5 : Load lib files in production

转载 作者:行者123 更新时间:2023-12-01 23:04:38 24 4
gpt4 key购买 nike

我已将我的一个应用程序从 Rails 4.2.6 升级到 Rails 5.0.0。 Upgrade Guide说,现在默认情况下在生产中禁用自动加载功能。

现在我总是在我的生产服务器上收到错误,因为我在 application.rb 中使用自动加载加载了所有 lib 文件文件。

module MyApp
class Application < Rails::Application
config.autoload_paths += %W( lib/ )
end
end

现在,我已经设置了 config.enable_dependency_loadingtrue但我想知道是否有更好的解决方案。默认情况下在生产中禁用自动加载肯定是有原因的。

最佳答案

移至 Rails 5 后我的更改列表:

  • 地点 lib目录进入 app因为应用程序中的所有代码在开发中自动加载并在生产中预先加载,最重要的是在开发中自动重新加载,因此每次进行更改时都不必重新启动服务器。
  • 删除任何 require指向您自己内部类的语句 lib因为如果它们的文件/目录命名正确,它们都会自动加载,如果你离开 require它可以破坏自动重新加载的语句。更多信息 here
  • 套装config.eager_load = true在所有环境中热切地查看开发中的代码加载问题。
  • 使用 Rails.application.eager_load!在使用线程之前避免“循环依赖”错误。
  • 如果您有任何 ruby​​/rails 扩展,那么将该代码留在旧的 lib 中目录并从初始化程序手动加载它们。这将确保在可以依赖它的进一步逻辑之前加载扩展:
    # config/initializers/extensions.rb
    Dir["#{Rails.root}/lib/ruby_ext/*.rb"].each { |file| require file }
    Dir["#{Rails.root}/lib/rails_ext/*.rb"].each { |file| require file }
  • 关于ruby-on-rails - rails 5 : Load lib files in production,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38198668/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com