Ошибки Coldfusion, которые внезапно исправляются после перекомпиляции компонента
У нас есть проект Coldfusion на живом сервере и тот же проект на локальном сервере разработки. Оба проекта практически идентичны, но несколько компонентов находятся в стадии разработки на сервере dev. Оба сервера имеют одинаковую версию Coldfusion (cf9).
Внезапно я получаю ошибку "переменная не определена" в компоненте живого проекта. Этот компонент точно такой же в проекте dev. Однако проект dev не выдает эту ошибку, когда выполняется точно такой же код, что и в живом проекте.
private void function updateRecordById(required struct properties) {
_updateRecord(arguments.properties, aliasFrom(this.name & "_id")&" = "&
arguments.properties.id);
}
public string function aliasFrom(required string column) {
var matchingKey = structFindValue(variables.aliases,arguments.column,"ONE");
return (arraylen(matchingKey)) ? matchingKey[1].key : arguments.column;
}
Ошибка: "Переменная aliasFrom не определена" (строка nr была второй строкой в примере кода выше). После простой перекомпиляции компонента на работающем сервере (путем добавления writeDump("test");) и перезапуска приложения, ошибка была исправлена.
Похоже, что живой сервер скомпилировал updateRecordById(), но не скомпилировал aliasFrom().
- Что могло вызвать эту ошибку?
- Как я могу предотвратить это снова?
- Почему, черт возьми, у меня нет этой ошибки на сервере dev в том же коде?
больше информации:
Этот проект использует coldspring для загрузки компонентов один раз в applicationStart. На действующем сервере включены "Шаблон кеша в запросе", "Кэш компонента" и "Сохранить файлы классов". Простой перезапуск приложения не решает проблему. Компонент должен быть перекомпилирован.
1 ответ
Возможно, что ColdFusion обслуживал кэшированную версию CFC, которая не была идентична. У вас есть возможность сохранять скомпилированные компоненты на сервере?