我编写了一个在config/
中查找配置文件的gem。这工作正常,但如果用户更改任何配置,他们必须停止程序并在我的gem加载新配置之前再次启动它。这将要求他们在每次更改时重新启动整个rails应用程序,这是不理想的。
有没有办法“重新要求”一个文件,以便新加载它而不是使用缓存版本。
答案 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}}语句放在每次重新加载配置文件时执行的位置(即在某个方法或挂钩内)。