Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby:如果文件被更改,则需要重新创建一个文件_Ruby_Require - Fatal编程技术网

Ruby:如果文件被更改,则需要重新创建一个文件

Ruby:如果文件被更改,则需要重新创建一个文件,ruby,require,Ruby,Require,我编写了一个gem,它在config/中查找配置文件。这很好,但如果用户更改任何配置,他们必须停止程序并在my gem加载新配置之前再次启动它。这将要求他们在每次更改时重新启动整个rails应用程序,这并不理想 是否有一种方法可以“重新要求”一个文件,以便它重新加载它,而不是使用缓存版本。您可以使用load而不是require。这将加载该文件,无论之前是否已加载该文件。请注意,使用load时,需要指定.rb扩展名,该扩展名是require的可选扩展名。因此require“path/to/myco

我编写了一个gem,它在
config/
中查找配置文件。这很好,但如果用户更改任何配置,他们必须停止程序并在my 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
语句放在每次重新加载配置文件时都会执行的位置(即,在某个方法或钩子中)