2

我正在使用本地库(gem),让我们B在我的 rails 应用程序中调用它A(Rails 版本 6.0.2.2)

A的 Gemfile 中,我需要B通过:

gem 'B', path: '../B'

当我rails c使用 pry 时,我可以B正确访问它的所有内容。但是,当我对 to 进行本地更改B并重新打开rails c时,这些更改不会反映。

如果我退出我打开的终端(Mac OS)选项卡rails c并打开另一个选项卡,突然间我所做的所有更改都会B反映。

Pry 是否会在幕后缓存任何导致这种片状的东西?

4

1 回答 1

0

是的,当您进行更改时,Rails 不会自动重新加载您的控制台。

这是为了防止在您将新对象与陈旧对象混合时在控制台中触发意外行为。但是,您可以通过调用手动重新加载控制台reload!

但是请注意,对先前对象的所有引用都可能是陈旧的。例如:

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

如您所见,object_id重新加载后的类不一样了。因此,在重新加载之前user,该实例仍将指向您的代码的第一个版本。在这种情况下,请务必获取新用户。

于 2020-05-13T08:09:39.620 回答