Yesod живая перезагрузка Гамлета с GHCI вместо GHC?

Я только что услышал о Йесод и начал читать книгу. В главе о Шекспире, где-то на 3/4 ниже, говорилось...

«Режим перезагрузки недоступен для Hamlet, только для Cassius, Lucius и Julius. В Hamlet слишком много сложных функций, которые напрямую зависят от компилятора Haskell и не могут быть повторно реализованы во время выполнения».

Означает ли это, что сервер должен перекомпилироваться каждый раз, когда вы меняете HTML? Было бы полезно использовать Ghci для компиляции вживую, или эта технология уже используется на пике своего развития для Yesod?

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


person Athan Clark    schedule 29.07.2013    source источник


Ответы (1)


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

В любом случае, если это (а): я сам этого не делал, но думаю, что да, вам придется перекомпилировать и повторно развернуть.

Если это (b): Если вы используете yesod --dev devel для запуска вашего сервера, он будет прослушивать любые изменения и автоматически перекомпилировать. Если вы обновите страницу, изменения должны быть видны или, если у вас есть какие-либо ошибки, они будут отображаться в журнале.

Надеюсь, это поможет!

person Ecognium    schedule 29.07.2013
comment
Да, но мой главный вопрос возник из-за необходимости снести сервер, перекомпилировать все это, а затем снова запустить. Можно ли полностью развиваться в рамках ghci? Переписать новую функцию, убить работающую функцию, которая ведет себя как сервер, а затем заменить новый сервер (функцию)? Я думаю, что этот вопрос больше касается возможности разработки приложений в реальном времени в самом Haskell, а не конкретно в yesod. Я думаю, было бы замечательно, если бы каждая программа, написанная на Haskell, опционально находилась в режиме разработки, код компилировался на лету и не прерывал работу приложения. - person Athan Clark; 12.03.2014