Регистрация | Войти
Lisp — программируемый язык программирования
RSS
RESTAS: контекст в основном модуле
amartynov - 11.02.2013 11:19, Сообщений - 5
Как я понимаю, невозможно основному модулю (что передан в restas:start) передать его констекст?

В частности, в (defmethod restas:initialize-module-instance :before ((module (eql #.*package*)) context) приезжает NIL в качестве context.

Да и

(defun start (module &key
              ssl-certificate-file ssl-privatekey-file ssl-privatekey-password
              hostname (port (if ssl-certificate-file 443 80))
              address
              acceptor-class
              (context (make-context))
)

  (declare (ignore context))
...
надежды не внушает.

Как можно выкрутиться? Мне нужно настроить корневой модель извне.
[#]
Да, в start он сейчас отключена обработка передаваемого контекста.

Собственно, можно вернуть обработку context в start. Просто я это сейчас нигде не использую и в процессе быстрой переделки отключил.

Если настраивать модуль надо не в run-time, а просто настроить и использовать как top, то я просто объявляю новый модуль, а в нём делаю mount-module с нужными параметрами.  И запускаю это новый модуль, который просто монтирует и настраивает нужный.
archimag - 11.02.2013 11:43
[#] Ответ на комментарий от archimag 11.02.2013 11:43
Увы, эта хрень должна приехать совсем извне.

А сложно починить?
amartynov - 11.02.2013 12:35
[#] Ответ на комментарий от amartynov 11.02.2013 12:35
> А сложно починить?

Нет. Я вечером постараюсь посмотреть. 
archimag - 11.02.2013 13:10
[#] Ответ на комментарий от archimag 11.02.2013 13:10
В общем, ключом ко всему является функция add-toplevel-module (vhost.lisp). Я добавил в неё параметры: context, url, render-method и decorators. Ну и добавил эти же параметры в restas:start (context там уже был, но не обрабатывался). Теперь вызывать restas:start можно примерно так: 

(restas:start '#:restas.directory-publisher
              :port 8080
              :url "/tmp/"
              :context (restas:make-context
                        '((restas.directory-publisher:*directory* . #P"/tmp/")
                          (restas.directory-publisher:*autoindex* . t)
)
)
)
archimag - 11.02.2013 20:34
[#] Ответ на комментарий от archimag 11.02.2013 20:34
Спасибо, работает.
amartynov - 12.02.2013 12:43
@2009-2013 lisper.ru