如果您更改文件然后以pry或irb重新加载它,它似乎会提取您添加到该类的任何新功能,但不会忘记您从该课程中删除的旧功能。PRY或IRB - 重新加载类并忘记已删除的功能
重现步骤:
- 创建一个方法的类 - 如。
say_hello
。 - 打开PRY或IRB,并
load 'my_class.rb'
- 编辑您的班级 - 删除现有的方法,并添加一个不同的名称 - 例如。
say_goodbye
- 重载类 -
load 'my_class.rb'
BOTH你的方法现在将可用。我明白了为什么会发生这种情况 - 因为ruby允许您重新打开类进行修改,重新加载文件基本上只是重新打开已经加载的类的现有版本,而不是擦除该类的内存并定义该班再次从头开始。
我的问题是,除了退出并重新启动PRY或IRB之外,您如何解决此问题?你怎么说“完全忘记我以前的课程,并从头开始重新加载这个文件”?
谢谢!
它似乎打开另一个Ruby(+一些库)。这会让你成为另一个〜80 Mb RAM。这可能是一个老版本/ Windows版本中的错误,但任何尝试此操作的人都应该意识到这一点。 – 2014-11-22 19:53:45
哪个打开另一个Ruby和一些库?撬重置或执行($ 0)?任何人都应该知道这一点,@DarekNędza:) – vgoff 2014-11-23 03:03:37
哦,对。我忘记了最重要的事情。那么,我已经检查了两个,Pry和IRB,他们都打开了另一个'ruby.exe'。好奇的人的其他信息:'reset'是'exec'pry''(+某些Pry的东西)。 IRB中的“$ 0”似乎是“irb”,在pry中,“$ 0”是“pry”。 – 2014-11-24 12:38:57