我正在使用一个本地库(gem),我们把它叫做 B
在我的rails应用程序内 A
(Rails 6.0.2.2版本)
在 A
的宝石文件,我需要 B
通过。
gem 'B', path: '../B'
当我做 rails c
用撬棍就能进入 B
及其所有内容的正确性。然而,当我对 B
并重开 rails c
变化没有被反映出来。
如果我退出我打开的终端(Mac OS)选项卡。rails c
并打开另一个标签,突然间,我所做的所有改变,以 B
都有反映。
pry是否在幕后缓存了什么东西,从而导致了这种松动?
是的,当你进行修改时,你的控制台不会被Rails自动重载。
这是为了防止当你把新对象和旧对象混合在一起时,在你的控制台中触发意外行为。然而,您可以通过调用以下方法手动重载您的控制台。reload!
.
但请注意,所有对以前对象的引用可能都是过时的。例如::
User.object_id # => 70331650131980
user = User.first
# update the code...
reload!
User.object_id # => 70331615972020
如你所看到的 object_id
,重载后的类是不一样的。因此 user
实例仍然会指向你的第一个版本的代码。之前 重装。在这种情况下,一定要取一个新用户。