ruby-on-rails – 什么是“reload!”的原因并不总是在Rails控制台中工作?

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 什么是“reload!”的原因并不总是在Rails控制台中工作?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我刚刚收到了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%肯定的).

要点是,如果你在重新加载后创建一个新的实例!并在该新实例上调用您的方法,它应该停止抱怨.

猜你在找的Ruby相关文章