使用mod_fastcgi启动Yesod而不使用环境标志

时间:2014-01-02 23:04:12

标签: haskell fastcgi yesod

要启动我的Yesod应用程序,我需要提供一个应用程序环境参数,例如:

./ myYesodApp Production

有没有办法使用Yesod启动应用程序并将环境设置为环境变量或配置设置?所以我可以简单地打电话:

./ myYesodApp

我需要能够这样做,所以我可以使用mod_fastcgi运行我的Yesod应用程序。

或者有没有办法为FastCgiWrapper提供这个参数?

我的main.hs看起来像这样:

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

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

1 个答案:

答案 0 :(得分:1)

我认为使用withArgs :: [String] -> IO a -> IO a中的System.Environment将是最简单的方法。

main = do
   env <- getEnv "YESOD_ENVIRONMENT"
   withArgs [env] (fromArgs parseExtra >>= makeApplication >>= run)