为什么Rails控制台不会加载对ruby文件的更改

Dav*_*vey 4 ruby console ruby-on-rails

我正在编写一个我在rails控制台中运行的脚本.

当我对文件进行更改时,即使我退出并重新加载rails控制台,它也无法识别这些更改.

如何让rails识别并加载对此文件的更改?

该文件位于我的应用程序的根目录中.我加载rails控制台并运行:

require 'file.rb'
Run Code Online (Sandbox Code Playgroud)

该文件将在第一次运行正常,但如果我对文件进行更改,则不会加载它们.我可以删除文件中的所有代码并再次运行该文件,它仍然像编辑前一样运行.

tad*_*man 10

如果要对app/目录中存储的文件进行更改,则可以使用该reload!命令重新加载这些文件.

如果您在此之外进行更改,则需要退出并重新启动控制台.

作为注释,.rbrequire呼叫中几乎总是省略扩展名.要记住的另一件事是,require 'file'你会看到你$LOAD_PATH所谓的东西file.rb,并将加载到第一个.您可能有两个具有相同名称的文件.尝试重命名它以查看是否有任何影响.

Rails有一个非常好的自动加载器,所以require如果你把文件放在正确的位置开始,通常没有必要使用它.例如,MyClass可以进入app/models/my_class.rb并自动加载.自动装带器也可以配置为查看不同的位置.