gpt4 book ai didi

ruby-on-rails - Rails 3.2.11 突然需要重启到 'acknowledge' Controller 有什么变化吗?

转载 作者:数据小太阳 更新时间:2023-10-29 07:00:52 26 4
gpt4 key购买 nike

标题说明了一切。

请注意,这不是模型或初始值设定项的更改。我可以删除 Controller 中的一个实例变量(例如,@user),然后重新加载一个 View ,它会工作 - 直到我重新启动服务器,在这种情况下它会提示变量为 nil。

我正常工作,然后切换到一组完全不同的 Controller 和 View 上工作,现在它无缘无故地发生了。

应用处于开发环境中。

development.rb 内容:

Dashboard::Application.configure do
config.cache_classes = false
config.whiny_nils = true
config.consider_all_requests_local = true
config.action_controller.perform_caching = false
config.action_mailer.raise_delivery_errors = false
config.active_support.deprecation = :log
config.action_dispatch.best_standards_support = :builtin
config.assets.compress = false
config.assets.debug = true
end

我如何才能知道它是如何发生的以及如何解决它?

编辑:**这可能是相关的,但我似乎无法使用部分运行“rake routes”时存在的任何路径,例如 dashboards_path**

剧情转折:添加

config.reload_classes_only_on_change = false

到 development.rb 似乎已经改善了这个问题。我仍然想知道它为什么会发生,为什么会突然发生,以及为什么它发生在一个 Controller 上而不是另一个 Controller 上。

最佳答案

Rails 使用自动加载路径配置来确定要自动加载和重新加载的文件:

module YourApp
class Application < Rails::Application
config.autoload_paths += %W( #{config.root}/lib #{config.root}/lib/**/ #{config.root}/app/traits )

...

end
end

如您所见,我添加了一个自定义目录,即 app/traits 目录,我在其中存储了一些定义共享行为的模块。

如果您开始处理的 Controller 位于 rails 未监视的子目录中,或者具有阻止 rails 附加文件系统更改事件的权限,您会遇到此问题。

config.reload_classes_only_on_change = false“解决”问题的原因是整个应用程序在每次请求时都会重新加载,而不是依赖于检测文件更改。

Controller 很可能不在监视文件列表中,这就是为什么 Rails 不会在更改时重新加载它的原因。它不在列表中的确切原因可能会有所不同,我需要有关应用程序的文件夹结构和配置的更多详细信息,然后才能在那里给出一个好的答案...

关于ruby-on-rails - Rails 3.2.11 突然需要重启到 'acknowledge' Controller 有什么变化吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14296412/

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