微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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%肯定的).

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐