2009-07-17 2 views
1

При разработке приложения Rails я обычно оставляю сервер dev, работающий локально (mongrel), когда я работаю над кодом. Изменения в коде влияют после быстрого обновления. EXCEPT изменения не вступили в силу для класса, который я писал в папке Lib. Является ли это какой-либо известной проблемой? Что может быть причиной этого? Очень сложно работать над проблемой на некоторое время, не имея никаких решений, только для того, чтобы узнать, что ни одно из этих решений даже не имеет возможности работать.Rails не обновляющий код

Спасибо за любую помощь.

ответ

1

Я обнаружил, что есть некоторые папки, которые сервер Rails dev (я использую WEBrick) не выполняет автоматического сканирования для изменений. Папка поставщика/плагинов - это то, о чем я знаю наверняка, но, похоже, мне кажется, что проблема с изменением содержимого в папке lib.

В принципе, в любое время, когда я что-то изменяю вне приложения, я перезапускаю сервер dev.

+0

спасибо. Есть ли какие-либо известные обходные пути, кроме перезапуска сервера каждый раз? – user94154

+0

Не то, чтобы я заметил. Мне кажется, что серверы rails dev просматривают только папку приложений для перепрограммирования обновлений на лету. Возможно, есть конфиг или что-то, что вы могли бы изменить для Mongrel, но я не знаком с Mongrel. –

0

В PHP код приложения перезагружается по каждому запросу, поэтому вам нужно что-то вроде APC, чтобы сделать его быстрым. Rails имеет другую модель, приложение загружается один раз и может обрабатывать несколько запросов.

В Rails есть специальная функция для перезагрузки измененных файлов, но она ограничена только несколькими каталогами. Более того, он не будет обрабатывать изменения в коде, который вызывается во время запуска (например, environment.rb или плагины). В этом случае вам необходимо перезагрузить сервер.

Функция перезагрузки класса включена по умолчанию в среде разработки с помощью следующей опции конфигурации

config.cache_classes = false 
Смежные вопросы