繁体   English   中英

什么是“重新加载!”的原因似乎并不总是在Rails控制台中工作?

[英]What are reasons “reload!” doesn't always seem to work in the Rails console?

我只是掌握了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行。 有没有办法强制/硬重置“重新加载!” 命令?

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

  1. 创建User实例
  2. 在实例上调用someMethod
  3. 你得到一个错误,然后去解决它
  4. reload!
  5. 在现有实例上调用someMethod并再次获取错误

所以你在一个本身没有重新加载的实例上调用该方法。 它的类已被重新加载,但实例已经在内存中 - 有bug和所有。

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

点是,如果你在reload! 创建一个新实例reload! 并在新实例上调用您的方法,它应该停止抱怨。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM