gpt4 book ai didi

ruby-on-rails - 将 `cache_classes` 设置为 `false` 修复了我的错误。接下来做什么?

转载 作者:行者123 更新时间:2023-12-04 16:59:30 26 4
gpt4 key购买 nike

我正在向我的 rails 应用程序添加一个可安装的引擎,它提供了类似论坛的功能(即添加问题、答案、评论等)。在开发中一切正常。然而,在登台/生产中,我在尝试创建答案时遇到错误,特别是 CanCan 权限错误(尽管我认为这可能是一个红鲱鱼)。但感觉 ti 可能与命名空间或名称冲突有关?

无论如何,当我设置 config.cache_classes = false 时,问题就会消失。在我的环境配置文件中。但这不是一个可接受的解决方案,因为它确实会减慢速度。

我从这里去哪里?如何确定需要重新加载哪些类?处理这个问题的传统方法是什么?

我正在使用 Rails 3.1。

最佳答案

我解决了这个问题。这是引导顺序的问题。我的 Engine::AnswersController在我的 Engine::ApplicationController 之前被加载.在我的代码中,我只是继承自 ApplicationController .这意味着,由于 Engine::AnswerController不知道Engine::ApplicationController它错误地继承自主应用程序的 ApplicationController而不是引擎的 ApplicationController .

修复是通过使引擎命名空间显式来强制答案 Controller 从引擎而不是主应用程序继承:

Engine::AnswersController < Engine::ApplicationController

我知道这个问题对我的应用程序来说相当特殊,但我如何找到解决方案可能对其他人有帮助。如果您遇到此类问题,请使用某种类型的调试器(我使用 Pry)并开始检查。具体来说,检查加载了哪些类并仔细查看继承链(即 Engine::ApplicationController.ancestors )。寻找任何看起来奇怪的东西。

此外,如果问题与引擎相关,您可能需要在引擎和主应用程序中放置调试器。调试引擎可能很困难,因为引擎中发生的错误可能不一定会出现在主应用程序中。

非常感谢 tjbladez帮助我解决这个问题。

关于ruby-on-rails - 将 `cache_classes` 设置为 `false` 修复了我的错误。接下来做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7905618/

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