
Hello, ----------------->>>>>>>>>><<<<<<<<<-------------------- runDB: need liftIOHandler ⁋For the impatient: stick liftIOHandler at the beginning of runDB like so: runDB db = liftIOHandler $ fmap connPool getYesod >>= Settings.runConnectionPool dbNo comments Add a commentName: ⁋For everyone else: WAI 0.2 contained the request body as an Enumerator in the Request datatype, and an Application was Request -> IO Response. In WAI 0.3, an Application is Request -> Iteratee ByteString IO Response. Long story short: all code in your Handler function now lives on top of an Iteratee monad so that it can access the request body.No comments Add a commentName: ⁋This works great most of the time. The only downside is when you need to deal with exceptions. It's impossible to define a MonadPeelIO instance for Iteratee. Therefore, in Yesod 0.7, we have a new datatype called GGHandler, which is just a generalization of GHandler to allow an arbitrary inner monad.No comments Add a commentName: ⁋GHandler defaults to having an Iteratee on the inside. But when you need a MonadPeelIO (like we do in Persistent), you need to have an IO on the inside. Eventually though, you'll need to convert your GGHandler IO to a GHandler. That's what liftIOHandler does.No comments ----------------->>>>>>>>>><<<<<<<<<-------------------- Could anyone please explain this better, and what it means to someone upgrading an application? Specifically, what happens to: -- | A useful synonym; most of the DB handler functions are of this type type DB = SqlPersist Handler ? Thanks :-), Aur