Ruby on rails 原因是什么;重新加载&引用;不';在Rails控制台中似乎不总是工作?

Ruby on rails 原因是什么;重新加载&引用;不';在Rails控制台中似乎不总是工作?,ruby-on-rails,console,Ruby On Rails,Console,我刚刚了解了Rails控制台的诀窍,发现它对于在类中快速测试方法很有用。我知道我可以改变我的模型,然后 > reload! 获取这些更新,但有时我会发现它似乎无法重新加载我的最新代码。Rails是否在某处缓存代码 在一个非常简单的伪示例中,第100行可能有错误代码: 100: u = User.alll 在Rails控制台中,当我运行此方法时,可能会出现类似以下错误: NoMethodError: undefined method `alll' for User:Class ... o

我刚刚了解了Rails控制台的诀窍,发现它对于在类中快速测试方法很有用。我知道我可以改变我的模型,然后

> 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
  • 你得到一个错误,然后去修复它
  • 重新加载
  • 在现有实例上调用
    someMethod
    ,然后再次得到错误
  • 因此,您在一个自身尚未重新加载的实例上调用该方法。它的类已经被重新加载,但实例已经在内存中了——有bug等等

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


    关键是,如果在
    重新加载之后创建一个新实例并在新实例上调用您的方法,它应该停止抱怨。

    是的,这正是问题所在。您创建的实例不会“重新加载”。重新加载后-通过重新实例化,每次都能很好地工作。谢谢@flambino