나는 약간의 서비스를 개발하기 위해 emacs와 slime을 사용하기 시작했다.개발 중 SLIME에서 재로드하고 재시작하는 방법
변경 후 코드를 다시로드하는 방법을 찾았지만 더 편리하고 빠르게이 코드를 원합니다. 다음 점액에,
1) 시작 이맥스 점액을 시작 :
이것은 내가 지금 덜렁이 어떻게
2) (부하 "init.lisp"); 일부 초기화 코드를로드하지 마십시오. 변경
3) (load "myseervice.lisp"); 이 시점에서
5)가 seeervice가들이받은됩니다) 시작하고 내가 그것을 테스트 할 수 있습니다 :이 내가
4) (MYSERVICE 작업 오전 코드를 containts. 그런 다음 I myseervice.lisp을 변경하여 수정하십시오. 에 내가 이렇게 새로운 버전의 코드를 교체하려면
6) (MYSERVICE : 정지)
7) (부하 "myservice.lisp")
8) 4로 이동)를 시작합니다 그것은 다시 ...
이 지금까지 작동합니다. 그러나 수동으로 중지, 다시로드 및 시작하는 것은 재미 없습니다. 그리고 호출 사이에 슬라임에 많은 출력이 있으므로 이전에 입력 한 명령을 다시 사용하는 것은 쉽지 않습니다. 4) -7).
나는 단지 하나의 명령에 나를 위해이 작업을 수행해야 devhelper 패키지를 시작 솔루션을 가지고,하지만이 작동하지 않습니다
(defpackage :devhelper
(:use :common-lisp :myservice)
(:export :start :reload))
(in-package :devhelper)
(defun start()
(myservice:start))
(defun reload()
(myservice:stop)
(load "myservice.lisp") ;I think it is not possible to load it here,
;because this module is using the file that it is just loading
;But it does not have to work this way,
;I just like any good solution
(myservice:start))
그리고 내가이 지금처럼 그것을 할 수 있다고 생각 :
1) 막스 슬라임에이어서, 점액을 시작 시작 :
2) (부하 "init.lisp"); 변경하지 않는 초기화 코드를로드하십시오.
3a) (load "myseervice.lisp"); 이 시점에서 seeervice가들이받은 내가됩니다 시작)
5)이 내가)
3B에 (부하 "devhelper.lisp")
4) 작업 오전 코드 (devhelper를 containts 그것을 테스트 할 수 있습니다. 그런 다음 I myseervice.lisp을 변경하여 수정하십시오.
6) (devhelper : 에 나는 내가 할 수있는 꿈 jussst 새 버전의 코드를 교환하려면 다시로드)
을하지만이 시점에서 정지.
그리고 나는이 devhelper 아이디어에 집착하지 않고 있으며, 단지 더 부드러운 개발주기를 원합니다.
어떻게 진짜 lisper는 그것을 할 것입니까? 나는이 모든 것을 처음 접했고 전통적인 프로그래밍 배경에서 온 것이다.) IDE와 수입이있다. 이전 명령을 인용
4 단계 후, C-c C-c 또는 C-c C-k를 통해 Lisp 구현에 코드를 다시 보내려고 했습니까? 이것이 제가하는 것입니다. Lisp 이미지의 이런 종류의 핫 패치 (hotpatching)는 프로덕션 IMHO에서는 사용해서는 안되지만, 개발시에는 꽤 잘 작동합니다 (개발시 요청을 제어 할 수 있으므로 요청 처리 코드가 실행될 때 중요한 포인트 중 하나입니다. 요청을 처리하는 사이에 코드가 다시로드되는지 확인할 수 있습니다. –