Haskell 是的,一个站点有多个持久后端
开发和生产之间的一种常见模式是开发人员网站将使用sqlite,因为它是零设置,但在生产中使用PostgresSQL或MySQL。但是,在Yesod生成的default Settings.hs scaffolding文件中,只指定了一个持久后端。有没有办法让开发配置使用一个持久化后端,而生产配置使用另一个?此外,这些数据库应该有不同的数据库设置YAML文件,这样就可以为sqlite配置一个简单的文件名,但生产数据库凭据永远不会进入VCS存储库。一般来说,我不喜欢这种做法,因为数据库引擎之间可能存在细微的差异,直到生产时才会显示出来。(这可以通过中间有一个临时服务器来缓解。)Haskell 是的,一个站点有多个持久后端,haskell,yesod,Haskell,Yesod,开发和生产之间的一种常见模式是开发人员网站将使用sqlite,因为它是零设置,但在生产中使用PostgresSQL或MySQL。但是,在Yesod生成的default Settings.hs scaffolding文件中,只指定了一个持久后端。有没有办法让开发配置使用一个持久化后端,而生产配置使用另一个?此外,这些数据库应该有不同的数据库设置YAML文件,这样就可以为sqlite配置一个简单的文件名,但生产数据库凭据永远不会进入VCS存储库。一般来说,我不喜欢这种做法,因为数据库引擎之间可能存在
无论如何,您当然可以通过条件编译来实现这一点,尽管搭建的站点并非设计成开箱即用的方式。只需查找所有引用特定后端的位置,并将其设置为DEVELOPMENT CPP变量的条件。特别是,您需要更改backend/Application.hs(yml文件包括)和backend/Settings.hs(导入和持久配置定义)。提交示例: