Я записал драгоценный камень, который заглядывает config/
для файла конфигурации. Это хорошо работает, но если пользователь изменяет конфигурацию, они должны остановить программу и запустить ее снова, прежде чем мой драгоценный камень загрузит новую конфигурацию. Это потребовало бы, чтобы они перезапустили целое приложение для направляющих на каждом изменении, которое не идеально.
Есть ли способ "повторно потребовать" файла так, чтобы он загрузил его новый вместо того, чтобы использовать кэшированную версию.
Вы можете использовать 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
куда-нибудь, где он будет выполняться каждый раз, когда файл конфигурации должен быть перезагружен (т.е. внутри какого-нибудь метода или хука).