From 325d912be34fc91fc6da742583e594337057461d Mon Sep 17 00:00:00 2001 From: Michael Snoyman Date: Fri, 14 Oct 2011 11:08:44 +0200 Subject: [PATCH] yesod-default uses new GzipCacheFolder --- yesod-default/Yesod/Default/Main.hs | 31 +++++++++++++++++++---------- yesod-default/yesod-default.cabal | 2 +- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/yesod-default/Yesod/Default/Main.hs b/yesod-default/Yesod/Default/Main.hs index 9cb36d8d..22d4bbcd 100644 --- a/yesod-default/Yesod/Default/Main.hs +++ b/yesod-default/Yesod/Default/Main.hs @@ -13,6 +13,11 @@ import Yesod.Logger (Logger, makeLogger, logString, logLazyText, flushLogger) import Network.Wai (Application) import Network.Wai.Handler.Warp (run) import Network.Wai.Middleware.Debug (debugHandle) +import System.Directory (doesDirectoryExist, removeDirectoryRecursive) +import Network.Wai.Middleware.Gzip (gzip', GzipFiles (GzipCacheFolder), gzipFiles, def) +import Network.Wai.Middleware.Autohead (autohead) +import Network.Wai.Middleware.Jsonp (jsonp) +import Control.Monad (when) #ifndef WINDOWS import qualified System.Posix.Signals as Signal @@ -55,19 +60,25 @@ defaultRunner :: (YesodDispatch y y, Yesod y) => (Application -> IO a) -> y -- ^ your foundation type -> IO () -defaultRunner f h = +defaultRunner f h = do + -- clear the .static-cache so we don't have stale content + exists <- doesDirectoryExist staticCache + when exists $ removeDirectoryRecursive staticCache #ifdef WINDOWS - toWaiApp h >>= f >> return () + toWaiAppPlain h >>= f . middlewares >> return () #else - do - tid <- forkIO $ toWaiApp h >>= f >> return () - flag <- newEmptyMVar - _ <- Signal.installHandler Signal.sigINT (Signal.CatchOnce $ do - putStrLn "Caught an interrupt" - killThread tid - putMVar flag ()) Nothing - takeMVar flag + tid <- forkIO $ toWaiAppPlain h >>= f . middlewares >> return () + flag <- newEmptyMVar + _ <- Signal.installHandler Signal.sigINT (Signal.CatchOnce $ do + putStrLn "Caught an interrupt" + killThread tid + putMVar flag ()) Nothing + takeMVar flag #endif + where + middlewares = gzip' gset . jsonp . autohead + gset = def { gzipFiles = GzipCacheFolder staticCache } + staticCache = ".static-cache" -- | Run your development app using the provided @'DefaultEnv'@ type -- diff --git a/yesod-default/yesod-default.cabal b/yesod-default/yesod-default.cabal index 7c43324a..9806f68b 100644 --- a/yesod-default/yesod-default.cabal +++ b/yesod-default/yesod-default.cabal @@ -22,7 +22,7 @@ library , cmdargs >= 0.8 && < 0.9 , warp >= 0.4 && < 0.5 , wai >= 0.4 && < 0.5 - , wai-extra >= 0.4 && < 0.5 + , wai-extra >= 0.4.4 && < 0.5 , bytestring >= 0.9 && < 0.10 , transformers >= 0.2 && < 0.3 , text >= 0.9 && < 1.0