pry是否会缓存每个终端标签的本地文件?

问题描述 投票:2回答:1

我正在使用一个本地库(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是否在幕后缓存了什么东西,从而导致了这种松动?

ruby-on-rails ruby-on-rails-6 pry pry-rails
1个回答
0
投票

是的,当你进行修改时,你的控制台不会被Rails自动重载。

这是为了防止当你把新对象和旧对象混合在一起时,在你的控制台中触发意外行为。然而,您可以通过调用以下方法手动重载您的控制台。reload!.

但请注意,所有对以前对象的引用可能都是过时的。例如::

User.object_id # => 70331650131980
user = User.first
# update the code...
reload!
User.object_id # => 70331615972020

如你所看到的 object_id,重载后的类是不一样的。因此 user 实例仍然会指向你的第一个版本的代码。之前 重装。在这种情况下,一定要取一个新用户。

© www.soinside.com 2019 - 2024. All rights reserved.