Автопiдвантаження файлiв у Weblocks

назад до списку постів

Перша проблема з якою зустрiвся коли розбирався з weblocks - "кешування" коду. Маю на увазi що якщо Ви завантажили weblocks-додаток i зробили змiни в якомусь файлi пiсля цього, на додатку змiни нiяк не вiдобразяться. Щоб побачити змiни в браузерi потрiбно вiдiслати (виконати) модифiкований код. Може це влаштовує користувачiв slime, але з vim-ом менi довелось не солодко.
Для vim-а використовував nekthuth який пiсля доробки напильником влаштовував. Зараз перейшов на iнше рiшення. Просто кладу шматок коду в додаток i змiненi файли пiдвантажуються самi. Мiнуси в даного рiшення думаю проявляться як тiльки потрiбно буде працювати з сесiєю.

Ось цей код (доступний також тут http://gist.github.com/525328)

(defvar *files-modification-stamps* (make-hash-table :test #'equal))
(defun load-modified-files()
  (dolist (i (directory "src/**/*.lisp"))
    (let* ((mtime-unix (sb-posix:stat-mtime (sb-posix:stat i)))
          (cell (or (gethash i *files-modification-stamps*) (setf (gethash i *files-modification-stamps*) mtime-unix)))
          (any-file-modified nil))
      (when (< cell mtime-unix)
        (format t "Updated file ~A with last-modified time ~A~%" i mtime-unix)
        (load (compile-file i))
        (setf (gethash i *files-modification-stamps*) mtime-unix)
        (setf any-file-modified t))
      (if any-file-modified (redirect (make-action-url "debug-reset-sessions"))))))

(setf (request-hook :application :pre-action) (list #'load-modified-files))

Оновлення, 22.08.2011
Почав використовувати vim+slimv, тепер код запускаю прямо через swank тільки виникає інша проблемка (треба перезапускати сесії Weblocks), яка вирішується отут - http://olexiy.info/article/18