Ruby: требует файл снова, если он изменен - PullRequest
27 голосов
/ 05 июля 2010

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

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

1 Ответ

46 голосов
/ 05 июля 2010

Вы можете использовать load вместо require.Это загрузит файл независимо от того, был ли он уже загружен ранее.Обратите внимание, что для load необходимо указать расширение .rb, которое необязательно для require.Таким образом, require "path/to/myconfig" становится load "path/to/myconfig.rb".

Обратите внимание, что это не отменяет ничего, определенного в предыдущем конфиге.Поэтому, если конфигурация будет изменена с $verbose = true; $debug = true на $verbose = false, тогда $verbose будет иметь значение false, но $debug останется истинным после перезагрузки конфигурации.

Конечно, вам нужно поставить1016 * оператор где-то, где он будет выполняться каждый раз, когда файл конфигурации должен быть перезагружен (то есть внутри какого-либо метода или хука).

...