30

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

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

4

1 回答 1

50

您可以使用load而不是require. 这将加载文件,无论它之前是否已经加载。请注意,load您需要指定.rb可选的扩展名require。就这样require "path/to/myconfig"变成了load "path/to/myconfig.rb"

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

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

于 2010-07-05T11:51:11.050 回答