Ошибки Coldfusion, которые внезапно исправляются после перекомпиляции компонента - PullRequest
1 голос
/ 13 января 2012

У нас есть проект coldfusion на живом сервере и тот же проект на локальном сервере разработки. Оба проекта почти идентичны, но несколько компонентов находятся в стадии разработки на сервере dev. Оба сервера имеют одинаковую версию Coldfusion (cf9).

Внезапно я получаю сообщение об ошибке " undefined " в компоненте живого проекта. Этот компонент точно такой же в проекте 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 Ответ

0 голосов
/ 13 января 2012

Возможно, что ColdFusion обслуживал кэшированную версию cfc, которая не была идентична.У вас есть возможность сохранять скомпилированные компоненты на сервере?

...