Ruby:如果文件被更改,则再次需要文件

Arc*_*ath 28 ruby require

我写了一个寻找config/配置文件的gem .这工作正常,但如果用户更改任何配置,他们必须停止程序并在我的gem加载新配置之前再次启动它.这将要求他们在每次更改时重新启动整个rails应用程序,这并不理想.

有没有办法"重新要求"一个文件,以便它新鲜加载它而不是使用缓存版本.

sep*_*p2k 47

你可以用load而不是require.这将加载文件,无论之前是否已加载.请注意,load您需要指定.rb可选的扩展名require.因此require "path/to/myconfig"变得load "path/to/myconfig.rb".

请注意,这不会取消定义先前配置定义的任何内容.因此,如果配置是从改变$verbose = true; $debug = true$verbose = false,然后$verbose会是假的,但$debug仍然会重新加载配置后真.

当然load,每次重新加载配置文件时(即在某个方法或钩子内部),您都需要将语句放在将要执行的位置.