diff --git a/yesod-default/Yesod/Default/Main.hs b/yesod-default/Yesod/Default/Main.hs index b2e158a0..e24e63f0 100644 --- a/yesod-default/Yesod/Default/Main.hs +++ b/yesod-default/Yesod/Default/Main.hs @@ -7,7 +7,7 @@ module Yesod.Default.Main ) where import Yesod.Default.Config -import Yesod.Logger (Logger, defaultDevelopmentLogger, logString, flushLogger) +import Yesod.Logger (Logger, defaultDevelopmentLogger, logString) import Network.Wai (Application) import Network.Wai.Handler.Warp (runSettings, defaultSettings, settingsPort, settingsHost) @@ -82,20 +82,15 @@ defaultRunner f app = do -- | Run your development app using a custom environment type and loader -- function --- --- > withDevelAppPort :: Dynamic --- > withDevelAppPort = toDyn $ defaultDevelApp customLoadAppConfig withMySite --- defaultDevelApp :: (Show env, Read env) => IO (AppConfig env extra) -- ^ A means to load your development @'AppConfig'@ -> (AppConfig env extra -> Logger -> IO Application) -- ^ Get your @Application@ - -> ((Int, Application) -> IO ()) -> IO () -defaultDevelApp load getApp f = do + -> IO (Int, Application) +defaultDevelApp load getApp = do conf <- load logger <- defaultDevelopmentLogger let p = appPort conf logString logger $ "Devel application launched, listening on port " ++ show p app <- getApp conf logger - f (p, app) - flushLogger logger + return (p, app) diff --git a/yesod/Devel.hs b/yesod/Devel.hs index 1e6d5651..e3dddcae 100644 --- a/yesod/Devel.hs +++ b/yesod/Devel.hs @@ -159,11 +159,9 @@ showPkgName = (\(D.PackageName n) -> n) . D.pkgName develFile :: D.PackageId -> T.Text develFile pid = [ST| {-# LANGUAGE PackageImports #-} -import "#{showPkgName pid}" Application (withDevelAppPort) -import Data.Dynamic (fromDynamic) +import "#{showPkgName pid}" Application (getApplicationDev) import Network.Wai.Handler.Warp (runSettings, defaultSettings, settingsPort, settingsHost) -import Data.Maybe (fromJust) import Control.Concurrent (forkIO) import System.Directory (doesFileExist, removeFile) import System.Exit (exitSuccess) @@ -171,13 +169,13 @@ import Control.Concurrent (threadDelay) main :: IO () main = do - putStrLn "Starting devel application" - wdap <- (return . fromJust . fromDynamic) withDevelAppPort - forkIO . wdap $ \(port, app) -> runSettings defaultSettings - { settingsPort = port - , settingsHost = "0.0.0.0" - } app - loop + putStrLn "Starting devel application" + (port, app) <- getApplicationDev + forkIO $ runSettings defaultSettings + { settingsPort = port + , settingsHost = "0.0.0.0" + } app + loop loop :: IO () loop = do diff --git a/yesod/scaffold/Application.hs.cg b/yesod/scaffold/Application.hs.cg index e66ff96f..0d419e8f 100644 --- a/yesod/scaffold/Application.hs.cg +++ b/yesod/scaffold/Application.hs.cg @@ -1,7 +1,7 @@ {-# OPTIONS_GHC -fno-warn-orphans #-} module Application ( getApplication - , withDevelAppPort + , getApplicationDev ) where import Import @@ -11,7 +11,6 @@ import Yesod.Auth import Yesod.Default.Config import Yesod.Default.Main import Yesod.Default.Handlers -import Data.Dynamic (Dynamic, toDyn) #if DEVELOPMENT import Yesod.Logger (Logger, logBS) import Network.Wai.Middleware.RequestLogger (logHandleDev) @@ -55,9 +54,9 @@ getApplication conf logger = do #endif -- for yesod devel -withDevelAppPort :: Dynamic -withDevelAppPort = - toDyn $ defaultDevelApp loader getApplication +getApplicationDev :: IO (Int, Application) +getApplicationDev = + defaultDevelApp loader getApplication where loader = loadConfig (configSettings Development) { csParseExtra = parseExtra diff --git a/yesod/scaffold/tiny/Application.hs.cg b/yesod/scaffold/tiny/Application.hs.cg index 6bc3ef07..e8e4dcc9 100644 --- a/yesod/scaffold/tiny/Application.hs.cg +++ b/yesod/scaffold/tiny/Application.hs.cg @@ -1,7 +1,7 @@ {-# OPTIONS_GHC -fno-warn-orphans #-} module Application ( getApplication - , withDevelAppPort + , getApplicationDev ) where import Import @@ -18,7 +18,6 @@ import Yesod.Logger (Logger, logBS, toProduction) import Network.Wai.Middleware.RequestLogger (logHandle) #endif import Network.Wai (Application) -import Data.Dynamic (Dynamic, toDyn) -- Import all relevant handler modules here. import Handler.Root @@ -48,9 +47,9 @@ getApplication conf logger = do #endif -- for yesod devel -withDevelAppPort :: Dynamic -withDevelAppPort = - toDyn $ defaultDevelApp loader getApplication +getApplicationDev :: IO (Int, Application) +getApplicationDev = + defaultDevelApp loader getApplication where loader = loadConfig (configSettings Development) { csParseExtra = parseExtra