2012-03-23 1 views
4

Мне нравится фреймворк, но я ненавижу запуск «cabal install» с каждой итерацией (небольшое изменение кода). Я хочу попробовать.как итерации в оснастке без кабальной установки

Есть ли альтернатива для быстрой итерации?

+0

Что вы подразумеваете под «итерацией» и «итерацией» здесь? Вы имеете в виду «обновление»? – dave4420

ответ

9

Старт с

cabal install --reinstall -fhint snap 

Тогда для вашего проекта:

cabal clean 
cabal configure -fdevelopment 
cabal build 
./dist/build/projname/projname 

Вы никогда не должны использовать cabal install для исполняемых файлов, которые вы не хотите, чтобы быть в состоянии выполнить в произвольных местах, так или иначе. Вы должны использовать cabal build для вещей, которые вы хотите использовать только локально.

Вам нужно будет запустить cabal build и снова запустить программу при изменении файла Main.hs или файла вашего проекта .cabal.

Если у вас есть дополнительные вопросы, комментарии - я парень, который внедрил эту функцию для Snap.

+0

спасибо Карл! точно, что я искал –

+1

Кроме того, если вы не создали свое приложение с режимом разработки, вы можете перезагрузить приложение вручную с помощью чего-то вроде «curl http: //127.0.0.1: 8000/admin/reload'. Это доступно, даже если вы не создали свое приложение с режимом разработки. См. Https://groups.google.com/forum/?fromgroups#!topic/snap_framework/4lbb3VvGD-U для недавнего обсуждения. – mightybyte

+0

Начиная с привязки 0.9 вам не нужно переустанавливать привязку с помощью '-fhint' – phatmann

2

Yesod предоставляет yesod devel, который автоматически перезагружает изменения кода. Я не знаю о сопоставимых возможностях в оснастке, но очень вероятно, что они могут повторно использовать большую часть кода Yesod, который делает это.

Учитывая существование Snap.Loader.Devel Я предполагаю, что они уже могут предоставить что-то вроде того, о чем вы просите, но я не могу найти документацию о том, как его использовать. Вопрос вопросов How do I run my app in development mode по-прежнему требует cabal install; из документов неясно, нужно ли вам делать это только один раз или каждый раз, когда код изменяется.

Смежные вопросы