【发布时间】:2011-03-11 21:02:49
【问题描述】:
我编写了一个 gem,它在 config/ 中查找配置文件。这很好用,但是如果用户更改任何配置,他们必须在我的 gem 加载新配置之前停止程序并重新启动它。这将要求他们在每次更改时重新启动整个 Rails 应用程序,这并不理想。
有没有办法“重新要求”一个文件,以便它重新加载它而不是使用缓存的版本。
【问题讨论】:
我编写了一个 gem,它在 config/ 中查找配置文件。这很好用,但是如果用户更改任何配置,他们必须在我的 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 语句放在每次重新加载配置文件时(即在某些方法或挂钩中)都会执行的地方。
【讨论】: