Регистрация | Войти
Lisp — программируемый язык программирования
RSS
Пытаюсь поднять rulisp у себя...
motopeh - 10.03.2013 03:43, Сообщений - 4
Собрал вроде всё самое свежее:

$ ls
cl-closure-template   esrap		  restas-colorize	      restas-planet	  wiki-parser
cl-data-forms-master  hunchentoot-master  restas-directory-publisher  restas-simple-auth
data-sift-master      restas		  restas-forum		      restas-wiki

Остальное на доле quicklisp.

Все мои патчи:
  • В restas-directory-publisher:
    diff --git a/restas-directory-publisher.asd b/restas-directory-publisher.asd
    index e56cb6d..7b51e39 100644
    --- a/restas-directory-publisher.asd
    +++ b/restas-directory-publisher.asd
    @@ -9,6 +9,6 @@
      :defsystem-depends-on (#:closure-template)
      :depends-on (#:restas #:local-time)
      :pathname "src"
    -  :serial t
    +;  :serial t
      :components ((:closure-template "autoindex")
                   (:file "directory-publisher")))
    Без этого почему-то исходники модуля тупо не грузились. ASDF от sbcl.
  • В самом rulisp:
    diff --git a/src/rulisp.lisp b/src/rulisp.lisp
    index ac911ed..8183330 100644
    --- a/src/rulisp.lisp
    +++ b/src/rulisp.lisp
    @@ -196,7 +196,7 @@
                                                     :content (restas.directory-publisher.view:autoindex-content data))
                               out)))
          (closure-template:ttable-register-template ttable "AUTOINDEX" #'rulisp-autoindex :supersede t)
    -      (closure-template:ttable-sync-package ttable '#:rulisp.directory-publisher.view))))
    +      (closure-template:ttable-extend-package ttable '#:rulisp.directory-publisher.view))))

    (restas:mount-module -static- (#:restas.directory-publisher)
      (restas.directory-publisher:*directory* (merge-pathnames "static/" *resources-dir*)))
    В связи с изменениями.

Сейчас разбираю ошибку в маршруте "/forum". Сервер просто занимается какой-то фигнёй, вместо того чтобы достать упакованный рендер при монтировании форума:


  0: (RESTAS:RENDER-OBJECT #
                           (:FORUMS
                            ((:TITLE "Common Lisp" :HREF
                              "/forum/common%20lisp"))
                            :FEED-HREF "/forum/rss/all.rss" :TITLE
                            "Все форумы"))
    1: (RESTAS:RENDER-OBJECT NIL
                             (:FORUMS
                              ((:TITLE "Common Lisp" :HREF
                                "/forum/common%20lisp"))
                              :FEED-HREF "/forum/rss/all.rss" :TITLE
                              "Все форумы"))
[#]
Первый аргумент нулевого вызова -
#<FUNCTION IDENTITY>
motopeh - 10.03.2013 04:51
[#] Ответ на комментарий от motopeh 10.03.2013 04:51
Короче, restas::route-render-method просто обходит систему монтирования.
motopeh - 10.03.2013 06:29
[#] Ответ на комментарий от motopeh 10.03.2013 06:29
Я пока не могу помочь :( Другим сильно занят.
archimag - 10.03.2013 06:51
[#] Ответ на комментарий от archimag 10.03.2013 06:51
Вот мои грязные хаки и костыли:

	Modified   src/route.lisp
diff --git a/src/route.lisp b/src/route.lisp
index b7d7e48..b4e71e3 100644
--- a/src/route.lisp
+++ b/src/route.lisp
@@ -23,9 +23,15 @@
    (additional-variables :initarg :additional-variables :initform nil)))
 
 (defun route-render-method (route)
-  (or (slot-value route 'render-method)
-      (module-render-method (route-module route))
-      #'identity))
+  (let* ((module (route-module route))
+	 (symbol (module-symbol module)))
+    (or (gethash :render-method
+	      (nth 2
+		   (gethash symbol
+			    (pkgmodule-traits-modules (symbol-package symbol)))))
+	(slot-value route 'render-method)
+	(module-render-method module)
+	#'identity)))

Но ИМХО надо систему монтирования переделывать, там какая-то лапша из списков и хэш-таблиц.
motopeh - 10.03.2013 07:43
@2009-2013 lisper.ru