2012-10-28 11 views
6

Dato un'applicazione Yesod appena ponteggi, qual è l'insieme minimo di modifiche necessarie per ottenere un eseguibile che agisce come un programma CGI? Un programma wrapper è accettabile. Se l'eseguibile predefinito creato da 'cabal build' è un programma CGI, quali variabili di ambiente devono essere impostate affinché agiscano come CGI (come impostazione predefinita si collegherà a una porta e tenterà di servire le richieste.)Configurare Yesod app come CGI

Sarebbe anche apprezzata una risposta simile a FastCGI.

risposta

7

Aggiornare il vostro app/main.hs con il seguente:

import Prelude    (IO, (>>=)) 
import Yesod.Default.Config (fromArgs) 
import Yesod.Default.Main (defaultMain) 
import Settings    (parseExtra) 
import Application   (makeApplication) 
import Network.Wai.Handler.CGI (run) 

main :: IO() 
main = fromArgs parseExtra >>= makeApplication >>= run 

È necessario aggiungere wai-extra alle dipendenze nel file cabala. Per utilizzare invece FastCGI, sostituire Network.Wai.Handler.CGI con Network.Wai.Handler.FastCGI e aggiungere wai-handler-fastcgi all'elenco delle dipendenze.

+0

Questa interruzione "yesod devel"? –

+0

La risposta sembra essere no! :-) –

+1

Giusto per chiarire il motivo: il sito scaffoldato è costruito come una libreria che (essenzialmente) fornisce una 'Applicazione IO '. Poi ci sono due eseguibili: 'main.hs' è usato per la produzione e' devel.hs' è usato per 'yesod devel'. Quindi le modifiche a 'main.hs' non hanno alcun effetto sullo sviluppo. –