Ruby: Потребуйте файла снова, если он изменяется

Я записал драгоценный камень, который заглядывает config/ для файла конфигурации. Это хорошо работает, но если пользователь изменяет конфигурацию, они должны остановить программу и запустить ее снова, прежде чем мой драгоценный камень загрузит новую конфигурацию. Это потребовало бы, чтобы они перезапустили целое приложение для направляющих на каждом изменении, которое не идеально.

Есть ли способ "повторно потребовать" файла так, чтобы он загрузил его новый вместо того, чтобы использовать кэшированную версию.

28
задан Christopher Oezbek 9 December 2018 в 20:31
поделиться

1 ответ

Вы можете использовать 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 куда-нибудь, где он будет выполняться каждый раз, когда файл конфигурации должен быть перезагружен (т.е. внутри какого-нибудь метода или хука).

47
ответ дан 28 November 2019 в 03:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: