我写了一个在 config/
中查找配置文件的 gem。这工作正常,但如果用户更改任何配置,他们必须停止程序并在我的 gem 加载新配置之前重新启动它。这将要求他们在每次更改时重新启动整个 Rails 应用程序,这并不理想。
有没有办法“重新要求”一个文件,以便它重新加载它而不是使用缓存的版本。
最佳答案
您可以使用load
代替require
。这将加载文件,而不管它之前是否已经加载过。请注意,对于 load
,您需要指定 .rb
扩展名,它对于 require
是可选的。所以 require "path/to/myconfig"
变成了 load "path/to/myconfig.rb"
。
请注意,这不会取消定义先前配置定义的任何内容。因此,如果配置从 $verbose = true; $debug = true
到 $verbose = false
然后 $verbose
将是 false
但是 $debug
重新加载配置后仍将是 true
。
当然,您需要将 load
语句放在每次重新加载配置文件时都会执行的地方(即在某些方法或 Hook 中)。
关于Ruby:如果更改了文件,则再次需要一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3179012/