Обычный шаблон между разработкой и производством заключается в том, что веб-сайт разработки будет использовать sqlite, потому что это нулевая настройка, но затем использовать PostgresSQL или MySQL в производстве. Однако в файле шаблонов Settings.hs по умолчанию, сгенерированном Yesod, указан только один постоянный сервер. Есть ли способ, чтобы конфигурация разработки использовала один постоянный сервер, а конфигурация производства — другой? Кроме того, у них должны быть отдельные файлы настроек базы данных YAML, чтобы для sqlite можно было настроить простое имя файла, но учетные данные рабочей базы данных никогда не попадали в репозиторий VCS.
Yesod несколько постоянных серверных частей для одного сайта
Ответы (1)
В целом мне не нравится эта практика, так как могут быть тонкие различия между механизмами баз данных, которые не проявляются до начала производства. (Это можно смягчить, установив промежуточный сервер.)
В любом случае, вы, безусловно, можете сделать это с помощью условной компиляции, хотя шаблонный сайт не предназначен для такой работы из коробки. Просто найдите все места, которые относятся к определенному бэкенду, и сделайте их зависимыми от переменной DEVELOPMENT CPP.
person
Michael Snoyman
schedule
30.10.2012
В частности, вы хотите изменить backend/Application.hs (включая файл yml) и backend/Settings.hs (импорт и определение PersistConfig). Пример фиксации: github.com/ezyang/hpd3js/commit/
- person Edward Z. Yang; 31.10.2012