开发和生产之间的一个常见模式是开发网站将使用sqlite,因为它是零设置,但随后在生产中使用PostgresSQL或MySQL.但是,在Yesod生成的默认Settings.hs脚手架文件中,只指定了一个持久后端.有没有办法让开发配置使用一个持久后端,而生产配置又使用另一个?此外,这些应具有不同的数据库设置YAML文件,以便可以为sqlite配置简单的文件名,但生产数据库凭据永远不会访问VCS存储库.
一般来说,我不喜欢这种做法,因为数据库引擎之间可能存在细微的差异,这些差异直到生产时才会显现出来。(这可以通过在中间设置临时服务器来缓解。)
不管怎样,你当然可以通过条件编译来做到这一点,尽管脚手架网站并不是设计成开箱即用的。只需查找引用特定后端的所有位置并使其以 DEVELOPMENT CPP 变量为条件即可。