лежат в отдельных файликах просто в папке на диске. При старте я пробегаюсь по ним, загружаю с помощью loadfile и исполняю через pcall. Теперь я хочу сделать так, чтобы перезагружать скрипты можно было в процессе работы системы. Юзер скрипт через веб-интерфейс поменял, сохранил, он взял и перезапустился, не трогая другие скрипты.
Каким образом мне это лучше сделать? Учитывая то, что юзеры могут ошибаться в скриптах, и любая ошибка не должна класть систему, а должна ловиться и выводиться юзеру.
На безопасность пока забьем, предположим, что юзеру не захочется посмотреть/изменить чужие скрипты/переменные или получить доступ к системным переменным.
Карочи, можно воспользоваться какой-нибудь такой фигнёй: local function trace(msg, layer) return debug.traceback("Error: " .. tostring(msg), 1 + (layer or 1)) end local function Call(scrname) local succ, err = xpcall(require, trace, scrname) if not succ then return nil, err retrurn succ end
Обсуждают сегодня