RoR: эффективное тестирование проекта с MySQL и SQLite - PullRequest
0 голосов
/ 05 марта 2011

Я хотел бы постоянно тестировать и тестировать мое приложение RoR, работающее как на MySQL, так и на SQLite, и я ищу методы, чтобы упростить это.В идеале мне хотелось бы кое-что:

  • одновременное автоматическое тестирование / тестирование rspec с версиями приложения mysql и sqlite, так что я сразу узнаю, что я что-то сломал
  • надежныйконструкция для написания специфичного для БД кода, так как мне нужно время от времени разбивать на `ActiveRecord :: Base.connection.select_all ()`.

Последнее кажется легким, первое кажется трудным.Я подумал о том, чтобы иметь два отдельных дерева исходных текстов, каждое из которых имеет свои собственные специфичные для БД файлы конфигурации (например, Gemfile, config / database.yml) и использовать ссылки файловой системы для совместного использования всех общих файлов, но это может напугать и запутать git.

Более чистым подходом будет переключение командной строки на рельсы, чтобы указать, какая конфигурация будет использоваться при запуске рельсов.Хотя было бы неплохо, я не думаю, что такой переключатель командной строки существует

Как другие люди справляются с этим?

Ответы [ 2 ]

0 голосов
/ 22 апреля 2011

Хорошо, с помощью всего лишь нескольких настроек, есть простой способ запустить ваше приложение и протестировать его под любой из нескольких баз данных. Я описываю технику в:

RoR: как проверить мое приложение на нескольких базах данных?

У меня это хорошо работает - кому-то еще это может пригодиться.

0 голосов
/ 05 марта 2011

На вашем месте я бы сделал две вещи:

  1. Не проверяйте database.yml в вашем репозитории.Он содержит пароли базы данных, и если вы работаете с другими разработчиками на разных машинах, это будет головной болью, пытаясь отследить, какая база данных на какой машине.Это считается плохой практикой, а не привычкой, в которую вы должны войти.
  2. Для файлов, которые должны быть проверены в источнике (Gemfile & Gemfile.lock), я бы справился с этим с помощью веток Git.Я хотел бы иметь одну основную ветку, которая использует одну базу данных.Затем другая ветвь, которая использует другую.Если вы работаете с основной веткой и настроили ее с MySQL, вы можете просто перебазировать или слиться с веткой SQlite всякий раз, когда вы вносите изменения в код.Пока вы не пишете много запросов к базе данных, у вас не должно быть проблем с конфликтами.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...