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

时间:2010-07-05 11:13:32

标签: ruby require

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

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

1 个答案:

答案 0 :(得分:46)

您可以使用load代替require。这将加载文件,无论之前是否已加载。请注意,使用load时,您需要指定.rb扩展名,require扩展名是require "path/to/myconfig"的可选项。因此load "path/to/myconfig.rb"变为$verbose = true; $debug = true

请注意,这不会取消定义先前配置定义的任何内容。因此,如果配置从$verbose = false更改为$verbose,则$debug将为false,但重新加载配置后load仍然为真。

当然,您需要将{{1}}语句放在每次重新加载配置文件时执行的位置(即在某个方法或挂钩内)。