Здравствуйте! Столкнулся с проблемой, похоже на баг.
Если я создаю свеженькое хранилище, то я сколько угодно могу обращаться к несуществующим свойствам:
var globalSettings = new PersistentStorage("globalSettings", {global: true});
log(globalSettings['foo']);
log(globalSettings['bar']);
log(globalSettings['foobar']);
В консоли получаю трижды undefined.
Сохраняю какое-нибудь значение:
var globalSettings = new PersistentStorage("globalSettings", {global: true});
globalSettings['foo'] = 100;
Запускаю снова первый кусок кода. В консоли получаю 100 для свойства foo после чего обращение к несуществующему свойству bar приводит к падению демона wb_rules. В непустом хранилище у меня любое обращение к несуществующему свойству хранилища валит движок правил.
Первым делом, конечно, надо подтвердить баг, или, если это by design, то как мне определять установлено ли значение?
Во-вторых, есть ли возможность видеть ошибки на уровне движка? Тот же парсинг файлов с правилами в процессе разработки постоянно ломается из-за синтаксических ошибок в этих файлах, но я не вижу сами эти ошибки, и искать ошибку приходится методом тыка.
Ну и третье. Где хранятся сами файлы персистент-хранилищ? Или правильнее, как мне хранилище грохнуть? Я пока искал проблему насоздавал их изрядно.
Первым делом, конечно, надо подтвердить баг, или, если это by design, то как мне определять установлено ли значение?
Это баг. В готовящейся сейчас к релизу версии wb-rules v2.2 эта проблема не воспроизводится. Создан таск для бекпортирования исправления в ветку 1.7.
Во-вторых, есть ли возможность видеть ошибки на уровне движка? Тот же парсинг файлов с правилами в процессе разработки постоянно ломается из-за синтаксических ошибок в этих файлах, но я не вижу сами эти ошибки, и искать ошибку приходится методом тыка.
При редактировании через веб-интерфейс при синтаксических ошибках должно появляться сообщение об ошибке.
Также, в логах при изначальной загрузке файла скрипта появляется запись вида:
Ну и третье. Где хранятся сами файлы персистент-хранилищ? Или правильнее, как мне хранилище грохнуть? Я пока искал проблему насоздавал их изрядно.
Путь к файлу PersistentStorage задаётся через параметр -pdb. Значение по умолчанию: /var/lib/wirenboard/wbrules-persistent.db. Его можно как удалить целиком (если нужных данных в нём нет), так и отредактировать, удалив ненужные хранилища. Этот файл является хранилищем БД bolt. И его можно отредактировать, например, утилитой boltbrowser. Единственное, условие – с файлом может работать только одно приложение, перед открытием его на редактирование нужно остановить демон wb-rules (service wb-rules stop) и аналогично перед стартом wb-rules нужно закрыть файл в других приложениях.