reload! 获取这些更新,但有时我会发现它似乎没有重新加载我的最-6ren">
gpt4 book ai didi

ruby-on-rails - "reload!"在 Rails 控制台中似乎并不总是有效的原因是什么?

转载 作者:行者123 更新时间:2023-12-03 14:45:47 27 4
gpt4 key购买 nike

我刚刚掌握了 Rails 控制台的窍门,并发现它对于在我的类(class)中快速测试方法很有用。我知道我可以更改我的模型,然后

> reload!

获取这些更新,但有时我会发现它似乎没有重新加载我的最新代码。 Rails 是否在某处缓存代码?

在一个非常简单的伪示例中,我可能在第 100 行有错误的代码:
100: u = User.alll

在 Rails 控制台中,当我运行此方法时,可能会收到类似于以下内容的错误:
NoMethodError: undefined method `alll' for User:Class ... on line 100

然后修改我的代码,修复错误
100: u = User.all

然后重新加载:
> reload!

然后,当调用这个类中具有正确代码的方法时,它仍然会说
NoMethodError: undefined method `alll' for User:Class ... on line 100

显然,错误已修复,并且违规行甚至不再位于第 100 行。有没有办法强制/硬重置“重新加载!”命令?

最佳答案

我的猜测是你正在做类似的事情:

  • 创建 User 的实例
  • 调用 someMethod在实例上
  • 你得到一个错误,你去修复它
  • reload!
  • 您调用someMethod在现有实例上并再次收到错误

  • 因此,您正在对本身尚未重新加载的实例调用该方法。它的类已重新加载,但实例已经在内存中 - 有错误和所有。

    至少这是我的猜测(不是 100% 肯定)。

    重点是,如果您在 reload! 之后创建一个新实例并在该新实例上调用您的方法,它应该停止提示。

    关于ruby-on-rails - "reload!"在 Rails 控制台中似乎并不总是有效的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11235905/

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