加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 20:17:35 所属栏目:百科 来源:网络整理
导读:我刚刚收到了Rails控制台的挂起,并且发现它很快在我的课程中测试方法.那我知道我可以改变我的模型了 reload! 抓住这些更新,但有时我会发现似乎没有重新加载我最新的代码. Rails是否在某处缓存代码? 在一个非常简单的伪示例中,我可能在100行上有错误的代码:
我刚刚收到了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%肯定的).

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读