коммутационные адаптеры в рельсах и генерируемые sql - PullRequest
0 голосов
/ 13 сентября 2011

Я пишу мультитенантный гем для рельсов

Мои тесты сейчас устанавливают соединения для определенного адаптера, запускают некоторые тесты, затем повторяют для последующих адаптеров БД.

Моя проблема, однако, заключается в том, что когда я звоню:

ActiveRecord::Base.establish_connection

с другим адаптером, SQL-файл, сгенерированный из него, все еще находится в форме старого адаптера.Например, я запускаю тесты mysql, затем пытаюсь запустить тесты postgresql.Я получаю сообщение об ошибке:

Failure/Error: subject.create(database1)
ActiveRecord::StatementInvalid:
  PGError: ERROR:  syntax error at or near "."
  LINE 1: SELECT  `users`.* FROM `users` WHERE `users`.`name` = 'Some ...
                         ^
  : SELECT  `users`.* FROM `users` WHERE `users`.`name` = 'Some User 0' LIMIT 1

И здесь очевидно, что он использует синтаксис обратной косой черты mysql, который недопустим в postgresql.

Итак ... кто-нибудь знает, как установитьсоединение с другим адаптером правильно?Я пробовал:

ActiveRecord::Base.connection.reconnect!
ActiveRecord::Base.clear_all_connections!

Ни один из этих тестов не помог мне.Любая помощь с благодарностью.

1 Ответ

0 голосов
/ 14 марта 2012

Посмотрите, поможет ли это

  ActiveRecord::Base.send(:subclasses).each do |model|
     model.connection.clear_query_cache
  end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...